June 17, 2019
Sorry for the lack of missive last week! It was particularly hectic — my day job was a little more chaotic than usual, my bike was tragicly stolen, and the Seattle summer, with all its rooftop grills and public park 5Ks, threatens to swallow every iota of free time into its drooling maw.
Feature complete.
Panoply — my pretentious codename for multiple newsletter support — is launched. It’s not particularly active yet — I have a dozen folks using it, which is great, and I need to open the floodgates to more — but it’s causing only a few bug reports and not a massive amount of bug reports as I had feared.
I’ve joked about this being Buttondown’s last “big” feature for a while, and that feels…correct. I’m going to actively shift the next three months into three buckets of work:
Building a lean marketing engine. (Ugh, I hate using the phrase “marketing engine”.) How do I market Buttondown in a way that isn’t “hope people who are relatively influential talk about it?”. This is a solved problem — content marketing, SEO optimization, that kind of thing — but I need to find a way to do it under a couple of constraints:
- it needs to be something of a flywheel, that can grow and sustain itself without requiring too much manual effort (given my limited resources.)
- it needs to not be soul-sucking. I didn’t get into this project because I wanted to rank highly on Google for things.
- it needs to be financially reasonable. Buttondown is bootstrapped, and is profitable enough that I can divert some money into marketing, but this isn’t a venture capital situation where I can posture at “well hmm, if CAC is $150 and LTV over a few years is $200 that’s technically worth it.”
(The impasse I am at right now is that by far the most success I have had at marketing Buttondown is writing about it from a developer’s perspective, rather than from the product’s perspective: all of the stuff that exists on my personal blog. I have always liked that distinction — it seems like something of a purity — but it seems less and less reasonable as time goes on.)
Fixing the pointy edges. My personal heuristic for “this issue is bad enough that I need to spend time fixing it for real” is if I get more than five emails on it in a given month. (This is, perhaps, unglamorous and arbitrary, and I do indeed make lots of exceptions for things that I find particularly heinous or particularly easy to fix: but it’s the heuristic.). This leaves me with a laundry list of things that I know are bad but have not quite met the threshold of awfulness to necessitate fixing, like:
- Folks who configure custom domains with conflicting MX records that cause deliverability issues;
- Lack of observability into premium subscriptions;
- Increasingly sluggish API response times.
Now I get to tackle these! I like tackling these problems: they are abstractly satisfying to me in a way that feature development never is, pounding the rock until it becomes a sculpture.
Some design refreshes.. Two in particular: the writing view, which is still fine but has outgrown its meager <input>
and <textarea>
roots, and the Settings pages, which are now hellscape labyrinths of inputs and forms without much rhyme, reason, or unity. (I’ve got some mockups on the former and some ideas on the latter, and frankly I’m excited at the prospect of dusting off my design hat which has sat unused on the shelf for more than a few months now.)
Optimizing for iPad work. This is the weirdest one and also perhaps the one I’m most excited about. There are a handful of tasks on Buttondown that require me to use a computer, like:
- Updating a running cost
- Surfacing a new important update to users
- Running a helper script for a user
These are all fairly trivial tasks, but the fact that they require me to sit down at home and do them is non-trivial: I would love to move these things into the caste of work that can be done casually in a coffeeshop after work, as I go through emails and idly browse Pocket.
This work is dangerous, because it feels productive without being productive: spending thirty minutes engineering something that saves me five minutes every month will take half a year to bear fruit. But it’s also fun, and fun tasks are the easiest to complete.
Having some metrics.. There comes a time in one’s life where they decide that they need KPIs. (Or OKRs. It is unclear to me which three-letter acronym is the trendy one, the one that is actionable and just.). And, truthfully, these metrics will largely be vanity metrics: which is to use the ‘correct’ version of the phrase ‘vanity metric’, insofar as vanity metrics are metrics that don’t influence your decision making.
I don’t see there ever being a point in my life where I go “ooh, total subscriber growth is decelerating, I better fix that” — that’s not where my motivations lie. But there are certain things that I want to track and be easily, ambiently aware of:
- How many people are using the API? (Hint: right now the answer is far too low, relative to how much time I’ve spent on it.)
- What percentage of emails am I sending that come from free users, rather than paid users?
- What does my conversion funnel look like compared to a month from now?
Plus, I think building a metrics dashboard (“dashboard” is overly fanciful — this will probably be an iPython notebook or something) will be a fun and evocative exercise in of itself.
This week.
Last week I, frankly, got little done: like I said, bike theft, summer verve, etc. etc. That felt bad, though! Here are three things — all small, all granular — that I will be doing this week:
- Migrating the Running Costs page to be backed by the database.. This is very much in the vein of dessert work, but it’ll make end-of-month administrivia easier (currently running costs are backed by an increasingly gnarly
yaml
file.) - Improving how Buttondown renders and styles code samples.. This has come up a couple times and I think will actually be pretty trivial.
- Landing a change to migrate some user data away from the newsletter model.. This is a branch that has sat around for almost four weeks now, and it really just needs to be pushed across the line.
Stickers!
I ordered some stickers for Buttondown. If you want one, reply with your address!