:studio_microphone: This post has audio narration

After joining my last Ruby on Rails project as a software developer, I wanted to see if I could quickly deliver some easy wins before starting any more difficult work. So, I decided to give my client’s web application a “technical audit”.

I had done this kind of thing before on other Rails projects, but that had been many years ago, and I can barely remember what I coded last week, let alone all the steps on some check-list I wrote in the ancient past.

Luckily, past-me apparently had the enormous foresight to write up all the steps he thought of in a post on a previous employer’s blog: Profile Your Future App.

Some of the content is a bit outdated as of this writing, particularly with regards to a few of the external services it references (which is unsurprising, given the dynamic nature of tech), but I was able to leverage a good deal of the post’s content to improve the quality of the application I was working on, without having to reinvent the wheel (and maybe some other web developer might, too).

So, thanks past-me, ya did good! As you figured stuff out, you wrote it down, and it paid future dividends: a beneficial and repeatable process that anyone can do for themselves.

That’s it. That’s the lesson. Thanks for coming to my TED blog post.

Now you, the guy writing this sentence: you reckon you can take your own advice and keep this up?

Happy 50th Postiversary

It has only taken over 5 years of writing, at the cracking average speed of less than one post per month, but you are reading this blog’s 50th post. In muted celebration of this extremely modest achievement, I thought I’d mark the occasion with a retrospective.

My initial reasons for attempting to kick-start a blog (after failing once before) were:

  • Using it as a knowledge repository: get stuff out of my head and persisted somewhere else, so I could “confidently forget” it until (maybe) future-me needed it again
  • The intrinsic value of being able to share knowledge with others, in hopes that they, too, can benefit from it
  • Get better at technical writing, and writing English in general
  • Directly receive reputation-building SEOlink juice” for stuff I write, rather than just give it away for free to other third-party sites (though these days I guess all original content is just info-chum to be ravenously devoured and digested as training data by AI chatbots, so who knows if creators will receive even a sip of whatever ends up substituting for link juice…)

How did all of that go? Below are the results of my Omphaloskepsis Report, though the TL;DR could be summed up with this tweet:

“deeply disgusted to discover that in order to get good at a thing I have to do it badly first” — Meg Elison (@megelison)

What was Done Well

man in black t-shirt and blue denim jeans riding motorcycle on road during daytime
Photo by Nils on Unsplash

I’m going to consider “well” in the subjective: how I generally felt I benefitted from writing the posts up to now. If I was going to attempt to consider what was done well in the objective, then all signs would point toward a complete pivot to only ever writing about Doom on macOS in the future.

Google Analytics page views for my blog
Doomguy chugs more than his fair share of SEO juice

I may really like Doom, but I don’t want to do that. So, I’d like to have a list of positives for future-me to look back on: help keep my motivation up to continue writing about potentially niche topics, especially when vanity metrics show low levels of reach and impact for a particular post. Here’s what I came up with.

Certificate of Participation

Framed against a digital wasteland of abandoned blogs, I give myself a light pat on the back for demonstrating enough grit to actually ship fifty posts worth of content to the internet.

There were plenty of times where I just did not want to start, or continue, writing a post. Mustering up the enthusiasm, or summoning enough stubbornness, to persevere in the face of any other reason I could think of, personally beneficial or not, has been tough1.

I don’t advocate continuing to pay sunk costs where there is no benefit, but even if no one reads this, or any of my other posts, I know I get at least some kind of immediate fixed value from finishing a post (even if just a dopamine hit), and then hopefully some kind of variable value in the future (it gets picked up by an aggregator, or future-me re-reads it etc).

Speaking of aggregators, these are the ones that picked up one or more of the previous posts from this one, and provided nice spikes in readership (and some warm fuzzies for me):

Source Links
Elixir Weekly 8
Elm Weekly 3
Plover Blog 3
Elixir Radar 1
GraphQL Weekly 1
Hacker News Blog Newsletter 1
Ruby Weekly 1
Test Automation Weekly 1
Total 18

Two of the Elixir Weekly links are from the same article, but in different newsletters, giving a hit rate of about 34% of the posts being apparently deemed worthy enough to share widely: not a huge number at all, but I’ll take it over zero!

Idea Pipeline

In order to combat the classic “I don’t know what to write about” problem, that serves as a convenient escape hatch to avoid expending any effort at all, I made sure to create an easily accessible place where ideas could be stored, as close as possible to the time they appear. I use Trello boards and cards for this, but any tool, digital or physical, would work fine.

An idea may just be the title of a post, a theme, keywords, random thoughts, or a fully fleshed out plan: whatever information happens to come to hand, it goes in the idea bucket. I may not action an idea at the time it materialises, or in the next few months, or even ever, but they are there to be referenced whenever it comes time to put text to web page.

Forgetting some ideas, because I did not put them anywhere when they came up, was painful enough that even if I am in the middle of doing something else, I will make sure to put something down to follow up later. So, there is never an issue with what to write about, just the hard stuff about how to allocate the time and effort to actually do the work.

Deep Diving

Writing about certain topics forced me to attempt to really learn about them in detail. No self-imposed deadlines meant I would often happily abseil down every rabbit hole I encountered, and attempt to be as thorough as possible in surfacing information for posts.

This could sometimes make writing a post feel like maintaining a long running Git branch in a codebase. All the voluminous information editing, shuffling, and moulding needed in order to attempt to create a coherent narrative could be taxing, and there were many times where I just wanted a post to hurry up and end so I could finally move on to something else.

However, the goals of making a post a one and done exercise, and future-me’s single point of reference for a topic2, enabled me to keep trudging forward, even when it ended up taking months of preparation. Most importantly, especially given the effort expended, I’m happy overall with the way that the posts have turned out, even the ones that were so niche that their audiences were tiny3.

Stories and Narratives

Many of my posts have revolved around explaining the processes of how to use some kind of technology, show off a thing, or provide some kind of subjective advice. As well as scratching an itch, justifying the time and effort it takes to write these kinds of posts is easy within the context of being relevant to my profession or interests, and helping out future-me.

However, I have also found great benefit in writing posts that just tell a straight story. These posts4 never really get much traction in analytics — I guess they are not considered as “useful” as how-to guides — but as well as being personally fulfilling to write, I believe they have helped lift the narrative quality of other posts.

Obviously, I never set out to write boring or dry content, but I do feel that writing stories has been able to positively influence the structure and word smithing of other more prescriptive posts, and make them more interesting to read (or, at least it has for present-me looking back on them).

So, in an attempt to get better at writing, and improve my blog “voice”, I plan to pepper in more story-based posts to counterbalance the hardcore technical-based ones.

Blog Tinkering

Software nerds love to tinker, and this blog has provided ample opportunities for that. From changing the theme, setting up and integrating a mailing list, and overriding Jekyll templates to get pages looking just the way I want them to.

The (sometimes painful) journeys that making those changes took me on either became posts, or are in my idea pipeline for future posts, creating a virtuous circle of content generation. Jekyll may not be the coolest blog kid on the block, but there are enough people using it that someone out there will have a similar problem to one that a post addresses, making its creation worthwhile.

Guest Posting

Although I mentioned earlier about wanting to keep SEO link juice to myself, there are times where I think it is worth giving it away to get your work in front of an audience you do not have, yet want to reach, in order to accomplish some goal.

Back in 2021, I reached out to ZSA to ask if they would consider supporting QMK stenography keys in their Oryx keyboard configurator. I hoped that by doing so, the barrier to entry to use stenography on their popular keyboards could be significantly lowered, encouraging more people to give it a try.

I showed them my Starting Stenography with an Ergodox post, which led to collaborating with the ZSA team over the following few months during development of the feature, and culminated in writing its announcement post: Stenography with ZSA Keyboards: A Tutorial.

That whole process was a lot of work, potentially benefitted(?) a for-profit company, no compensation was asked or offered, and, of course, I get no direct link juice (though I did make sure to relevantly link as many of my own posts in it as possible without being spammy [I hope…]). But, getting steno out into the minds and hands of a wider audience than I ever could by myself was the overarching goal, and I think it succeeded there, making the whole exercise worthwhile. I am also proud of the end result, and collaborating with the ZSA team was a really great experience.

I do see doing something like this as the exception, rather than the rule, though. I have been approached by other organisations about writing for-pay articles for their blogs based on what they have read here (which, in itself, is flattering). But, the numbers offered just do not personally justify the sheer amount of effort required for creating what I consider a good technical post (not just the writing, but likely also development of complimenting assets like working software programs and videos etc).

This means I would rather not get paid, and keep a post on my blog in order to maintain ownership, than sell it for some going rate. I definitely consider this a luxury5.

What could be Done Better

Not everything in the competitive and glamorous world of writing personal blog posts is glowing praise and fawning over your words. Things can go wrong, opportunities are potentially missed, and sometimes unwitting self-sabotage takes place.

Here is a selection of points where I am cognisant of some kind of shortcoming, though I am sure there are more I have just not noticed (feel free to bring any others to my attention).

Cadence and Releasing

I write posts on a very sporadic schedule. Regardless of having an idea pipeline, my urge and ability to write fluctuated significantly: some months I would be blessed with periods of extended flow, and be able to release up to three posts — others, zero (and sometimes that drought could last for many months, like the massive gap between this post and the previous one).

On those months where I was able to write multiple posts, in my rush to get them out the digital door and off my plate, I would sometimes release them on consecutive days, giving the initially-released post no room to “breathe” before the next one barreled through. I do not have any evidence that this resulted in either post losing any short-term readership, but I think there may be the potential for that. Therefore, I do not intend to do releases in quick succession again, unless there is a compelling reason to do so.

Much like I have an inbound idea pipeline that stacks up and waits for me to action them, I now understand that having an outbound post pipeline is just as important, in order to give the impression of having some sort of cadence, and buy me time when flow is in short supply.


When I release a post, my next item of business is to try and get people to read it. I currently do this by:

  • writing out a short message to send to my mailing list members
  • posting links to social media: specifically, Twitter, LinkedIn, and Facebook

Different kinds of posts seem to resonate with people on different platforms: tech posts seem to get more traction on Twitter (aggregators are especially more likely to pick them up if they are hashtagged correctly), while personal stories get more interaction on Facebook, where people tend to know me personally.

Promoting to these places has generally been fine, but I wonder whether I am missing out on promotion opportunities by not also aiming at more specific targets like relevant Reddit subreddits, Slack/Discord communities, LinkedIn groups, or maybe even Hacker News.

I am sure many of these communities will have their own rules and etiquette around sharing self-serving content, possibly including being a regularly contributing community member (or maybe they just outright ban it). I do not want to come off as a spammer or leech, so I will have to overcome my laziness and figure out if any avenues are open to me here, and pick ones that seem the most appropriate.

Regarding the mailing list, it is very subtly shown on the page, and although options like having some modal window pop up and shove it in your face are available (something that apparently has been shown to increase conversions), I know I hate them, so I will assume you do as well, and, therefore, that is not something I would consider.


This blog currently uses a theme: Minimal Mistakes. I have benefitted significantly from having it, as it takes care of all the stuff I am not good at, like design. However, much like all sites that use themes, this blog looks really similar, if not the same, as other sites that also use the same theme.

This issue is not hugely painful for me right now, since I am more focused on just writing content, but it would be nice for this site to have at least a bit more of a unique skin. I do feed myself by creating websites after all, but my viewpoint on this blog using a framework (Jekyll) and theme has been “why re-create the (blog framework/CMS-shaped) wheel when I can leverage the good work of others?”. Maybe I just need to do some more interesting customisations within this sandbox before investing the time and effort in doing a re-write.


As an experiment, I decided to try adding voice narration to some of my posts. Personally, I got a kick out of doing them, but their YouTube metrics would seem to indicate that they have been greeted mostly with crickets6.

This is not surprising at all, and matches the expectations I had for it. By all accounts it is a failed experiment, but regardless of that, I am going to keep doing it.

Aside from it being fun, I did get some feedback from a non-native English speaking peer, who said they used them for listening practice, which I was thrilled by! It just goes to show that your users will consume your content in ways that you will not expect!


Every time I look at the “Pages and screens” report on Google Analytics, I always see, for every page, a display of “Total revenue: $0.00”.

Google knows I do not have ads on any of my pages, so it could choose to just not display this information, but it does anyway. Of course, this has the likely intended effect of making me think that Google sees some wasted potential, and perhaps I could make some pocket money from my posts, even if just the Doom for macOS one.

However, consulting my blog bible, Technical Blogging, Second Edition, helped give me some clarity by providing a bunch of tips that brought my monetisation ponderings crashing straight back to earth, including this one that stops me dead in my tracks:

Don’t place ads on your blog until you have at least 10,000 pageviews per month.

My best single page is but a tenth of that, with the rest not even worth a mention. Even if I did reach that goal, the risk/reward ratio of running ads, particularly against a technical audience, would seem to skew heavily towards continuing to blog just for fun, which is fine by me.

Actions for Improvement

After all this reflection, I think the best actions I can take for improvement are the following, in order of priority and immediate impact:

  • Space out post releases by at least a week
  • Establish a regular blogging habit, plan for once a month
  • Attempt to submit a post to at least one social network I have not used before
  • Increase the ratio of narrative-based posts
  • Maybe consider revamping the site, if I have nothing better to do…

Here’s hoping that it yields results of some kind. Did I miss anything? I love feedback, so let me know!

  1. This post was started on September 9, 2022, and has been one of the grindiest posts so far: delayed for some good reasons, but also procrastinated on for a bunch of excuses. Self-reflection is quite hard, it would seem. But, I made a pact with myself: I cannot proceed with any other post, no matter how interesting or timely, until this one gets out the door. 

  2. Except for the times I would write about the same tech in multiple languages… or when some tech went through a major version upgrade… or when writing about two sides of the same topic… or when the topic was just too big and needed to be split into multiple parts… so, I made peace with embracing the meta, and allowing the posts to rhyme sometimes. 

  3. There were times where I would want to make changes to a post after publishing, from minor typo fixes to more major updates involving significant amounts of content. So, even if I was not happy with a post, just because it is on the internet, does not mean it cannot be iterated on (however, I tend to consider posts with audio narration, like this one, frozen in time upon release so that voice and text always match). Anyone actually interested in seeing what a post looked like on its first release can just trawl through the blog’s commit history

  4. Posts like A Person’s Character (人という字は), Mum’s Meetup, and “Welcome back”

  5. Which sounds very lofty; more realistically, though, the first-world problem is likely to be that the going rate is just not high enough for me, nor others I know who work in information technology that have their own blogs and share this view. This is also probably reflective of my limitations as a writer: if I was faster at generating content, and could pump out articles easily and naturally, then the time spent to going rate compensation ratio might look more enticing. 

  6. As of this writing, the top narration performer has a whopping 7 plays, while the least popular one languishes at 0 plays. 

Leave a comment