Update for the week ending on Friday, Apr 3, 2026
mtlynch.io
- Published Claude Code Found a Linux Vulnerability Hidden for 23 Years
- Fixed some dead links
Refactoring English
- Published new chapter: “Help the Reacher Reach Their Goal”
- Worked on “Meet the Reader Where They Are”
- Worked on “Minimize Cognitive Load”
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).
- Switched from temporary in-memory DB to real SQLite database
- Refactored to use a file ID instead of storing multiple filenames
- I’ve dealt with this in several apps, and it feels clean to store the different size images and their filenames, but it gets messy and repetitive,
- Instead, I’m just keeping a unique file ID for each file and then different sizes have standard conventions like
-original.jpgor-800px.jpg
- Switched to fresh UUIDs for tinybeans import instead of reusing Tinybeans UUIDs)
- Add keyboard hotkeys for Home/End
- Add gitignore rule for go build artifacts in repo root
- Add strict checks and more SQL constraints in SQLite schema
- Check comments more rigorously to reject empty and whitespace-only comments
- Added a test animated photo (GIF) to tinybeans-export testdata
Grosiree
Grosiree is a shared grocery list web app I’m making with my wife to show her how vibecoding works.
- Added a Grocery Items page
- Mostly for debugging incorreclty entered items
- Added stronger typing for data types
- Deduplicate grocery list view-model shaping (#22)
- Dropped extraneous UI elements
- Fixed autocomplete missing items added without a section
- Fixed section change not taking effect until page reload
- Reduced duplication in routes with subrouters
- Sorted items within stored list by section
- Changed grocery item edit fields to go vertically on mobile
LogPaste
- Mostly backported a bunch of features from other apps into LogPaste
- Added ARM images for Docker
- Published release binaries to GitHub on tagged releases
- Enabled Docker layer caching for remote Docker builds
- Added a lint-sql dev script
- Backported multiarch and master packaging improvements from picoshare
- Cached Go modules in CI to avoid re-downloading on every run
- Removed old Ubuntu image reference from CircleCI config
- Set docker24 as the target Docker version for remote builds
- Switched base CI image from pinned date tag to cimg/base:stable
- Upgraded go-sqlite3
- Upgraded sqlfluff from 1.2.1 to 3.1.1
- Switched to a real datastore instead of mock datastore in tests
PicoShare
PicoShare is a minimalist web-based file sharing tool I’m working on. I’m often frustrated that I can’t just send someone a link directly to a file because every file-sharing service tries to re-encode images/video or wrap their own viewer around other files, so I’m making a simple self-hostable tool that lets you upload files and share them with other people.
- Deleted old references to pico.rocks
- I let this domain expire because it wasn’t worth keeping
- Measured performance improvements to switching SQLite libraries
- Seems like a substantial gain of 10-20%
Security research
- Submitted 9 vulnerability reports to Meta
Misc
- Fixed a regression in pointer-brother that seems to have come from a recent Firefox release