Update for the week ending on Friday, Jun 5, 2026
mtlynch.io
- Worked on May retrospective
Refactoring English
- Published final chapter, “Respect the Reader’s Mental Bandwidth”
- Added new section “Prefer Subject-First Sentences” to “Eliminate Ambiguity” chapter
- Fixed a botched cross-reference from tutorials chapter
- Adjusted formatting of chapter summaries so they never split across page boundaries
- Tweaked website to remove language around missing chapters
- Drop editing services from website
- Nobody had contacted me since I raised prices, so it was just noise
Book feedback app
- Got rid of the distinction between “emoji reactions” and “comments”
- It was too complicated to model them as different types of feedback
- I just collapsed everything to a comment, and emoji reactions are, under the covers, just comments that contain only a single character: an emoji
- Deleted dead code
- Chipped away at a giant PR to allow the user to leave comments/reactions
Little Moments
Little Moments is an open-source web app I’m working on to replace the current family photo sharing app (TinyBeans) I used (which I strongly dislike).
- Mainly chipped away at implementing magic login
- My big insight was that I could start out by skipping actual emails and pull in SMTP later
- Add comments to AuthService functions
- Added guidance to AGENTS.md about http errors
- Integrated rate limiting in the login handler
- Fixed a subtle dependency on system time
- First, I did a hack date change to get CI green again
- Adjusted sqlite to accept the time through dependency injection
- Fixed Dockerfile to copy correct source directories for build
- Move auth service logic to separate file
- Added rate limiting for login attempts
- Renamed rate limiter package to not assume a particular auth method in naming
- Renamed auth service session manager mock
- Renamed email value object to EmailAddress
- Switched sqlite.New to use a typed struct instead of an arg list
- Switched to shared SQLite test helper in session tests
Go App Starter
- Fixed an issue where every build target was accidentally pulling in Playwright
- Modified dev script to skip checks on deleted files
- Switched JavaScript tooling from npm to pnpm
- I don’t know that much about the difference, except that pnpm seems to make more sensible security choices and offers options to limit privileges more.
Pointer Brother
- Fixed cropping so you can adjust boundaries before performing the crop
Misc
- Did monthly bookkeeping
- Had a call with hardware founders