Bootstrapping and Inventing
Welcome to another issue, and thanks for taking the time to look at some interesting content with me!
Recommended Reading and Videos
Nathan Barry on Bootstrapping a Business
Nathan Barry of ConvertKit is a repeat speaker at MicroConf, a conference mostly focused on building SaaS businesses without VC funding.
Zero to $5,000/Month: Lessons Learned Bootstrapping a SaaS App is from 2013 and since then much of what Nathan discusses here has become common practice. But it’s still a great quick overview of how to gather attention for your business and see if people will actually pay for what you are making.
The 3 Tactics ConvertKit Used to Add $135,000+ in MRR in 1 Year came a few years later, and Nathan covers techniques that worked for actually marketing his business and getting customers once he decided to take it seriously.
Each of these talks is about 12 minutes long, and well worth your time. Nathan has appeared at MicroConf more than just these two times, but these are the ones I watched so far. Given the quality of these videos I’m guessing the others are also quite good. The MicroConf Youtube Channel has plenty of talks to go through from Nathan and many others.
Inventing on Principle
This talk by Bret Victor is a demo that looks at new, better ways to create. The main idea here is fast, bidirectional feedback between making a change and seeing what that change does.
When you change something, the output changes immediately, and when you click on something in the output, you can see where in the code that thing was generated. This and other techniques combine into a much more intuitive creation process than we’re used to, one that enables discovery and serendipity instead of endless number tweaking.
I can make these changes as quickly as I think of them, and that is so important to the creative process. To be able to try ideas as you think of them. If there is any delay in that feedback loop, between thinking of something and seeing it, and building on it, then there is this whole world of ideas which will just never be. These are thoughts that we can’t think.
Nine years after this talk, much of what Bret showed here has not made its way into the mainstream coding world. Of course, there are a lot of challenges in taking the things he shows in this demo and making them work in a more general case. Still, Bret is a good source of inspiration. His website worrydream.com (warning, no HTTPS but that’s ok) has plenty more.
James Clear, author of Atomic Habits, has also kindly published a transcript of this talk.
Idempotency Keys
This article by Brandur Leach is about techniques for making complex API operations more robust against failure. Everything a function does inside a database transaction can be reversed easily in case of failure, but as soon as you need to talk to external services, more care is needed.
Since Brandur works for Stripe, a lot of his examples focus on payment systems.
Charging a credit card is not an idempotent operation; that is, doing it multiple times is definitely not the same as doing it just once. So when Stripe receives an API request to charge a credit card, they need to make sure that it only happens once, even if the client asks multiple times. This can happen when network conditions are poor, or for other reasons.
Operations such as this can’t be made inherently idempotent, but they can have the client send an accompanying unique ID to track the operation. The server can then see if an operation with that ID already exists, and act appropriately.
The article also covers techniques for managing failure in operations that need to both talk to your database and to external services such as Stripe. This includes tracking the stage that the operation was in and resuming from there, and moving tasks to background worker queues, which will have their own separate retry mechanisms.
Overall this is not a topic that most simple CRUD applications will need to tackle, but if the day comes that you do need these techniques, this article is a great start on how to do it right. I’ve also published my notes in case you want the quick version.
What I’m Working On
I wrote Coordinating Multiple Elements with Svelte Deferred Transitions, Part 2, which covers Svelte deferred transitions that handle multiple elements transitioning together.
Last year I read the book Shape Up about how Basecamp does their product management, and after hearing it mentioned on a podcast, I wrote up my notes for all to see.
Not much else over the past week. I’ve started reading SQL Antipatterns and Designing Data-Intensive Applications. Both are excellent so far and I’ll share my thoughts once I get further along.
If you enjoyed this, I’d love if you share it with a friend (sign up here) or just reply to this email with your thoughts. Thanks for reading!