All blogs / Software / engineering practice
will-keleher.com
Posts on software engineering – engineering culture, system legibility, and performance.
Software / engineering practiceTesting / QADevOps / SRE / infrastructureDatabases
- Posts
- 61 from 12 Jul 2021 to 12 Aug 2026
- Posting
- weekly (29 in the last year)
- Kind
- personal blog
- Feed
- https://will-keleher.com/feed.xml
2026 28
- That Test isn't Flaky. It's Broken.
- Backfills should fail in minutes, not days
- Your dashes suggest which model you're copy-pasting from
- An Opinionated Guide to Post-mortems
- ChatGPT Images 2.0 Still Can't Draw the Seven-legged Spider I Want
- You should read at least one job-related book a year
- REPRODUCE.md
- Telling a Computer to Do Things
- Don't Forget to Set EDITOR and VISUAL
- The Post-mortem Spectrum
- Small Programming Tricks
- You're already running canary servers
- and these screenshots prove i did it
- this css proves me human
- Ratcheting SQL Queries: reducing a database's load by 1/4th with a simple change
- Script Your Code Migrations
- An Elegy for my Beloved Slow Query Logs
- Store Every Request
- More Shell Patterns I Use Weekly
- Nano Banana 2 Partially Passes the Seven-legged Spider Test
- (Almost) Every table needs `request_uuid`
- CSS Tweaks for This Site That Make Me Happy
- Literal and Optional Parameters Can Make Code Hard to Read (in TypeScript)
- How I Review LLM-generated Code
- It's 2026, and I'm still leery of using LLMs to generate code
- You probably don't need `find`
- Three Technical Tricks for Non-technical Writers in Google Docs
- Useless shell commands
2025 9
- Why doesn't MySQL's query planner rewrite some `ORDER BY.. LIMIT` queries to use a `UNION` strategy? No clue.
- A one-table SQL query will often use a single index
- You should lint your TODOs
- You probably want some parts of Lodash
- Draw a Silhouette of a Spider Missing its Front Left Leg
- Brownbags shouldn't be lectures
- I avoid easy things I haven't tried
- Why I avoid test stubs in TypeScript
- Most engineers have git aliases; what are yours?
2024 4
2023 2
2022 9
- So, what can you do with a process ID?
- Why does `zip(*[iter(s)]*n)` chunk s into n chunks in Python?
- Culling Containers with a Leaky Bucket
- Setting up Image Previews using Puppeteer, Make, and CSS transforms
- Writing FizzBuzz in MySQL 5.7 for no good reason
- Using NodeJS's AsyncLocalStorage to Instrument a Webserver
- Large Analytics SQL Queries are a Code Smell
- Shell Patterns for Easy Automated Code Migrations
- Red and Blue Function Mistakes in JavaScript
2021 9
- Slack is the Worst Info-Radiator
- Bash Patterns I Use Weekly
- Canary Containers at ClassDojo in Too Much Detail
- MongoDB Performance is Disk-graceful
- Node's `AsyncLocalStorage` Makes the Commons Legible
- The 3 things I didn't understand about TypeScript
- HyperLogLog-orrhea: how do HyperLogsLogs work?
- ERROR, WARN, and INFO aren't actionable logging levels
- Graceful server shutdowns behind HAProxy