Tom MacWright


This will be three Recently monthly blog posts in a row, without a regular post in the middle. I’ll write a standalone post again, soon enough.


It’s been another busy year and I’m as aware as ever of the challenge of keeping all of my habits and outputs going. Some, like reading, are easy to maintain, but others, like writing, long-term projects, recording music, require focus and dedicated time that can be hard to track down. But I’ll keep fighting to keep these habits alive, always wary of prioritizing the mundane and waking up five years later having produced nothing really that useful.


A recurring theme in reading this month has been high-level thinking about ‘product.’

My friend Sam wrote about feature factories – the pattern in which startups build feature after feature in hopes of checking boxes for customers or finding features that really resonate. It’s a pattern I’ve encountered, identified, and complained about. But Sam reframes the feature factory as sometimes useful, when the impact of the features is measurable or the feature “bloat” is really part of catching up with established competitors to seem viable for customers.

It resonated with this interview of Elizabeth Yin I also read this month, about early-stage startup pivots:

Even when you have just two people, this type of pivot can be hard. I was the business founder and she was the technical founder. I think it’s a lot easier for the business founder to say, OK, we’re doing this other thing now. The technical founder who spent all this time building, now we’re throwing it out, and that’s always just hard.

Pivots and feature factories can both seem “painful” for the engineering side.

When you get into feature factory mode, it can seem to the engineering team that you’re building a bigger and bigger “surface area” for the website or app and probably spending less time making things robust, tested, or well-engineered. Building page after page, form after form, doesn’t make for especially compelling engineering work, and it inevitably comes with technical debt and feels like it’ll slow you down in the long run.

Similarly with pivots – throwing away your hard work to pursue a new business direction can be really disheartening for an engineering team. The code, and the understanding and mental model that came with it, took real effort to produce and pivoting means that we’re leaving that place of strength and going back out into the wilderness.

I’ve been in the role of “builder” at early stage startups a few times, so I have some wisdom here.

Ideally you’re 100% committed to what you’re building at the moment, but ready to abandon it whenever you need to. This can be tricky, and a lot of people end up at one extreme or the other. Some people churn through companies and projects so quickly that they no longer care whether something they built lasts, or even makes it out the door. Others get too attached to a particular project and feel slighted when the direction of the business changes.

The best business founders soften the blow by creating a narrative around the pivot and the situation in general that casts it in the best light. The pivot is always to some new, brilliant strategy that was discovered, not away from a product that didn’t work – though it’s usually both.


I liked Ross Barkan’s piece on What The YIMBYs Never Understand. Part of the difficulty of aligning with a movement like the YIMBYs, which I mostly do, is that you don’t get to pick your team and it’s a little awkward having Matt Yglesias on our team. Though I think he’s sometimes unfairly maligned – his books are pretty good – he writes a lot of strong and extreme statements that invite critique. And Barkan writes a fair and accurate critique of Yglesias’s pessimism around government intervention and rent controls.

A 12

Construction Physics is the gift that keeps on giving with its writing on titanium. It’s the perfect level of detail for me and this article connected my little bits of knowledge about the element into something more cohesive and engaging. I remember seeing litespeed bikes and thinking titanium is the future. Turns out that carbon fiber’s performance and cost of production, for bicycles at least, won the day.

Capital Without Borders was my favorite book this month. Harrington uses sociological techniques so effectively, while also researching the connected fields like economics and international politics well enough to tell a really compelling story.

Crabgrass Kingdom was pretty good, but I probably didn’t need to spend weeks reading it. The suburbs are bad.


A lot of albums dropped in the last few months. Here are bits of them:

Claud’s albums are remarkably dense: I think for both this one and the one that came before, they nail it on almost every track.

The new TV Girl is almost too kitsch for me, but it’s still chill and enjoyable.

The new ANOHNI and the Johnsons is my favorite yet – less on-the-nose topical than HOPELESSNESS, bringing back some of the full-band instrumentation from their earlier days, but with lots of great dynamics and vocals.


Asteroid City

Asteroid City is exactly the movie I expected to get. I liked it, in a way that made me feel self-conscious. I watched the new Top Gun later in the month, which was almost the opposite: ugly, with the cinematography of a Budweiser commercial. It made me appreciate Wes Anderson: it’s easy to parody such a strong aesthetic but at least it’s there. The commitment to the bit is almost funny but it’s good to have a bit, and not just average together all of the elements of the mainstream. There are only a few directors who I can identify from a screen capture alone: Hiro Murai being one of them. You’ve got to appreciate them.


I’ve got a few side projects going at the moment, as well as some improvements to Placemark. Placemark got upgraded to Next.js 13.

Bikeshare charts

I also shipped bikesharecharts, which gave me an excuse to play around with Rust, DuckDB, and Svelte. I’m also using Rust to make an updated display for my Tidbyt. I really like the built-in tools that Tidbyt provides, but the restricted environment of the pixlet software means that my existing setup is more complex than it should be – it involves a script rewriting another script.

It’s been mostly a joy working with Rust: I’ve learned not to worry about using .into() or mut, and the compiler’s error messages have gotten better and better over the years. The ecosystem is pretty good, and it’s been nice to discover that older Rust crates don’t bitrot as quickly as JavaScript: I don’t have to search for a crate that has types or ESM exports – if something was last updated a few years ago it often still ‘just works.’