Year in Review 2024
Over-active side-projects.
January—March
Welcomed Ella to the team at CoverageBook, another Le Wagon graduate who moved to Brighton and emailed me for a coffee in late 2023. Initially joining for a short paid contract to give her some experience and us some extra bugsmashing firepower… come the end of the year Ella was still with us, still shipping and an asset to the team.
We also launched CoverageImpact, a fun little tool to encourage marketing and PR folks to look at the realistic results of their work. It’s been a good project for us to talk about trying to move the industry’s conversation about value rather than shrug and make spurious, unexamined , claims about “reach”.
At its most basic technical level it took a CSV and turned it into a bar chart and a correlated line graph, but it was a chance for us to test out some more modern Rails approaches that had bypassed us our more mature application, with a view to putting those techniques into operation in a busier, older, happily gnarly, application.
My personal plans for the year, to take it a bit easier on the extra curricular activities, were exploded when Ufuk asked for a call to “pick my brains” about RailsConf Detroit. A week later I was walking in the snow in Michigan. I have already written, at length, about that whole experience so no need to rehash here.
The Easter break at the end of March was family holiday time, in Costa Rica. Just a gorgeous country. Some slightly hairy driving on gravel roads made me glad we opted for the larger car, but we indulged in both coasts, rainforests and hot springs. Delightful.
April—June
Beginning of May was RailsConf which went off really rather well, I got to hang with the lovely Ruby community and eat exceptionally well. And vow to never run a giant conference on another continent.
My personal code contribution to CoverageBook continued to be a focus of reducing cost and rationalising our infrastructure, architecture and tools. Not the most thrilling work, but keeps us profitable, calm and if it’s not my job to watch the technological pennies, then who’s is it?
A brief spring house swap to rainy Yorkshire included an epic multi-hour walk through Wuthering Heights moorland, knee-deep in the spongy heather in sideways rain.
As a team we focused a lot on performance, and workflow improvements, enabling our biggest users to utilize ever larger and more complex reports. Again, not shiny features, but the everyday grind of running successful software people depend on.
We also worked on optimization of some key flows for first time and existing users to “fill out” features that feel like they should have always be part of the app. Again, not headline grabbing, but a long term software business is about steady improvement and bending the churn numbers down and the upgrade numbers up. The work of an established product in a contained niche is to persist against the inevitable mechanical drag of the SaaS model on the financials.
Emma left the team after four years and goes on to new adventures in hardware and TypeScript. We didn’t immediately rehire, and just lived with the new team shape, but come the end of the year we were once again looking for entry-level folks to join the team.
June brought another successful Brighton Ruby, I brought on some on the day help for the first time which I’ve probably waited too long to do. Having an events pro to help through the day meant all the little things that normally require exceptional effort to nail. Weirdly stress free as far as I remember. People seemed positive as ever, if folks continue to enjoy it… I’ll continue to do it.
July—September
Finally had less (first time) mentors than applicants for FirstRubyFriend. A shout out on social media brought in a large influx. I really need to automate more of this programme, it’s still me, a spreadsheet and manual matching.
The summer was spent working (aside from some intermittent days) but from the French countryside. My other half’s 50th and the financial benefits of house swapping meant we spent four weeks in the sweltering daytime heat and ate a lot of croissants.
I was also able to work, I’d get up early and have a good chunk of the day done by lunchtime. Even though we’re a remote team, the distance and the generally slower pace of our summer period (lots of holidays from the parents in the team) meant I was able to focus on the longer term. So I wrote up some of the principles behind current decisions and future direction of the product and technology at CoverageBook. Was clarifying for me but more for the wider team, sometimes it’s hard to look across a codebase and see “what was a good decision” and “what we need to change”.
Launched Using Rails. This was a project I’ve long felt needed building. Was also a chance to play with some newer Rails-y goodness. I also broke things that other, smarter folks, fixed.
There’s so many Rails-using companies, but the big US-based ones feel so permanent, unchanging, and omnipresent. But there’s a “lost middle” of CoverageBook-sized teams. Feels like there’s so much we could all learn from each other. Plus it’s useful to simply have a place to go and find the Rails-using organisations near you geographically for job hunting, social proof and sheer curiosity. “Found” up to 2,200 which is 50% more than the initial list I pulled together for the launch.
October—December
The autumn brings rain-soaked weekends of coaching (to average levels of success) my son’s U11 football team. A lot of the time it’s frustrating, but there are some moments of joy amongst the internal swearing. There was one astonishing match abandonment, where the opposition’s parents marched onto the pitch to swear colourfully at our players and abuse the volunteer parent referee. The FA’s investigation is ongoing!
Rails World: two words, tons of fun. An event delivered at a level I can’t fathom, Amanda continues to put together a joyous festival in our corner of the technological world. I had purchased a ticket, but won one to launch a podcast, I managed a couple of episodes on site.
The big conferences are always an exercise spending “not quite enough” time with folks I know well as well as exploring the city on foot. Splintered chunks of time with the splendid humans who make up our world and going to talks.
A hungover run with Miles. Spectacular party at Shopify’s Toronto HQ. Lovely chats with the Shopifolk, the Podians, the GoRails crew, various podcasters, AppSignal people, multiple book authors. Plus a bunch of time with Eileen and post event debriefing and decompression with Amanda. Even managed to catchup with my cousin, who lives and works in Toronto, before I left. Delighted to be able to get the train to Amsterdam next year. Maybe I have a talk in me.
At work we realized that in making it easier to add enormous amounts of coverage we’d exposed our bottom line to a pricing mistake we’ve been living with for years. This issue got worse the more extreme a customer’s usage was. We’re not just a pure software business, we have costs to serve (mostly APIs) that relate proportionally to the amount of usage our customers put through.
Typically as SaaS businesses plans increase there’s a discount in the “per unit” costs, unfortunately we’d crossed a line where we were paying some customers to use us. So in order for the business to remain viable for our biggest customers we made the difficult decisions to reduce allowances at the top end.
It was hard to swallow for us and then definitely for a vocal minority of our customers, but the right thing to do. We isolated our smallest customers from the changes but some 10% of our most avid users were hit the hardest. If we’d have carried on our smallest customers would subsidise our biggest customers; which didn’t feel right. And without the change, with increasingly voluminous users, we were putting our business at risk in the longer term.
The ability of a small(-ish) software product to continue to surprise me after more than six years is humbling. I don’t think we’re terrible at our jobs but there’s always the sense that there’s discoveries to be made about the folks we serve, the wider software environment and how we turn ideas and concepts into tools that means I’m never bored. Exhausted sometimes, yes, but never bored.
The last, and saddest, news of the year was hearing of the untimely death of Noah Gibbs, a lovely man and previous Brighton Ruby speaker. Always friendly. Always curious. Always encouraging. Always now missed. Launched an educational grant in his memory for getting folks in education a free ticket to Brighton Ruby.
Health
I’ve continued to maintain a regular pattern of gym-going, ankles-permitting runs (including the Toronto jog to the lake) and (very door shut) Apple Fitness+ workouts.
All this to manage my middle-aged decline and to enable my continuing playing of decent football with increasingly young opposition and teammates. It’s surprising how much of my general happiness is managed by that weekly kickabout. A minor ankle sprain was my only serious injury of the year.
Watched… Letterboxd
Nothing I’ve seen has come close to The Substance. A visceral, clever, interesting and wildly unsubtle film that spends the last 20 minutes escalating past perfectly sensible endings into absolute chaos.
A year of comfort rewatching. Delightful August bank holiday with my kids and the original Star Wars trilogy in the cinema. I also saw Aliens at the IMAX which is still the finest action movie ever made. Certainly wildly better than Romulus, which was a Force Awakens for Alien, but without the brio.
Rewatched a solid chunk of the MCU with my increasingly invested children and also a Lord of the Rings marathon (non-extended versions) over Xmas.
New things: Dune 2 was brilliant, Poor Things was wild and The Zone of Interest was brutal. All recommended.
Slow Horses continues to be lots of fun. House of the Dragon was somewhat glacial. Ripley and One Day made Netflix worth it.
Read… The StoryGraph
The Mistborn Trilogy was marvellous; cannot believe it hasn’t been plundered for TV or movies yet. Continued my holiday pleasure of grabbing and devouring a Jack Reacher or two.
Got blocked by the length of Amazon Unbound which while interesting just revealed that Amazon is exactly the sort of bleak, unrelenting, astonishingly effective organisation I imagined it was.
Played
Balatro: Just one more round (it never is). Fortnite continues as a familiar place to decompress (now with added offspring squadmates). Astro Bot was a total joy as was Cocoon.
Alien Isolation (only ten years late) on the Steam Deck, really holds up to modern standards and the film that spawned it.
I’ve bought more games in bundles and on sale than I’ll probably be ever able to play.
2025
Another Brighton Ruby. Of course.
More work on Using Rails.
I have a price comparison thing I want to put live from a small hobby I’ve been YouTube-holed into.
A season of the new podcast, What The Stack. I’d love to hear from technological decision makers at companies big and small about their thoughts on the infrastructure, software and teams they use to deliver useful things in the world. There’s not enough content from the weird middle-sized companies of the software world and how they make decision; the CoverageBooks, the Podias, the Buzzsprouts, the Flippers.
Finally transition First Ruby Friend into an automated platform (hello last year’s goal again!) and then expanding it won’t destroy chunks of my weekends.
Write more. My extra curricular projects meant a hiatus from my regular (only 3 this year) One Ruby Thing newsletters, but I have a handful half written. I’d like to get 20 out in 2025.
Last updated on January 5th, 2025