August 6, 2019
Cancelling Project Eyeglass.
I wrote a couple weeks ago about Project Eyeglass, my attempt to build out an administrative metrics dashboard for Buttondown. This was going to give me a more data-driven view into things I should be caring about at this stage, like growth and user activity over time.
I had lofty aspirations about building this from proverbial scraps in a proverbial cave; I found a couple nice Python libraries, I had some basic proofs of concept, and I was ready to get my hands dirty with data visualization.
…And then I found Redash, which just did all of this for me for the low price of $49/month (or free, if I get off my ass and self-host it.) Take a look:
I am so happy to actually have numbers for things like this! But something extremely concerning is that comically low amount of traffic to Buttondown’s blog, which brings me to…
(Not) blogging.
In a fit of inspiration on Sunday night, I rewrote Buttondown’s blog, converting it from Ghost to Jekyll.
This is almost entirely unjustifiable.
As I have opined before, rebuilding a blog is aspirational rather than pragmatic — you imagine yourself as the type of person to write, and to write well, and the only thing keeping you from that is a slightly different backend or CSS file or deployment strategy or whatever.
Still, let me try and justify it somewhat:
- I was literally not writing blog posts or marketing pages because it was such a pain to build out new features into the blog. Ghost is more akin to Wordpress, and the style of heavy-buildout and then maintenance mode; I need something on which I can iterate quickly.
- I wasn’t changing the design at all — just the production mechanism. This made it easier to work on and quicker to build; I wasn’t navelgazing in CSS, I was just transplanting a format from one tech stack to another.
- The entire thing took only two hours! This is due to my familiarity with the excellent Jekyll/Netlify stack and Ghost’s excellent offboarding features. (Offboarding is perhaps the most boring part of a product, and the thing that developers are least incentivized to invest in, and yet it is so important. I love that Ghost — which I still think is lovely — made me spend all of three minutes to get my data out and to cancel my subscriptions.)
Speaking of offboarding.
A fun mental exercise is: “what are the biggest potential risks to Buttondown’s stability?”
An example of one came in over the weekend, as one of the custom domains through which I send emails was blacklisted by my ESP for a high number of complaints (0.6%, or n=2). I can’t and don’t malign Mailgun for this — I’m happy they did it! — but it brought into sharp relief a failure point that I hadn’t considered.
The answer here is simple: you get alternates, because you should never have a single point of failure. The mitigation was simple — me emailing the account in question and telling them I couldn’t serve them adequately until I offered a second email solution (say, Amazon’s SES) — but the big picture question of being able to flip a switch and do this for all traffic is still looming. As I spend the last months of 2019 thinking more about stability and resiliency, this is sounding more and more like a good way to invest a dozen hours.