Second order effects / grab bag
(A long overdue weeknote. The last two weeks featured a wedding and an impromptu trip down to Florida, so I haven’t had much bandwidth — thanks for your patience!)
The settings and sidebar are now live 🥰. The new writing experience is absolutely ready to be live — I am hovering my cursor over the metaphorical deploy button — but I’m holding off a little bit longer just to make sure nothing catastrophic appears on the settings or sidebar fronts.
The good news: nothing catastrophic has appeared yet. I am thrilled! It is very hard to change five-year-old code used by literally every user without imagining some very grim possibilities. There were some pain points, to be sure (I did a poor job of testing on some mobile breakpoints and in Firefox), but the vast majority of the feedback was positive and the most pointed critiques of the changes (“it is hard to jump between drafts” and “search is harder to get to quickly” are both things that I anticipated and will be fixed with future iterations.)
The funniest second-order outcome thus far has been an uptick in the number of people asking me to migrate them onto the new pricing from earlier this year; I didn’t actually change any logic here, but I moved the notice that has been live for a while from the Billing view to the top of the omnibus Settings view, which of course gets more traffic. This has overall been positive in terms of MRR, albeit in an unintended way; I am now even closer to unshipping the legacy pricing code, and tempted to carve out some time to just manually beseech the remaining few-dozen users to let me shift them over.
Beyond that, a grab bag of slightly entertaining points:
- I tried using Jasper.ai to help write a compete page. The results were unsurprisingly positive: compete pages, even ones that I spend a good amount of time on, tend to be banal and repetitive. LLM-powered prose also tends to be banal and repetitive. I plan on continuing to use this approach (early returns on the SEO front seem positive) but there’s no way to deny this is a tragedy of the commons situation: instead of maximizing paperclips we’re maximizing keyword hits on generic content.
- I’ve got two vague prototypes for ‘engineering-as-marketing’ projects — which is to say, two pieces of dessert work that I think I can slap a Buttondown sticker on and justify on the grounds that they’ll bring in downstream views. One is an
ec2-instances.info-esque tool for comparing both programmatic and non-programmatic email providers (which is to say: take the big YAML file with a list of twenty competitors and various booleans and turn it into a standalone website); the other, admittedly much more fun, is a CLI that generates Typescript-friendly routes based on a Django application. Neither of these are the best way to spend my marketing energy, but they feel pretty good.
- I set myself an explicit goal (…that is now under contract…) of launching basic teams support by the end of the year. I’ll be dedicating all of next week’s note to this effort, which falls squarely in the bucket of “slowly, methodically, and boringly unwinding silly choices made in 2017.” This silly choice in question was “determining the newsletter corresponding to a given internal request based on a session key rather than an explicit parameter”, which means I get to now touch every single API route in the application. (Fortunately, this is work that I’d want to do anyway in the fullness of time: amongst other things, it’ll let me create a better “demo” view of Buttondown, so you can interact with the interface without ever having to create an account.)