Update for the week ending on Friday, Oct 9, 2026
mtlynch.io
- Published “Why are Agent Harnesses so Dumb?”
- It got a decent response on Hacker News and Lobsters
- Added notice about my book’s launch to the self-ads at the bottom
- Removed extraneous social-sharing buttons from posts and notes
- Stripped dead links to indiehackers.com
- Sadly, they threw away the old forum, and Internet Archive doesn’t have records of them because they were implemented in a weird client-side rendered custom app.
Refactoring English
- Officially launched the book and offered the print version for sale
- Published Anti-Patterns in Software Blogging
- Went to #1 on Lobsters, /r/programming and peaked at #8 on Hacker News
- Pitched to Oxide and Friends to see if they want to talk about writing on the blog again.
Book
- Bumped version to 1.0.10
- Added “diff-against-version” script
- I wish I’d done this earlier
- It converts every page to PNG and does a visual diff againt a specified git reference
- It’s helpful to me in verifying exactly how a change affects rendering, as sometimes a change in the book rendering infrastructure could have unexpected effects
- It’s already saved me in one case where the rendering change accidentally added periods before footnotes
- Fix alignment of title and subtitle on title page
- Fixed an issue a reader reported with dark mode in iBooks
- Added credit for the cover image in addition to cover image designer
- Fixed more awkward page breaks between introductions and the example they were introducing.
- Adjust color to match Lulu’s guidelines better
- Added ligatures for body text
- My font supported them, but it turned out that Asiidoctor wasn’t taking advantage of them, so I had to hack it in.
- Automatically calculate the print cover based on the page count
- Previously it was a manual process where I had to upload the content to Lulu, then adjust based on their generated cover template
- Converted all quotation marks to straight, ASCII-style quotes
- Asciidoc needed curly quotes in certain cases, but since I converted to Markdown, I don’t need to anymore
Website
- Changed the regional pricing dropdown to include every country
- Too many people were emailing me saying that their country wasn’t listed and missed the note that it only includes countries with a PPP difference, which, admittedly, is not clear.
- One person emailed me angry because they thought I excluded their country for political reasons, when it was just that their country had a strong currency
- New behavior is that every country is listed, and if you click a country with no discount, it just tells you that there’s no discount.
- Fixed the
<base>tag in the page template - Adjusted the web example callouts to match the book’s PDF cards
- Canonicalized all links to blue instead of having a mix of colors
- Added preview deploys with Surge
- They just recently added support for this without the requirement for delegating DNS to surge also
Website backend
- Track the admin user from the backend rather than in consuming apps
- It’s otherwise confusing if every consuming site has to track which user is admin when it’s always me.
- Return email validation responses as JSON
- I realized I need both the user’s ID and their admin status
- Fixed
upload-prod-dbscript to work even if there’s a persistent disk.
Feedback site
- Added a “Purchase Access” button for users who receive a link but don’t have access
- Added support for new backend protocol for user information
- Changed the download data script to archive all the book data first
- It was downloading book files one by one, which scaled poorly as we reached 15+ historical versions and like 30+ files per version.
- Now, it stores the files in a
tararchive first and then does one SSH command to copy them locally rather than 1000+ separate SSH connections per file.
- Improved diagnostics in Buttondown migration script
- Gave the backend a friendly name instead of “Refactoring English backend” which was getting confusing in code
go-app-starter
go-app-starter is my template project for all Go web apps
- Made the “push down improvements” prompt stricter
- Converted the template maintenance prompts to OpenCode skills
Weekly Snippets
- Converted my
new-weekscript to Go- It was originally bash, then I rewrote it in Python, and it’s finally in Go, which is the more natural language for querying many web services
- Having it in Go makes it easier to automate some of the gruntwork
NixOS config
- Added a global “write commit message” skill for all agents
Misc
- Created a web app for my wife to print things
- She’s constantly running into issues where Ubuntu can’t connect to our home printer, and she has to email documents to me to print
- Now, she can print directly by visiting a web app and uploading a PDF
- Bonus: We can both easily print from phones too