The theme of the last two weeks I didn't pick so much as notice halfway through: I spent it teaching my apps to trust nobody. Not strangers on the internet, not the files people hand them, not even their own first drafts. Turns out a little paranoia ships well.
Teaching an App to Be Suspicious
"Your data stays yours" is easy to put on a landing page and annoying to actually keep. It means the code that reaches out to the internet has to refuse to be tricked. So a chunk of the last two weeks went into the least photogenic work there is: teaching the code review app to stop being so trusting. It fetches from GitHub and reads files people hand it, both doorways. Outbound requests no longer follow a redirect wherever a server feels like sending them. The XML parser can't be sweet- talked into reading files off my disk. Text from a model is treated as text, not as instructions it's allowed to obey.
I won't publish the specifics; those are the map an attacker wants. Same summary as last week: harder to break into, not unbreakable. It's just no longer embarrassingly polite to strangers.
The Reviewer That Grew a Spine
The code review app stopped being a toy and started being an agent. It reads, forms an opinion, then checks that opinion against the actual code before it says anything. A re-grounding pass: if a finding can't be traced to a real line, it doesn't ship. It also remembers what it already flagged, so it stops repeating itself.
Every finding now comes in three parts: what's wrong, why it matters, what to do about it. No wall of text, no confident nonsense. I also put a plain cost comparison next to it, what this work would run on a paid stack, because self-reliance here isn't just possible, it's cheaper than renting.
A Weekly Review That Isn't Bossy
Weekly got rebuilt around one idea: help you decide, don't decide for you. It reveals itself in sequence instead of dumping everything at once, outstanding items grouped by source, checkboxes you can tick, a synthesis you can dismiss. When it's time to set intentions, it offers a soft nudge and gets out of the way. You write them, weight them, commit them, and, unlike three earlier weeks I'd rather forget, it doesn't lose them when you close the tab.
Loose Ends, Now Tightened
- All eight apps are now installable PWAs, each with a cache-busting service worker so a deploy actually reaches you instead of getting stuck behind a stale cache.
- Four architecture diagrams got dragged back into agreement with reality: they described flows the code no longer has.
- A sign-in cookie on one app was set a hair too loose across sites. Tightened.
- Swapped in a newer local model for the heavy thinking. Still my hardware, no tokens leaving the building.
Why It All Lives on a Box in My House
The whole suite runs on my own hardware. Eight apps, my sign-in, nothing valuable parked in the middle for anyone to hold hostage. Not out of ideology, just the quiet comfort that a thing you fully own can't get rug-pulled on a random Tuesday because some pricing page changed. It holds for the boring reason anything holds: one unremarkable commit at a time.
If you are interested, reach out.