Hi. I’m Will. I spent more than a decade at ClassDojo, most recently leading platform engineering, and I’m currently figuring out my next role. Much of my writing, even my fiction, is about legibility: what it takes to make a system understandable and easy to change.
Observability and Performance
We spend more time trying to understand systems than creating them in the same way that we spend more time reading code than writing it. Despite that, many teams under-invest in creating systems that are easy to understand and debug:
- Slow query logs are one of my favorite tools, so I wrote an elegy for them after moving a database to PlanetScale, which doesn’t support traditional slow query logs.
- Correctly categorizing logs is a key part of making your logs/traces a useful debugging tool.
- Many teams store every request that hits their systems to make debugging and analysis easy.
- Once you store every request, adding
request_uuidto every table unlocks even more value. - In NodeJS,
AsyncLocalStorageis a great tool to set up an AsyncLocalStorage-backed tracking middleware and use it to generate detailed per-request performance reports and alerts.
If you have good observability tools in place and understand the basics of performance, scaling is usually straightforward. One thing that trips some engineers up is fuzzy mental models for how databases work:
- Indexes are sorted arrays (sort of) and A One-table SQL query will often use a single index are posts about building a good mental model for how databases behave.
- MongoDB Performance is Disk-graceful talks about the importance of controlling on-disk data layout.
- Ratcheting SQL Queries discusses taking advantage of your knowledge of data characteristics to beat the query planner.
Engineering Culture
Engineering teams should get better over time, and a key piece of that is creating an environment where engineers can master the domain they’re working in.
- It’s not worth the time yet, Small Programming Tricks, and Brownbags shouldn’t be lectures cover some of my thoughts about creating an effective learning culture for an engineering team.
- Regular post-mortems are essential to improving practice and process over time; An Opinionated Guide to Post-mortems and The Post-mortem Spectrum cover how I think about them.
Agentic Engineering
I’m most excited about the potential of agentic engineering to allow teams to write better, easy-to-maintain code that makes an engineering team fast over the long-term. Because teams are generating more code and changes, system legibility and observability are even more important today than they used to be.
- It’s 2026, and I’m still leery of using LLMs to generate code discusses the times when I avoid heavy agentic development.
- Reviewing LLM-generated code talks about the changes I made to how I review LLM-generated code compared to reviewing the code of a peer.
Creative Writing
- this css proves me human and its followup and these screenshots prove i did it are prose poems about AI, writing, and proof. this css proves me human reached #1 on Hacker News: discussion
- REPRODUCE.md is a literary sci-fi short story that explores themes of self-knowledge, mutability, and AI behavior.
- Mistwatch is a high-fantasy novel set on a mountain-sized tree above a corrupted world.