
Vanilla JavaScript with Chris Ferdinandi
Chris Ferdinandi joins JavaScript Jam to discuss building a vanilla JS education business, daily writing habits, and his surprisingly simple tech stack.
Episode Description
Chris Ferdinandi joins JavaScript Jam to discuss building a vanilla JS education business, daily writing habits, and his surprisingly simple tech stack.
Episode Summary
Chris Ferdinandi, known as "the vanilla JavaScript guy," joins Scott Steinlage and Anthony Campolo on JavaScript Jam to share how he built a thriving education business around teaching plain JavaScript. The conversation begins with Chris recounting how a business coach's advice to write daily transformed a stagnant 30-subscriber newsletter into a 14,000-subscriber operation, creating a flywheel where articles generate reader questions that fuel more articles, which become ebooks, then video courses, then workshops. He discusses the recent launch of his subscription platform, the Lean Web Club, a $9/month service offering hundreds of short tutorials and projects as an alternative to his individually sold courses. Chris traces his unlikely path from HR professional with an anthropology degree to full-time web developer and educator, crediting a boss who challenged him to build an internal learning platform despite having minimal coding skills. The technical heart of the episode covers his remarkably lean infrastructure: a $5 DigitalOcean droplet running a LAMP stack with Hugo-generated static sites, flat JSON files instead of a database, and a custom-built authentication system — all without Node.js. He also walks through his content creation toolchain, from Pandoc-powered ebook generation to ScreenFlow recordings and Vimeo hosting, reinforcing his core philosophy that simpler, more resilient tools often outperform complex modern alternatives.
Chapters
00:00:00 - Introductions and the Vanilla JS Philosophy
Scott Steinlage and Anthony Campolo welcome Chris Ferdinandi to JavaScript Jam, where he introduces himself as a developer educator with a daily newsletter reaching around 14,000 subscribers. Chris sets the tone for the conversation by laying out his core belief: that many modern web development best practices are actively harmful to users and to the web itself, and that the industry's fixation on developer experience has produced tools and workflows that aren't as effective as people assume.
Both hosts share their familiarity with Chris's work — Scott has been subscribed since late 2020, and Anthony knows him from numerous podcast appearances, including a stint as a host on JavaScript Jabber. This establishes a warm rapport and signals that the conversation will go deeper than a surface-level introduction, with hosts who already understand and appreciate Chris's perspective on web development.
00:03:08 - Building a Daily Writing Habit and Newsletter Growth
Chris tells the story of how business coaches Jonathan Stark and Philip Morgan persuaded him to shift from a weekly newsletter stuck at 30 subscribers to a daily writing cadence. Initially skeptical, he challenged himself to brainstorm a month's worth of ideas in 10 minutes, came up with 28, and committed to writing short, focused pieces each morning without overthinking or over-editing. The approach quickly paid off: he lost a handful of subscribers but gained more in return, and reader questions started feeding his idea pipeline.
The hosts discuss the broader principles at play — consistency, finding your voice, and the "flywheel effect" where daily writing generates questions that become future content, which eventually becomes ebooks, courses, and workshops. Chris shares his growth trajectory from 30 subscribers to 1,000 by year's end, then 3,000, 6,000, and eventually 14,000 over four to five years. He also reflects on why growth has plateaued, pointing to the fragmentation of social media after Twitter's decline and a general sense of digital fatigue following the pandemic.
00:12:04 - The Business of Education and Launching the Lean Web Club
The conversation shifts to the economics of running an education business, with Chris explaining how one-time product sales create their own form of churn requiring constant launches. This fatigue, combined with the evergreen nature of his vanilla JavaScript content, led him to launch the Lean Web Club — a $9/month subscription platform offering hundreds of short tutorials, projects, and structured learning paths. He describes how the platform differs from his standalone courses by being more holistic, with two-to-three-minute videos grouped by category and cross-linked to relevant projects.
Scott offers real-time marketing feedback, suggesting action-oriented button copy and a free trial period, which Chris reveals he was already building out. The hosts also recommend James Schramko's book on subscription business models. Anthony asks how the Lean Web Club differentiates from Chris's previous offerings, prompting a detailed explanation of the platform's structure: tutorials organized by category, dedicated project pages with walkthrough solutions, and curated learning paths covering broader topics like JavaScript essentials and writing reusable libraries.
00:21:15 - From HR to Web Development: Chris's Origin Story
Anthony asks Chris how he first learned to code, and the answer is delightfully unconventional. With a degree in anthropology and a job in HR where his ADHD made traditional office work difficult, Chris stumbled into blogging, which led to tinkering with HTML, CSS, and WordPress. He became known as "the HR guy who knows a little code," and when his boss asked him to build an internal video-based learning platform after quotes came back at $100,000 to $500,000, Chris reluctantly agreed to try despite doubting his abilities.
After two weeks of intense self-teaching through Stack Overflow, he produced a rough proof of concept that hooked him on development permanently. This launched a two-year journey out of HR and into professional web development, starting with a brief stint at Constant Contact that ended after six weeks due to broken promises about remote work. He then landed at Mashery, an API management company, where he spent years as essentially a solo developer customizing white-label products — an experience that pushed him to build a strong external network of developer peers.
00:28:34 - AI, Automation, and Going Solo
Chris confirms he runs his entire education business as a one-person operation with no team, then fields a question about AI usage. He admits to being resistant to tools like GitHub Copilot, primarily for ethical reasons around how training data was sourced, though he acknowledges he may be softening on the topic. Anthony and Scott suggest starting with automating repetitive tasks, drawing a parallel to James Schramko's advice about systematizing routine work.
Chris clarifies that he's not opposed to automation at all — he's built an elaborate API-driven system to manage marketing messages across roughly 15 different websites from a single source. The discussion touches on the difference between AI-assisted coding and traditional automation, with Chris firmly in the camp of building custom solutions that he fully controls. He then pivots to promoting the Lean Web Club, his podcast at vanillajspodcast.com, his YouTube channel, and his daily newsletter, all accessible through gomakethings.com.
00:33:03 - The Flat JSON File Architecture
Scott brings up a memorable newsletter issue about using flat JSON files, and Chris dives deep into the technical architecture powering his business. His entire operation runs on Hugo, the static site generator, which outputs both HTML pages and JSON files consumed by other sites. For his course portal, JavaScript fetches content through a simple PHP API that reads JSON files and checks user permissions. For the newer Lean Web Club, he refined this approach: Hugo now generates hidden HTML files and public-facing PHP files that handle authentication checks and serve content without any client-side rendering.
Chris explains his decision to abandon databases entirely in favor of flat JSON files for user data, including hashed passwords stored via PHP's built-in functions. He rolled his own authentication system using cookies with randomized tokens, acknowledging the security considerations while noting it works across multiple production sites. The conversation reveals he previously ran a headless WordPress instance solely for authentication, and dropping it reduced his server's memory usage by roughly 20 percent overnight.
00:42:09 - The $5 Server and DIY Deployment Pipeline
Chris reveals that his entire business — nearly two dozen websites — runs on a single $5 DigitalOcean droplet with a basic LAMP stack and no Node.js installation. He uses ServerPilot for security patches and has NGINX layered on top of Apache. His deployment pipeline is homegrown: GitHub webhooks trigger fetches and rebuilds of his static sites, essentially replicating what services like Netlify do but at a fraction of the cost and with full control.
The hosts encourage Chris to be more transparent about his infrastructure, suggesting a "uses" page similar to those maintained by developers like Jason Lengstorf and Ben Myers. Scott pushes the idea further, suggesting Chris could create content teaching others how to replicate his setup, positioning his real-world experience with rolled authentication and flat-file databases as a compelling draw for developers at various skill levels. Chris is receptive, noting he's written about these topics but the articles get buried in his prolific daily output.
00:46:45 - Content Creation Tools and Final Thoughts
Chris shares his content creation toolkit: ScreenFlow for recording podcasts, YouTube videos, and courses; a Shure MV7 dynamic USB microphone chosen for its noise rejection after a Blue Yeti picked up too much household noise during the pandemic; and Pandoc combined with wkhtmltopdf and Calibre for converting markdown files into finished ebooks in multiple formats. He mentions an open-source ebook boilerplate on GitHub that others can use to replicate his workflow.
The discussion covers his use of Vimeo for video hosting, which provides domain-restricted embedding, customizable players, and bandwidth-aware streaming — all of which let him keep course videos off his tiny server. Chris closes with his signature plea: please use less JavaScript and more HTML. The hosts wrap up by directing listeners to leanwebclub.com and gomakethings.com, with Scott wishing Chris well on his new subscription venture and the promise of a seven-day free trial coming soon.
Transcript
00:00:03 - Chris Ferdinandi
All right, we're live.
00:00:05 - Scott Steinlage
What's up, everybody? How's it going? My name is Scott Steinlage, and I am a co-host here on JavaScript Jam. And we have this guy, Anthony Campolo,
00:00:17 - Anthony Campolo
and a guest, Chris Ferdinandi, the vanilla JavaScript guy. Vanilla.
00:00:22 - Chris Ferdinandi
Hey, hey, hey. It's great to be here.
00:00:25 - Scott Steinlage
Yeah, man.
00:00:25 - Anthony Campolo
Why don't you give a little introduction to who you are and what you do?
00:00:28 - Chris Ferdinandi
Yeah, yeah. So the short version is that I teach people vanilla JavaScript, and I believe that there's a simpler and more resilient way to make things for the web. So I author a newsletter that goes out each weekday to about 14,000 developers, and I create a whole truckload of educational material, courses, books, workshops, things like that, that you can find over at gomakethings.com. My whole shtick, as it were, is that I think a lot of the modern best practices that we use on the web are actively harmful, both to the people who use the things that we build and the web itself. And a lot of this focus we've put on developer experience is both to blame and has resulted in a DX that is not actually as good as, I think, a lot of times we like to think it is. So that's what I'm here to talk about today.
00:01:30 - Scott Steinlage
Awesome, man. Yeah, appreciate you coming. And I've been. Actually, we were just kind of talking about this before we started recording, but I've had your emails coming to my inbox since, like, December of 2020, so back when, you know, Covid started happening and all that. And that's kind of when I started to shift more from, like, I have, like, a lot of marketing background and I started to shift towards more of a developer technical kind of role and was getting into JavaScript and things like that.
00:02:07 - Anthony Campolo
Yeah. For me, I'd heard you come up on many of the podcasts I listened to. You're someone who. You're very plugged into the whole podcast scene. So if you follow JavaScript jabber and shows like that. Weren't you a host on JavaScript jabber for a little bit?
00:02:22 - Chris Ferdinandi
I was. I left for political reasons. Yeah.
00:02:26 - Anthony Campolo
So it's. I appreciate, though, the fact that you really get yourself out there and like, communicate the. The things you're doing. And so, you know, both Scott and I are pretty familiar with your work for sure.
00:02:39 - Chris Ferdinandi
Awesome. Nice. Well, this will be better than the last podcast I was on where I got yelled at for 30 minutes. Oh, geez, that's funny.
00:02:49 - Anthony Campolo
Sometimes we're friendly hosts. Don't worry.
00:02:56 - Chris Ferdinandi
Excellent. Cool. Yeah. So where should we start? Do you want me to just give my normal spiel? Do you guys have any questions you'd like to talk about? I'm happy to.
00:03:08 - Anthony Campolo
I mean, I think Scott has some questions about your content flow and how you keep it so consistently going, for sure.
00:03:18 - Scott Steinlage
Like, dude, for days, you know, 20 emails in a month minimum, for sure.
00:03:24 - Chris Ferdinandi
Yeah.
00:03:25 - Scott Steinlage
Yeah, it's amazing. We love the content. It's good content. It's not just, you know, you're not just sloshing stuff out there. Like, it's good stuff, right? All of it. So we'd love to hear how you're doing that. Is it a team? Is it you? Is it. You know, what's going on?
00:03:38 - Chris Ferdinandi
No. So, like, three years ago, maybe a little bit more at this point, it's been a while. COVID time. The last three years have been like a blur. But at one point, I had a weekly newsletter, and it was kind of just a summary of cool stuff I'd found on the web that week, links to other articles, my own thoughts, stuff like that. And I had a humble 30 subscribers. And it had been that way for at least half a year. It was just a completely stuck newsletter. And I'm in this business Slack run by Jonathan Stark. At one point, I was actually paying him for business coaching. And him and this other dude who also helps freelancers make more money, Philip Morgan, were like, yo, you should start writing every day. And I was like, no, that's insane. I'm not gonna do that. There's no way I can write every day. And even if I could, no one is going to want to read that much from me. And they were like, no, no, no, no, just trust me. This will change your business.
00:04:49 - Chris Ferdinandi
Just trust me. And I'm like, I don't trust you. And they're like, but you should just try it for a month, and if you don't like it, you can always go back. Like, you only have 30 subscribers. What, you lose half of them? Who cares, right? It's like, it's 15 people. So I was like, all right, that stings, but you're right. So I gave myself a challenge. I said if I could come up with a month of ideas in 10 minutes, I would do it. And I set a timer on my phone, and I think I came up with, like, 28. And I was like, all right, that's good enough, let's go from here. And I gave myself a challenge that no idea was too small. So I'm like, all right, one day I'll write about how to get an element in the DOM with querySelector, and then the next day I'll talk about how to get multiple elements with querySelectorAll. Normally that would be one article for me, but I'm like, I'm just going to cheat and split it up and we'll see what happens. And it was really wild.
00:05:39 - Chris Ferdinandi
So a week in, I started getting back. So I lost like maybe four or five subscribers right off the bat, just from the I told people was going to happen. And I lost some folks who were like, I don't want to hear from you that much. But I ended up growing like an extra, like maybe 10 or 15 subscribers. So I more than made up for it. And after a week, I started getting back questions and I was like, oh, cool, I'll answer this in a future email and add it to the list. And so at the start of January, I had a list of like a hundred article ideas. No, it was more than that, but I culled it back to 100. I was like, I haven't written about these things. They're out of date now. Like, I'm not going to write about them. And today that list is at 188. Because I keep coming up with ideas faster than I can, like, write them.
00:06:30 - Anthony Campolo
I totally identify with that. I have roughly 50 markdown files right now, my blog, drafts of like, some that are like, just a dump of links versus some that are, like 90 written and just like this huge spread.
00:06:44 - Scott Steinlage
Yeah.
00:06:45 - Chris Ferdinandi
Oh, sorry. Go ahead, Scott.
00:06:46 - Scott Steinlage
I was just gonna say that I love what you're talking about and how, you know, the business coach gave you that advice and it was like, hey, you need to do this. Start writing every day. It's so true, though, because consistency, and it's not just the consistency of it, but it's. It's the fact that it's the practice. It's. It's the practice, yes, but it's also the. The polarity, right? And so, like, when you have polarity, then you're going to attract more, right? When you're not and you're sitting in the middle here and you're not creating content and all this stuff, then you're not going to attract those people, right? And yes, you're always going to have people that drop off. Just like you said you had four or five drop off, but you gained like 14 or 15. And it's because you're attracting.
00:07:23 - Anthony Campolo
Right.
00:07:23 - Scott Steinlage
And so, you know, with that being said, I think that that's a huge piece that you. If you're listening to this, like, don't miss out on that. That's very true. You need. You need to be, you know, find your voice is what you're doing too, right. In that. In writing, all that.
00:07:39 - Chris Ferdinandi
So I've been talking to. I'm in a handful of, like, discords and slacks, and I get this question a lot. Like, people, I'd like to write more. And honestly, like, the. The best way to start writing more is stop sitting on these mega blog posts like you want. I want to write the definitive guide to X and just write what you can in like, 15 or 20 minutes and hit publish, and then come back the next day and write the next part and just keep going until you're done. Because I know a lot of folks kind of get stuck in this. It's not ready. It's not ready. It's not ready. And, like, it just sits in drafts for months. And I actually found it harder to write weekly than daily. It's now just a thing I do when I have my coffee in the morning and I. I don't proofread. I just write until I'm done for that particular period of time and hit publish. It creates this cycle that Jonathan Stark refers to as the flywheel effect, where once you start doing it, the system just kind of takes over. And so what's happened for me is articles turn into questions, which turn into more articles, which eventually turn into a big enough collection of articles that I can make an ebook out of them, and then the ebook becomes a video course, and then the collection of video courses becomes a workshop.
00:08:55 - Chris Ferdinandi
And, yeah, like, just over the course of two or three years, what started as writing daily turned into this massive education business kind of by accident.
00:09:05 - Scott Steinlage
I love it. I love it.
00:09:06 - Chris Ferdinandi
That's.
00:09:06 - Scott Steinlage
That's an amazing story because that's like. I'm sure you've heard of click funnels, right? Yeah, Yeah. I used to work for ClickFunnels for, like, three years coaching other entrepreneurs and business owners like yourself on how to, you know, better market their product and services online. So I love hearing your story. It's so organic, so authentic. It's so awesome. So appreciate that.
00:09:26 - Chris Ferdinandi
Yeah, yeah.
00:09:27 - Anthony Campolo
This reminds me of the advice that Jason Langstorff gives, that he got this phrase from Sarah Drasner, I think, using every piece of the buffalo stick, and how, like, when you have content, you're able to repurpose it in all these different ways because it's like the, the content kind of transcends the medium at a certain point and it's like you're just having you, you know, the pure ideas you want to communicate to, and then you figure out different ways and different mediums to communicate that idea.
00:09:54 - Chris Ferdinandi
Yeah, that's a great, that's a great analogy. And both Jason and Sarah are awesome. So I'm not surprised to hear that. The other thing too, just in terms of growth, it was pretty wild. I went from stuck at 30 subscribers to. I started doing this in, I think like May or June. And by year end I had hit a thousand subscribers. And then the next year I was at 3,000 and then six and now it's been like four or five years and I'm around 14,000.
00:10:22 - Anthony Campolo
So you're getting exponential growth. I was for a while a long scale.
00:10:27 - Chris Ferdinandi
I, I, yeah, I think, I think sometime in the last year I kind of, that has slowed down. So I've been hovering around 14,000 for a little while now.
00:10:39 - Anthony Campolo
Let's talk about that. Do you have theories about why that is? Does that have to do with maybe your output or just you hit a certain limit or.
00:10:46 - Chris Ferdinandi
Yeah, I definitely don't think.
00:10:47 - Anthony Campolo
Shadow banned.
00:10:48 - Chris Ferdinandi
Yeah, no, I think there's a few things that have happened. A lot of this coincides with mass exodus off of Twitter. So where I maybe benefited a lot from social sharing and growth on a platform like that, a lot of that has been dispersed into pockets of smaller communities elsewhere on the web. So rebuilding a bit there. I also think there's maybe a little bit of digital fatigue. Early in the COVID pandemic, I think people went hyper-digital. Everything was online. And I think we've seen a little bit of, I don't want to say a backlash against that, but like, I'm just exhausted with so much online, and so there's maybe a little bit less of that. These are also just theories. I mean, there's no way that the developer community is limited to just 14,000 people. So I think part of it for me is finding additional pockets of people that don't know about me yet.
00:11:48 - Scott Steinlage
Yeah, I don't even know if it really matters that much though either too. I mean like 14,000 people, you know, if, if you've got 10% of those people listening to you and buying your stuff, like that's great. Like that's, that's huge.
00:12:00 - Anthony Campolo
Thousand true fans, they used to say. Right?
00:12:02 - Scott Steinlage
Exactly. Yeah, yeah, exactly.
00:12:04 - Chris Ferdinandi
I've been thinking about this a lot actually.
00:12:06 - Anthony Campolo
I think once you hit a certain mass of people too, that you can get organic growth by just them recommending it to their friends.
00:12:11 - Chris Ferdinandi
Oh yeah, for sure, for sure. Yeah. It's funny you mentioned that like the thousand true fans thing though because I've been thinking about this a lot. One of the, you know, one of the things, one of the things I often hear about, you know, like one time purchases versus like a subscription.
00:12:27 - Scott Steinlage
Yeah.
00:12:27 - Chris Ferdinandi
Is with subscription products you always have to worry about the churn. Right. And like keeping people the thing they don't really talk about is how like one time sales products are their own type of churn. And that if you don't constantly either make new things for existing people to buy or find new people to buy what you already have.
00:12:46 - Scott Steinlage
Launch, launch, launch.
00:12:47 - Chris Ferdinandi
Yeah, just constant launch. Like that's its own kind of grind, and I've gotten kind of tired of it, to be honest, especially where the things I teach about are more evergreen. It's not like, oh, React just dropped hooks and changed the way that everything works, so now I need to update this course. My stuff isn't really like that. Even when new things come out, the old stuff still works. So, yeah, it's a nice segue into the fact that literally just yesterday I launched this new subscription learning platform called the Lean Web Club that, for $9 a month, gets you access to this library of hundreds and hundreds and hundreds of tutorials and projects and all sorts of other stuff. So what's the site?
00:13:31 - Scott Steinlage
The landing page.
00:13:32 - Chris Ferdinandi
There it is@leanwebclub.com. i have no idea how it's going to do. This is like a big, a big gamble for me. It could either cannibalize sales of all my other stuff but not make up for them, or it could be the future of my business and I'm just not sure.
00:13:46 - Scott Steinlage
Well, if the value yet, I'm sure it'll be great. Which I'm sure the value will be there. I mean knowing what you have. So thank you.
00:13:54 - Chris Ferdinandi
Yeah, yeah, no, we'll, we'll, we'll see how this goes. This is, this is kind of my. I, I have high hopes for this, but who knows, you know, I see
00:14:03 - Anthony Campolo
a shout out here from West Boss on there. That's pretty good.
00:14:06 - Chris Ferdinandi
Yeah, yeah, it's, it's funny, he actually tweeted that when he was building his beginner JavaScript course. I think he was doing a lot of research for the course and just kept stumbling onto my stuff, which was kind of a fun and interesting little anecdote.
00:14:26 - Scott Steinlage
Have you ever heard of James? James Schramko?
00:14:30 - Chris Ferdinandi
I don't know that I have.
00:14:32 - Scott Steinlage
So his book. He has a book called Work Less, Make More. He's not in the tech industry, but he's in the business. Business. To business coaching and stuff like that,
00:14:40 - Anthony Campolo
but counterintuitive approach to building a profitable business and a life you actually love.
00:14:47 - Scott Steinlage
It's very marketing. But he is amazing. And he has successfully done the subscription, you know, piece of this, and he has, like, his retention is like three or four years per person.
00:15:04 - Chris Ferdinandi
That's awesome.
00:15:04 - Scott Steinlage
And it's amazing. Yeah. So, like, there's some good stuff in his book, and then obviously he has, you know, other things going on, but. Yeah.
00:15:13 - Chris Ferdinandi
All right. Emailing this to myself now so I can check it out later. Thank you very much.
00:15:17 - Scott Steinlage
Yeah, he's a cool guy.
00:15:18 - Anthony Campolo
And that will be in the show notes for curious listeners as well. So what is the. How does the Lean Web Club, I guess, differentiate from the content you produced in the past?
00:15:31 - Chris Ferdinandi
Yeah, so it's a great question. It is. So part of it is structure, part of it is volume. I'm not doing a great job explaining this, and I should probably come up with a better sales pitch.
00:15:44 - Anthony Campolo
It's a good time to workshop it.
00:15:46 - Chris Ferdinandi
Yeah, absolutely. Yeah. So, yeah. So where. So there's a few problems. Right. So I shouldn't say a few problems, but. So my. My courses and ebooks are very narrowly focused on kind of specific topics. Right. So I've got one on DOM manipulation, one on working with APIs, you know, one on ES modules. And my students generally love this because there's not a lot of fluff. It's just, here's what you need to know. Here's some, you know, here's some code, here's some instruction on it. Here's a little project. Go. And those are really great for when you're first learning something, but, you know, they're. They're very narrow, and if you were to buy all of them, it can. It can cost a lot of money. So the. The Lean Web Club addresses a couple of challenges there. First of all, it is. It's got all the things, so love that. So just all the different topics, they're all sorted by category. Each one includes video, text, version and source code. And, you know, if you are someone who's just looking to get started and you don't have 100 or more dollars to drop on this. It's a really great way for you to get started today.
00:17:04 - Chris Ferdinandi
The other thing that it addresses that I've always struggled with in the past, is that it's more holistic. So I often have, I often have, like, projects that I want to share that I think would be really helpful to help people learn. But they maybe require some tutorials if you're someone who's brand new for you to kind of understand. And there are tutorials that are scattered across several different guides or collections of learning. Or I have content that's not big enough for a full course, and so I don't really have a great way to package it and like sell it to people. And so having things in this platform really feels me from the constraints of a typical course model. So the way it works is I have a library of tutorials. Every one is really, really short. Like these are two to three minutes on a very specific topic and they're grouped into categories, right? So you might have a bucket of things around working with selectors, some stuff on loops, some stuff on moving up and down the dom, all the string methods you'd ever want to know, right? And each one is a short little video with some source code.
00:18:16 - Chris Ferdinandi
And then for each one it gets linked to relevant projects that will help you reinforce those skills if you want. I also have a separate dedicated page with all of the projects, and each project includes links to relevant tutorials so that if you need some background before you start digging in, you can. And when you're done, I have a walkthrough of how I approach that project so you can, you know, if you get stuck or you need help, you have a way kind of to move forward. And then I also have this feature in there called Learning Paths, where they are collections of tutorials and projects around a broader topic. So rather than just DOM manipulation, for example, I have one on JavaScript Essentials that's going to walk you through all of the stuff you need to know if you want to get started as like a junior JavaScript developer, you know. So it'll cover DOM manipulation, working with APIs, array objects, string and number manipulation, just all of the kind of the basic stuff that you'd be expected to know in your first JavaScript job. Got another one on writing libraries that covers all the different ways you can structure code that's designed to be reused across projects and things like that.
00:19:33 - Chris Ferdinandi
So it's, it's, it's really, it's designed to be a lot more holistic and Inclusive and provides people with lots of different ways to learn depending on both how they learn best and where they currently are in their process. Because one of the things I've found is that different people need different things at different phases in their learning journey. So what you need when you're just starting is very different from when you're maybe you know, kind of heading into mid level in your career.
00:19:59 - Scott Steinlage
So that's awesome. And just kind of looking over your, your leanwebclub.com page here, I was just kind of thinking about a few things and I don't know, you can take this for what it is, man, whatever.
00:20:11 - Chris Ferdinandi
Yeah, sure.
00:20:11 - Scott Steinlage
But for example, like on your join now for just $9 a month. I think that's great. But people love it also when like instead of like you know, them, them getting something right. So maybe like get all the coding instruction you need for only $9 a month. Right. You know like. Or give. Right, like yeah, you know, something like that. But let me get. Instead of join or click or.
00:20:36 - Chris Ferdinandi
Yeah.
00:20:37 - Scott Steinlage
Subscribe or you know, something like that. Like for sure.
00:20:40 - Chris Ferdinandi
For sure.
00:20:40 - Scott Steinlage
Receive. Another thing I was thinking about, have you thought of doing maybe a seven day trial kind of thing so people can see it, try it out and
00:20:49 - Chris Ferdinandi
like literally as we were at like the, the 30 minutes before, before this, I was like dropping in the, the scaffolding to, to push that out today. So. Yeah, for sure.
00:21:00 - Scott Steinlage
That'll be cool.
00:21:01 - Chris Ferdinandi
For sure.
00:21:02 - Scott Steinlage
Awesome. Yeah, we'll try and link that in the notes then for sure as well. Like get your free 7 day trial to Chris's new leanwebclub.com I think it's awesome. Thank you.
00:21:12 - Chris Ferdinandi
Much appreciated, Scott.
00:21:13 - Scott Steinlage
For sure.
00:21:15 - Chris Ferdinandi
Fantastic. Yeah, sorry, I just had a brain went blank on me for a minute.
00:21:23 - Anthony Campolo
You're good. I'd actually be curious if you had to take it a different direction. Yeah, I'm sure you've told this story a million times, but I love people hearing this. How'd you first learn to code? How'd you get into this stuff?
00:21:32 - Chris Ferdinandi
Yeah, I used to. Well so I had a degree in anthropology. I was working in HR and I. Which is its own story into itself. But I. Oh and I have adhd. So I was failing so bad at my first job. I just could not get stuff done. Yeah, it was like. Yeah, I was just a scattered mess. So I started Googling like how to get stuff done at work. Right. Which took me to like getting things
00:22:06 - Anthony Campolo
done and 40 and it's like as an ADHD person, you're like, you tell me I have to sit down and read a whole book to learn how
00:22:12 - Chris Ferdinandi
to do this well. So I, I found blogs and, and I was reading them and they were helping a little bit, but I was really intrigued by this idea that people had, like, opinions on things and they were just writing about them. And I was like, I want to do that too, because there's a lot of things I don't like about hr and I kind of want to, like, share them. So I started a blog and I wanted to have more control over how it looked and felt. So I started kind of hacking my way through HTML and CSS and PHP or WordPress flavored PHP. And I really, really liked it. And I started looking for ways to do more of it in my actual job. And I became known as, in my company as the HR guy who knows a little bit of code. And I knew, like, just a little, little bit, right? But I was working. Eventually I ended up in the, like, learning and development team, where my primary focus was on, like, career development kind of stuff. But my boss and I were kind of kicking around this idea of, like, rather than training, being like, let's get everybody in a room for eight hours and talk to them, what if we.
00:23:21 - Chris Ferdinandi
We did it more like YouTube, where people just watched short videos of stuff they needed to learn when they needed to know it, and we had it all hosted on some internal platform. So we talked to it and they're like, oh, yeah, no, no, we can do that. It'll cost $100,000 and it'll take us a year and probably won't have these things you want. And I was like, oh, that's not going to work. So we looked at some outside agencies and they're like, oh, yeah, no, no, we can do that in like, six weeks, no problem. Half a million dollars. And I'm like, no, we're not going to pay that. This is just like a proof of concept. So my boss, he asked me the question that changed my career forever. He looked me in the eyes and he goes, hey, Chris, you know a little bit of code. Can you build this? And I looked him dead in the eyes and I said, no, I cannot. This is well beyond my capabilities. And he goes, well, can you learn? I go, probably not, but I'll try. So I just, literally just disappeared for two weeks and dove into the bowels of Stack Overflow and tried to figure out how to hack WordPress, which was the only kind of platform I knew, into kind of an app thing.
00:24:23 - Chris Ferdinandi
And I wrote the most awful code I've ever written in my life. But I got this really rough proof-of-concept thing stood up, and I was absolutely hooked. That was the moment where I was like, forget HR, this sucks. This is all I want to do for the rest of my life. This is amazing. And that started a two-year journey for me of leaving HR and becoming a web developer. So focusing a lot more on building my skills, networking, going on and bombing tons of interviews, and eventually getting my first gig at Constant Contact, where I lasted for exactly six weeks.
00:25:05 - Anthony Campolo
I was gonna say that sounds like a pretty cool gig, but it sounds like it was a minor one.
00:25:09 - Chris Ferdinandi
No, it wasn't. I, I left. I wasn't like fired or anything. It was, it was a, it was so Constant Contact at the time. They had one of the best learning cultures of any place I've ever worked. It was like a, somewhere between an hour and a half and two hour commute one way for me during like normal commuting hours. And during the interview process, they were like, oh yeah, no, we can, we can talk about remote work once you get settled in. And then I got settled in and they're like, oh no, no, we don't do remote work here. And I was like, all right, cool, I'm leaving. And they're like, oh no, we can make an exception. And I was like, no, I'm sorry, it's too late now.
00:25:42 - Scott Steinlage
Yeah.
00:25:43 - Chris Ferdinandi
And I don't think it was the company. I think it was just like my hiring manager was like old school and kind of crappy, but. But yeah, that's another story for another. Actually, that was the whole story, Right. Constant Contact was otherwise really, really cool. I still keep in touch with some of my old co workers there.
00:26:00 - Scott Steinlage
Wow, that's awesome.
00:26:02 - Anthony Campolo
Are there other companies you've passed through along the way that you feel like you like took things away from?
00:26:11 - Chris Ferdinandi
Yeah, so it's actually really funny, right? So I went from Constant Contact to this company called Mashery, who does API management software. So, you know, if you're a company that wants to have an API program, either internal or external, they make software that you can use to generate keys and secrets and authenticate people and determine who has access to what and see analytics and all that. And I was the person who made this white label product look like your brand. So like, if Adidas came in, we'd make their website look like Adidas.com and I was there literally until I quit last year to just go full time. On my JavaScript education business. So yeah, so that was a really long running kind of thing and it was odd because I was like the, there were other developers there, but the group that I was part of, I was like a team of one. And so a lot of my kind of learning and growth came from either like self teaching or finding networks outside of the company to interact with, which, which was really cool. And it's one of those things where like I, there were times where I was like, I wish I had more developers to interact with here.
00:27:28 - Chris Ferdinandi
But I think in the long run it benefited me a lot to have a much bigger kind of external network of folks. I think that's the kind of thing we don't always do enough of.
00:27:39 - Anthony Campolo
Yeah.
00:27:40 - Scott Steinlage
Can you relate to that, Anthony? Because like, you know, being in Devrel is totally different than being in the engineering team in like DevOps or whatever. Right. Like, and then you have your external community that you hang around with and do things with and chat with online. It's very similar kind of, you know.
00:27:56 - Chris Ferdinandi
Yeah.
00:27:57 - Anthony Campolo
Being DevRel, it can be kind of like an island onto itself or like a connector between different pillars. There's a lot of different ways you can kind of approach it. I think it's also, we talk about this with dom, how this can lead to a lot of burnout because you end up having to be so many things to so many different people at one time. So for me I always try and be like, you know, get a little bit of product, a little bit of marketing, a little bit of engineering and then by getting the sum total of those pieces you can get kind of a holistic view.
00:28:30 - Scott Steinlage
That's cool. Awesome man.
00:28:34 - Chris Ferdinandi
For sure, for sure. Yeah. So I'm trying to think after that. Yeah, no, that was it. And then I've just been doing this so I'm kind of a solo educator at this point, which answers the question you asked me earlier. I do not have a team. I'm just literally a one, one person show.
00:28:52 - Scott Steinlage
So you're just hustling, man.
00:28:55 - Chris Ferdinandi
I am, yeah.
00:28:56 - Scott Steinlage
How, how much do you use AI in, in your flow?
00:28:59 - Chris Ferdinandi
Not at all really. I've been, I've been kind of resistant to the trend. I, I, I may be softening to it. I just haven't gotten around to like, so I don't use Copilot at all. I, I mostly for ethical reasons. I, I, the idea that they were kind of like taking and license washing code kind of just didn't sit right with me. But yeah, I, I did not at all.
00:29:30 - Anthony Campolo
I would recommend taking the most repetitive task that you do and trying to automate that. That's usually what I tell people. There's something you're doing multiple times that is very obnoxious. See if you can figure out a way to automate that just by asking ChatGPT to do it for you.
00:29:47 - Scott Steinlage
This is funny though. This is interesting you say that exact thing right there. Because James Schramko, the guy I mentioned earlier with the Work Less, Make More book, that's one of the things he talks about: create a list of all the repetitive things that you do, and then start creating these systems and processes, or utilizing AI at this point. That was not a thing back then. But yeah, I think it kind of correlates well with it.
00:30:12 - Chris Ferdinandi
But yeah, and I'm not opposed to automation. I have automated the hell out of.
00:30:18 - Scott Steinlage
I think all engineers love automation.
00:30:19 - Anthony Campolo
Right.
00:30:20 - Scott Steinlage
Like that's why we engineer things is to do.
00:30:23 - Chris Ferdinandi
Yeah, for sure, for sure. Like I, I have something like, I think like 15 different like websites with various like products or like marketing funnel kind of things on them. And so I have this whole crazy like API driven marketing message system so that I only have to update my messages in one place and they get populated everywhere. Yeah, that gets kind of complex over time. But yeah, so I'm very much on board.
00:30:54 - Anthony Campolo
Awesome. Well, you gave us an idea of kind of what you're working on and are there other things that you want to kind of blast out into the universe and let people know about?
00:31:04 - Chris Ferdinandi
Yeah. No. So the, the big one was. Big one is obviously the, the Lean Web Club. And, and it's kind of where I'm putting a lot of my energy right now. Other than that, I run a podcast, I run a YouTube channel. I got my daily developer tips newsletter.
00:31:19 - Anthony Campolo
Yes. Let people know like what those are,
00:31:20 - Chris Ferdinandi
The place to find all of that is go to gomakethings.com, JavaScript Jam, or JS Jam, or JavaScript-Jam. They all get you there. And I'll have links to all of this stuff over there just because I have like a bajillion.
00:31:38 - Anthony Campolo
What is your podcast like, what kind of stuff do you cover in that?
00:31:41 - Chris Ferdinandi
Yeah. So it's a lot of. I don't know why I keep saying yeah before I answer questions. It's a really annoying habit. I cover a lot of the same stuff that, well, my newsletter is a mix of strategic and tactical. The YouTube channel tends to be more of the tactical code stuff, particularly the stuff that would benefit from being able to see it, whereas the podcast tends to be more of the strategy stuff. So that's over at vanillajspodcast.com. For example, I talk about things like, actually, I do have a couple of code-based things, but in the past I've talked.
00:32:22 - Anthony Campolo
Or is it just mod logs?
00:32:24 - Chris Ferdinandi
It's usually just me. I every now and then have guests. Like, I recently had a chat with my friend Ben Myers about accessibility. Yeah, I've got another one coming out soon. I love Ben, he's so great. Got another one coming out soon with Jared White where we talk about, you know, kind of just the general complexity of the industry and some emerging trends that we're seeing with. With some newer tools. But it is usually just me, largely because editing guests is hard, as I'm sure you both know. And when it's just me, I can just. If I screw up, I can just start over. And I don't really do any editing.
00:33:03 - Scott Steinlage
That's cool. So one thing real quick I just want to bring up. And I was thinking about it earlier, I couldn't find it, but I finally found it. So one email that really stuck out to me was from back in March, late March, and you were talking about flat JSON files for the win. And it kind of like you went through your process of, you know, your, your courses and your site and how that all works through, you know, rendering all these different things based on what people have bought and what they signed up for. I just love the process that you went through and you simplify, you know, because you like to keep things simple. Right. And I, I thought it was super cool the way you put all that together. And I think I was actually talking about this on one of our JavaScript jam lives at one point. But I don't know if you want to get into a little bit of that and just kind of talk about how you created that instead of going with like a click funnels or lead pages or. Or maybe you do some use some of those too.
00:34:00 - Scott Steinlage
But you've got your whole system right?
00:34:02 - Chris Ferdinandi
So I thought, yeah, for sure. Yeah, I can talk about that. Absolutely. So my, yeah, my whole, my whole business is driven by Hugo, the static site generator. Literally when I switch from WordPress to a static site generator. Zach Leatherman had like just that week started working on Eleventy and he's like, I've got this new thing coming out. And I was like, oh, this looks really cool, but like, I want something today. And like it's still in, you know, like beta. So I'll check this out in like a few months. And by then I was already like way too deeply entrenched in the Hugo world. But yeah, so one of the really cool things about static site generators is you can, you can usually customize the output formats. So I have mine spit out for my site HTML files, but then it also spits out some JSON files that some of my other Hugo sites will fetch and consume and render things into HTML on, on various pages for my, my student portal for people who buy like my courses and workshops and stuff. I am generating HTML pages and then like a JSON file that's only accessible on the server.
00:35:20 - Chris Ferdinandi
You can't get to it from the front end. And I have, yeah, remind me of
00:35:24 - Scott Steinlage
like a, like an environmental like file or something.
00:35:27 - Chris Ferdinandi
Yeah, it's really, it's just, it's just an index.JSON file, but I have my. Htaccess set up so that you can't get to it directly, you can only read it on the server. And so my JavaScript will make a call to an API I set up, which is again really just a PHP file that reads the JSON file, checks if the person should have access to that content, and then sends it back. And then JavaScript takes over and does some rendering. And that works well, ish enough as you might imagine. Like there's kind of some. I don't like the idea of rendering with JavaScript when you don't have to. And so that's always bothered me. So for the Lean Web Club, I went a different route and every markdown file spits out an HTML file and an index PHP file. And this time the HTML file is the one that's hidden and only readable on the server and the index PHP file is the one that gets served by default. And that file just really quickly checks is the person signed in yes or no. Is this content for public consumption or logged in users only and then either redirects them or grabs the.
00:36:40 - Chris Ferdinandi
The in the HTML file for that view and just spits it back out as a result, it's way faster. There's no JavaScript rendering and it has worked out really, really well.
00:36:53 - Scott Steinlage
Well, how many different views? Because I'm sure you have a lot of different products. Right. So.
00:36:58 - Chris Ferdinandi
Yeah, yeah. So I, I basically just, I have,
00:37:01 - Scott Steinlage
I have templatized it, I'm sure.
00:37:03 - Anthony Campolo
And then you.
00:37:03 - Chris Ferdinandi
I did and I have, I really only have like three, three types of content. So it's either you have to be logged in to see it, you have to be logged out to see it or it's available for both. And if it's available for both, I tell, I tell Hugo to just spit out an HTML file and make it publicly accessible. So there's no like kind of PHP routing that happens there and then otherwise it's very, very straightforward. The, the template grabs some front matter like is this public or not thing? And drops it into a PHP variable in the associated index dot PHP file so that it, it can figure out should the person see it or not. And then you mentioned flat JSON file. So I don't use a database anymore and it has been like shockingly awesome to just read and write up and down from a JSON file. So I'm using PHP and their built in hashing function to hash passwords before saving them down and then compare the provided plain text password when someone logs in against the hashed version in the database, quote unquote, the flat JSON file. And that's basically it.
00:38:23 - Chris Ferdinandi
It's really, really simple. It's super nice to be able to manually debug things by just opening files and seeing what's going on or deleting them or creating new ones. Like resetting a password doesn't involve my SQL queries. I can just go in and you know, drop, drop a hashed thing into the, into the file. It's, it's worked out really, really well for me and I was a little bit worried about scale. Um, and I still don't have a huge, like, my course portal only has about a thousand students who use it on a regular basis. So it's not like overwhelmingly crippling, but it has worked out shockingly well. Like really, really well. For the authentication piece, I'm setting a cookie that has a just like a randomized token string and then off.
00:39:13 - Scott Steinlage
You're saying, right, exactly right.
00:39:14 - Chris Ferdinandi
I did roll my own off. Yeah. And I know that sounds absolutely bonkers,
00:39:18 - Anthony Campolo
but so the hot hot topic, it
00:39:19 - Scott Steinlage
is a hot topic.
00:39:20 - Chris Ferdinandi
So when the person. And I'm not like, I'm not trying to be arrogant about. I know there's certain folks on Twitter who have been like, oh, this is so easy. And it's not. It was kind of, it was kind of a pain, but it's not, it's
00:39:32 - Anthony Campolo
not easy, but it's not impossible. It's not about rolling your own off.
00:39:36 - Chris Ferdinandi
It's not trivial. And they're absolutely security concerns. Like don't save plain text passwords, like that kind of thing. Right, but. And you need to really make sure. If you're doing what I do with flat JSON files that the directory they're in is not readable from the web. You know, that kind of thing.
00:39:53 - Anthony Campolo
Do you have content on off like vanilla JS auth.
00:39:59 - Chris Ferdinandi
Do I.
00:40:00 - Scott Steinlage
You might. Now hold on.
00:40:02 - Anthony Campolo
That would be some cool. That's a, that's a subject that is underserved.
00:40:07 - Chris Ferdinandi
Oh, man. So I wrote, I wrote a little bit about this on my site. I also have a course on token based authentication, but it mostly talks about using like OAuth services or that sort of thing.
00:40:23 - Anthony Campolo
Drop into it with, you know, vanilla js. But you're still kind of reaching out to services.
00:40:28 - Chris Ferdinandi
Yeah. But instead of having to like download an SDK or use some sort of like third party thing, like here's token based. Yeah. Here's an OAuth flow using vanilla JavaScript for example. But I have. One of the things I have flagged to do for the Lean Web Club is create a series of tutorials on your process. How I actually.
00:40:48 - Scott Steinlage
Yes, I love how I did this. But what I would love to see.
00:40:51 - Chris Ferdinandi
Yeah.
00:40:52 - Scott Steinlage
Is. And I think this would be a huge lead magnet for you because if you created that but packaged it as a separate thing and sure. Put it in your Lean Web Club as well. So they get it, but. Because they get everything in there anyway. Right. But take this and create it as a giveaway for subscribing to your list. Right. And I think that if you compare it to all these austs that are popping up around, you're gonna get a lot of probably negative and positive feedback, but used to that, it's gonna be, I mean, especially on Twitter, if you're negative. Oh, your game. You're gonna be good. Yeah, I think that would be awesome. And then. Yeah, let's see another 5,000 people in there. Right.
00:41:36 - Anthony Campolo
Cool.
00:41:36 - Chris Ferdinandi
Yeah, that's a good idea. Yeah. The, the cookie piece is. It's literally just. It's a token. And then I've got another. Got a bunch of token files that like the file name is the token and it's got the person's email address in it.
00:41:50 - Scott Steinlage
So especially since you've done this successfully. Right. Like, that's the thing.
00:41:53 - Chris Ferdinandi
Like this is not theoretical. This is now multiple sites.
00:41:56 - Scott Steinlage
You're using it in something that you sell.
00:42:00 - Chris Ferdinandi
Right.
00:42:00 - Scott Steinlage
So I think that's the key here, is that people will really want to find out. Okay, well, what is this? Let me, let me. Yeah, I'll give you my email to find something that's working for sure.
00:42:09 - Chris Ferdinandi
I. I was previously Using work like, I literally had like a headless WordPress just for user authentication. I run my entire business on a single five dollar digital Ocean droplet. Like, like almost two dozen sites and it's worked really, really well. But I noticed a few months back I was like hitting my memory allotment every now and then just like these massive spikes. And So I ditched WordPress and it dropped by like 20 just like overnight. So just for me, it was a
00:42:38 - Anthony Campolo
big performance win on that digitalocean droplet. If it's not WordPress, what was that like? What is. What do you have running on that digitalocean droplet? Are you saying you dropped the droplet itself?
00:42:47 - Chris Ferdinandi
No, no. So I, I removed WordPress from the equation and so now servers like what is running. No, I don't have Node either. It's so it's literally, it's like just a LAMP stack. So it's just Linux, Apache and php. And I actually think there's an NGINX like layer on top of Apache. I use this service called Server Pilot to kind of manage the keeping doing like patches and things like that security layer. But yeah, I don't have node installed at all. The whole thing is just a handful of cron jobs that run to rebuild my static sites every, every night.
00:43:30 - Anthony Campolo
So it's, it's the Hugo thing is you're just, you're basically. It's the Hugo thing and you're running that to generate your static assets and then kind of building and pushing something on the fly.
00:43:40 - Chris Ferdinandi
Yeah. And then the. So I, yeah, I have like an automated deploy. So whenever anything goes to GitHub, a web hook triggers like a fetch and rebuild.
00:43:48 - Anthony Campolo
So you built your own netlify.
00:43:50 - Chris Ferdinandi
I did, yeah. Yeah. This was before netlify was like really a thing though. Sure.
00:43:55 - Anthony Campolo
Yeah.
00:43:56 - Chris Ferdinandi
And that's cool.
00:43:57 - Anthony Campolo
Once you got set up, like set it, forget it. Why mess.
00:43:59 - Chris Ferdinandi
Yeah. And it's, it's just, it's five bucks. It's so easy. And then, and then also you know the kind of the PHP that runs the authentication layer. So reading those flat files, updating them, writing back to them, that sort of thing.
00:44:17 - Scott Steinlage
That's awesome, man. Have you thought about being more transparent about your internal things that you're doing? Because I'm just hearing all this is freaking phenomenal.
00:44:24 - Anthony Campolo
You have a uses page. I feel like that would be in line.
00:44:28 - Chris Ferdinandi
I probably should. I don't. Yeah, I don't. I know that's one of those things too, like out on that stuff.
00:44:33 - Anthony Campolo
Very good Uses pages. Jason Langstore has very good uses pages. I, I'm in the same boat as you, Chris. I want to write a users pages. And for people who don't know, this is a page where you say my whatever is using this tech and you kind of like very clearly say, I'm building on this, this, this with these services. My, my Astro blog kind of does this, but some people go way deeper. Like this is how I stream. This is how I do xyz, you know.
00:45:00 - Chris Ferdinandi
Oh, crap. Jason's is amazing. All right. Yeah.
00:45:04 - Anthony Campolo
To both of those. Jason's and Ben Myers. Check out both of them. They're very fantastic.
00:45:09 - Scott Steinlage
It's like Wapalizer, but truthful.
00:45:14 - Chris Ferdinandi
Oh, man. Oh yeah. Now I'm looking at Ben's. This is great too. All right. I've got some, I've got some catching
00:45:20 - Scott Steinlage
up and not just like uses, but like the, the like, you know how like other. There's a lot of other people who are course creators or things like that and they, and they're more transparent with other things too. Like jld, John Lee Dumas on his podcast, he's very transparent with like everything he does on that. But I don't know, just like helping other people to do what you did. You know what I'm saying? I think that would be a huge thing too. Right. Because here's the thing, man. Like, how many other people out there do what you do? Like, because like vanilla is very like. Yes, it's, it's, it's like you said, it's timeless. But also at the same time it's very. Would you say it's beginner oriented, but some of it isn't just as well. Right, but. And so it attracts a lot of those beginner ish people like myself in 2020.
00:46:06 - Anthony Campolo
Right.
00:46:07 - Scott Steinlage
Like that's how I signed up for you. Right. And so I was thinking, you know, if you could create another course on how you did this and be more transparent or, or not even necessarily a course, like, I know that's a huge undertaking, but just putting that process out there of how you did it more, I think there you would get a, even, even more people that are developers at your level, you know, to, you know, to help them get to the next level themselves. So because you only got to be one step ahead of the next guy below you to. You know what I'm saying? So.
00:46:41 - Chris Ferdinandi
Yeah, 100. That's a good, good suggestion.
00:46:44 - Anthony Campolo
Yeah.
00:46:45 - Scott Steinlage
Cool, man. Well, this has been really fun, for sure.
00:46:47 - Anthony Campolo
Yeah.
00:46:48 - Scott Steinlage
Is there anything else you want to shout out or talk about or.
00:46:51 - Chris Ferdinandi
No. No, this is. This was great. Yeah, actually, I know. Actually, I take that back. There's one. There's one more thing. And this is always one more thing. I feel. I feel. I feel weird about this as a JavaScript educator, but. Which is my plea to everybody. Please stop using so much JavaScript. Use less of it. More HTML, less JS.
00:47:09 - Scott Steinlage
Welcome to JavaScript Jam.
00:47:11 - Chris Ferdinandi
Right? That's my. That's my. I'm once again asking you to use less js.
00:47:17 - Anthony Campolo
I'm going to be teaching my partner to learn a little bit of code. And she was like, how many programming languages are you teaching? Why can't we teach you HTML? We'll stop. That's it.
00:47:26 - Scott Steinlage
Totally.
00:47:27 - Anthony Campolo
Just. We'll go there. We'll see where we go. But don't worry about anything else.
00:47:31 - Scott Steinlage
She'll jump on. It'll be.
00:47:33 - Anthony Campolo
It'll be quick.
00:47:34 - Scott Steinlage
Like HTML is good. Yeah.
00:47:36 - Anthony Campolo
HTML goes deep though. Like if you actually like go through all the tags you got, like you can never.
00:47:41 - Chris Ferdinandi
Yeah.
00:47:42 - Scott Steinlage
Like there's no way I would remember them all. I just saying like it's.
00:47:45 - Anthony Campolo
Let's say remember all but just like learn how to use them all. And like when we appropriate time to use a DL tag, you know, like that there's all sorts of stuff.
00:47:53 - Scott Steinlage
Yep.
00:47:55 - Chris Ferdinandi
I don't love the data list does not get enough love.
00:47:58 - Anthony Campolo
Yeah. Another shout-out to Ben Myers, who wrote a definitive blog post on the DL element. We'll include that in the show notes as well. I think you've given all the links already. It sounds like gomakethings.com is the place to go. And then I know you're on Mastodon as well, and Twitter. You've got that right, your name there at Chris Ferdinandi, I'm assuming.
00:48:22 - Chris Ferdinandi
Yes. So, Twitter is the only place where I'm @ChrisFerdinandi. I'm @CFerdinandi literally everywhere else. There's like a Cheryl Ferdinandi from Italy who grabbed cferdinandi and then never logged back in on Twitter. So for like a decade there's just been this abandoned Twitter account.
00:48:40 - Anthony Campolo
They're expiring ones.
00:48:41 - Scott Steinlage
I heard that too.
00:48:42 - Anthony Campolo
Hopefully that ends up happening.
00:48:43 - Chris Ferdinandi
I know, right? Although at this point.
00:48:45 - Anthony Campolo
Jam.
00:48:47 - Chris Ferdinandi
Nice.
00:48:47 - Scott Steinlage
Yeah. Yeah. Actually, one. One last question. So with your creating and everything, like do you use Adobe Premiere? Do you use like for your podcast use something different than your YouTube stuff?
00:49:01 - Chris Ferdinandi
Yeah. You know, what are your. Some of your tools?
00:49:03 - Scott Steinlage
It's always.
00:49:03 - Chris Ferdinandi
I am at. So. And I actually I've. I don't have a users page. I've written about all of these things in various places. They're just hard to find because they're like, scattered and like articles that get buried very quickly because I. I just write so much, but. So my favorite microphone is. Sure. But no. So for the recording piece, I. And actually, I will talk about the microphone in a sec for reasons. But. So I record everything in ScreenFlow. So podcast, YouTube videos, courses. I. I've had to upgrade it a couple of times every now and then.
00:49:42 - Anthony Campolo
A Mac OS update screenflow that you enjoy.
00:49:45 - Chris Ferdinandi
Like, why it does very little. Yeah, it's. It doesn't get in the way.
00:49:49 - Anthony Campolo
So it's the opposite of obs then
00:49:51 - Chris Ferdinandi
it sounds like, yeah, I've tried obs and I literally can't figure it out. I'm just stupid. Yeah.
00:49:56 - Anthony Campolo
Everyone tells me I gotta learn obs. I wanna be a real streamer. And I'm just like, if this is the only tool that I can use to be a real streamer, I'm not gonna be a streamer.
00:50:04 - Scott Steinlage
I'm sorry. Yeah.
00:50:06 - Chris Ferdinandi
So I. It's like, it's one of those. I can adjust the. The audio, I can crop and move around clips, and I can like drop in overlays and resize things, but it just doesn't do a ton of stuff. And I really like it for that.
00:50:19 - Anthony Campolo
Yeah. It's all those tools that do less. I am a very big fan of that.
00:50:26 - Scott Steinlage
I use that for. Since about 2016 or 2017. I was using that quite often.
00:50:30 - Chris Ferdinandi
Yeah. So I can. I can also customize the output format so, like, you know, spit out different files for the podcast versus, like something that's going on YouTube or a course. And. And it also records like, the computer sound cards. If I've ever doing like, accessibility courses and I need to demonstrate what voiceover is doing. It's really helpful to be able to do that.
00:50:52 - Scott Steinlage
Oh, yeah. I love coming in there with a voiceover afterward easily too. Like, Streamyard makes that so easy to do.
00:50:57 - Chris Ferdinandi
Yeah. And if it's like, in the way, I can like, individually, like, okay, cut this volume out. Bump this up. Lower that. Because voiceover can be really loud.
00:51:05 - Scott Steinlage
Yeah.
00:51:06 - Chris Ferdinandi
Yeah. So I use screenflow for that. I was rocking a blue YETI for like, a really long time. And then when Covid hit and everybody came back into the house and it wasn't just me recording in the quiet of my home anymore. It was picking up everything. Yeah. So I switched to the. Sure. I think this is the MV7. Is that right?
00:51:29 - Scott Steinlage
Looks like it. Hold on.
00:51:30 - Chris Ferdinandi
I always forget which one's the Bluetooth mic or which one's the usb and which one's the, like the fancy one? Um, but yeah, I like this because it's. It's a dynamic mic, which means if I'm not talking directly into it, it doesn't pick it up. And so, like, if my dog's barking in the background, you can't hear it, which is. Which is great. Um, and it's a USB. Yeah, it's the MV7. So it's a USB mic. So I don't have to deal with the whole, like, oh, I need a preamp that, like, boosts the volume and all this stuff. It's just like, I plug it in, it works. It's great. All of my ebooks and stuff start off as markdown files. Hey, Anthony, I use. I use Pandoc. And there's like a. What is it? It's like PDF, HTML5. There's some other thing that, like, converts. Converts that into some other formats for me. But I have this little, like, homegrown command line tool tool that spits my markdown files out as EPUB and Moby and all this other stuff.
00:52:36 - Anthony Campolo
You said you have ebooks, right? So that's. Yeah, but you've kind of set yourself up for. You can have Markdown as a source of truth and then turn that into ebooks. Like, this is. This is where I want to be. So, like, I would love to hear more about that.
00:52:48 - Chris Ferdinandi
Yeah. Hold on, let me. Let me pull up my article on this. How I create my ebooks. I need to search on my own site. Site to find it. It was a year ago. It was literally. I do. Yes. It's. It's down on the footer or if you just go to gomakethings.com back to the uses page.
00:53:05 - Anthony Campolo
Like, I love nerdy out on how people set up their own stuff. So.
00:53:08 - Chris Ferdinandi
Yeah.
00:53:08 - Scott Steinlage
Have you tried paid advertising with like, something like that lead magnet like that? Like, hey, how do you. Here's how you can do your own ebook in the matter of X, whatever. Just using Markdown and like, just focus on, you know, developers and stuff like that.
00:53:26 - Chris Ferdinandi
This has been something I've been toying with for a little while. I've been.
00:53:30 - Scott Steinlage
Sorry, I just. I love ideas.
00:53:31 - Chris Ferdinandi
No, and I've been. I've been to. I haven't like, just dove into that yet, but it's been. It's been on my list. Yeah. So for my. Just for my, My books and stuff, like the. So the process is I write the E book first and Then I pump it through. Let's see, where is my system here? Oh God, why can't I. Why can't I find it? Hold on. Gnt Pandoc. I got to look this up. The more recent article does not have the. Okay, yeah, so I use Pandoc webkit HTML to PDF and caliber and I'll drop some links to those in the. In the chat. But yeah, so I think I used webkit HTML to PDF or wkhtml to PDF with Pandoc because it gives me more control over the css and I just really wanted to have that. That control. I literally can drop in like a CSS file. But yeah, so I have Pandoc.
00:54:35 - Anthony Campolo
I've never used that before.
00:54:36 - Chris Ferdinandi
Well, if it's helpful to you, I have an ebook boilerplate on GitHub that you can just copy paste. I think a couple of dependencies need to get updated because. No, but it's got a simple kind of like one liner that you can use to take those files and spit out like a finished book. Which is nice.
00:54:56 - Anthony Campolo
It's very nice.
00:54:57 - Chris Ferdinandi
Yeah, yeah. And then you can tweak it to your desire. But it works out well for me because I have like a shared like all of my books have the same about page. There's no need, I need for me to recreate that for everyone. So like you can pull in files from different places and like mash them all together and it works out really well. And then I take the finished ebook and source code and use that as like a loose script for the video portion which I host on Vimeo. And then I built my own course portal to actually give people access to all these things to download their books and stream their videos and so on. One of the things that's really nice about Vimeo is you can both control the branding of the player and customize or control where it can actually be embedded. So you can restrict it to just certain domains. And I wrote this janky little thing that takes the download file link for each video and rips the like the video ID out of it and then generates the Eden or the iframe for it and then also creates a download link underneath it so that you get this like nicer like you can download it for offline or stream it directly on the site kind of situation.
00:56:16 - Scott Steinlage
That's nice. Have you thought about doing mobile first for that type of process for. Because I know a lot of people consume things courses on their mobile as well, but I don't know. Just thinking about it.
00:56:27 - Chris Ferdinandi
Yeah. Say more about that. So like, the whole, the whole site is, is responsive?
00:56:33 - Scott Steinlage
Yeah, I guess.
00:56:33 - Chris Ferdinandi
I mean, yeah, you know, mobile first. But do you mean, do you mean something different by mobile first or do you.
00:56:38 - Scott Steinlage
I guess, I mean. Yeah, I mean, I understand the responsive piece of it, but as far as like the UI UX, like piece even more specifically, I. I don't know, maybe, you know, sometimes the UI UX looks great, but then when you have it in responsive and it brings it down or whatever and it doesn't necessarily work as much.
00:56:56 - Chris Ferdinandi
Oh yeah. So I am, I. I boost the font size on most of my recording. Like the text editor is like comically. It's uncomfortably large to work with when I'm recording and I do that specifically because I know a lot of people watch them on their phones and I want to make sure it's actually like readable.
00:57:13 - Scott Steinlage
Right. Cool. So you are thinking about these.
00:57:15 - Chris Ferdinandi
Yes, I, I forget the exact like, I have it like saved somewhere. Every time I go to record, I'm like, all right, boost the font.
00:57:22 - Scott Steinlage
That's awesome. Yeah, Vimeo is really good too. I mean, back when I was at ClickFunnels, we used click Funnel. We use Vimeo for hosting a lot of like. And, and you know, whenever I coached people on how to. How to create courses and things, it was definitely always recommending Vimeo for stuff that you have inside of a course, if it's outside the course just. And you're just using it for marketing purposes. Things that use YouTube.
00:57:45 - Anthony Campolo
Right.
00:57:46 - Scott Steinlage
But yeah, that's kind of our go to. So. And the control is just amazing of things you can do.
00:57:50 - Chris Ferdinandi
Yeah, for sure.
00:57:51 - Scott Steinlage
So for sure.
00:57:52 - Chris Ferdinandi
Cool. It's. It's money easily spent. It also means I don't have to deal with hosting large video files or. The other thing they do really well is.
00:58:01 - Scott Steinlage
So you stay at $5 a month on here.
00:58:02 - Chris Ferdinandi
I do. They. They do a great job of adjusting the, like doing bandwidth. Aware streaming. Right. So if you want to like a bad connection or a smaller screen, they're not going to send a 1080p, like video file to my tiny little, like mobile screen.
00:58:19 - Scott Steinlage
Yep.
00:58:19 - Chris Ferdinandi
Which is super nice.
00:58:21 - Scott Steinlage
Super awesome. That's cool.
00:58:23 - Chris Ferdinandi
Yeah. So that's, that's for the most part the stack.
00:58:25 - Scott Steinlage
We picked your brain a lot.
00:58:27 - Chris Ferdinandi
Yeah, a lot of brain. I enjoyed that. This is great.
00:58:30 - Anthony Campolo
Yeah, no, this is super fun, man. Thank you so much for joining us. We have so many links and things for our viewers to check out and I think we pretty much covered the gamut of how to find out more about what you're doing. And yeah. So people check out the show. Notes will be down here.
00:58:49 - Scott Steinlage
Yes.
00:58:50 - Anthony Campolo
For the things you want. And. Yeah, thank you. I see you popping in the ebook boilerplate there as well. I'm definitely gonna check that out.
00:58:57 - Chris Ferdinandi
Yeah.
00:58:57 - Scott Steinlage
That's awesome.
00:58:57 - Chris Ferdinandi
Yeah, thanks for having me. This is great.
00:58:59 - Scott Steinlage
Thank you so much, Chris. Appreciate you and all the work you do and look forward to seeing all the new stuff that you're coming out with. And also wishing you the best with this new thing that you just started. So, yeah, really cool and exciting.
00:59:15 - Chris Ferdinandi
Thanks so much.
00:59:17 - Scott Steinlage
All right, everybody go check out leanwebclub.com and hopefully there's a seven day free trial there soon.
00:59:25 - Anthony Campolo
All right. And we'll catch you on the next one.
00:59:28 - Scott Steinlage
We'll see you in the next one. All right, guys.