Mastering JS is Now on Substack
Welcome to the new Mastering JS newsletter! First issue on owning your content, SEO, and what's AI good for?
Hello, world! The Mastering JS mailing list has been very quiet recently. Part of the reason is that we've been busy shipping more code than ever. Another part of the reason is that our previous newsletter was on Revue. Long story short, Revue was acquired by Twitter; Twitter first made Revue free, then shut down Revue for not making enough money.
Own Your Content
The Revue shutdown was a significant hit for Mastering JS. And not because of the fact that we nearly lost our entire mailing list (we didn’t even know Revue was shutting down until a week before!). Mastering JS’ organic traffic took a meaningful hit immediately after the Revue shutdown.
Why? Because, no matter what SEO gurus that sell $1000 courses but have no high ranking sites of their own tell you, links are king for SEO. “Quality content” is important, of course, but if you write the next great novel and nobody links to it, Google isn’t going to rank it.
And Revue was a big source of high authority links to Mastering JS. Once those links went away, Mastering JS took a hit in rankings.
The lesson? Keep your best content on a domain and a platform where you have control. If you’re serious about writing, you should put your core work on your own platform. Not on Wordpress or Medium, or even Substack. Tools like Medium are for highlighting your work and providing more insights to people who love your work. But the core work itself is too important to leave on a platform where it is just a tiny sliver on a chart in some VC pitch deck.
For example, Mastering JS’ tutorials are all stored in a public GitHub repo. Even though we lost our Revue links, at least we didn’t lose the content that Revue was linking to.
While it is unfortunate that Mastering JS’ traffic has declined, we’re looking at it as an opportunity to try new things with Mastering JS. The hidden downside to things going well is that you’re naturally going to be more risk-averse. Why rock the boat when the graph is going up and to the right? On the flip side, a minor downturn can be just the kick you needed to try something different. On that note:
AI: What is It Good For?
Last week, we shipped an AI-backed tool for converting callbacks to async/await using ChatGPT 3.5. The code for this tool is available on GitHub, and deployed using Railway.
We’re getting into AI for a several reasons. First, AI opens the door to building a new generation of developer tools, things that would have never been possible before. Second, we’re helping our friends at Stratos with their AI advertising and analytics dashboard, and Mastering JS tools are an excellent opportunity for dogfooding.
But why converting callbacks to async/await? Because that particular problem is what made AI click for me. Converting a couple of code snippets to async/await is easy. But what happens when you have hundreds of tests to convert to async/await? Do you spend a week in deeply focused refactoring work? Or do you use AI to refactor one test at a time and just rely on the human to verify the result, getting the work done an order of magnitude faster?
Callbacks to async/await is a good task for AI because it is:
Sufficiently simple that a human can both do the task and verify the result easily
Sufficiently complex that a simple find-and-replace or regular expression won’t work
Sufficiently low ROI that you don’t want to write a syntax transform that does just that
Right now, in my experience, AI generally isn’t capable of doing very complex tasks. ChatGPT can’t write a Babel transform to convert callbacks to async/await last I tried. But it is capable of doing a wide variety of simple tasks very quickly.
Computer programming is the art of breaking large, complex problems into smaller, easier to solve problems. And AI is just another tool that can help you solve lots of small problems faster. AI won’t replace the need to convert large problems into smaller problems. But if you can find a case where you need to solve a bunch of repetitive small problems fast, AI is great for that. So next time you find yourself facing a long and tedious task, think about how you can break it up into smaller tasks that you can ship to an AI.
Our Most Recent Tutorials
What We’re Reading
Prompt Engineering: Great tips and tricks on how to write prompts that get the right results. #1 takeaway: provide an example
QuickChart’s Documentation: We’re excited to tinker with QuickChart. They solve a surprisingly difficult problem: converting ChartJS charts to images. They also have an AI-based chart maker.
Marqeta’s Documentation: An inspiring example of how to build good API docs. In particular, the in-line API widgets that let you execute requests to walk through the setup process are great. The auto-generated CURL requests are also excellent.