writing
Coding how-tos, kept short
Practical notes on doing real work in the browser — with the tools and apps here as the worked examples. No fluff, no newsletter.
Architecture diagrams as code with Graphviz
Advanced DOT in the browser: rankdir and rank=same for layers, clusters for grouping services, edge styles for sync vs async, and a full three-tier diagram built in three steps.
#graphviz#dot#diagrams#architectureChain the tools together through the Stash
Every app has a Send button and a shared bank behind it — how items route by kind, what the desktop does with a dropped file, and three real pipelines end to end.
#stash#workflow#apps#filesChecksums, HMACs and JWTs: a field guide
Verifying downloads, checking webhook signatures, reading a JWT honestly, and the entropy math behind a good passphrase — with the Crypto & Hash app as the workbench.
#crypto#security#hashing#jwtGet an nginx reverse proxy right the first time
The directives that must ride along with proxy_pass — WebSocket upgrade, the forwarded headers — plus the cache split that keeps a deploy from serving stale pages.
#nginx#devops#web#appsRun Python without installing anything
A real CPython interpreter in the browser via Pyodide — a working snippet, when a browser REPL is the right tool, and how the sandbox actually protects you.
#python#webassembly#tools#appssystemd units that survive 3am
A production service unit built up in stages — restart policy that can't loop itself into lockout, resource guards, the sandboxing block, and why enable sometimes silently does nothing.
#systemd#linux#ops#deploymentTest a regex before you ship it
Build a pattern against real text, read the capture groups, preview a find-and-replace with back-references, and sidestep the greedy-versus-lazy traps.
#regex#text#tools#appsThe arithmetic of staying up
Error budgets, why p99 is the number users feel, backoff with jitter, and n+1 capacity math — the small calculations behind reliable services, with the tools that do them.
#sre#reliability#percentiles#backoffWindow functions on a CSV, in the browser
Dedup with ROW_NUMBER, top-N per group, LAG for deltas, moving averages with frame clauses, NTILE buckets and a recursive CTE to fill date gaps — real SQLite, no upload.
#sql#sqlite#window-functions#dataCompress images for the web without uploading them
AVIF, WebP and MozJPEG at a quality you cannot tell apart from the original — a real before-and-after size story, done entirely on your machine.
#images#performance#web#appsQuery a CSV with SQL, right in your browser
Import a CSV, then answer questions with GROUP BY, a JOIN and a window function — against real SQLite compiled to WebAssembly, with nothing uploaded.
#sql#sqlite#data#appsConvert a config between JSON, YAML and TOML without leaving the browser
The everyday format shuffle — JSON to YAML for a CI file, TOML to JSON to inspect it — done locally, with the traps each format hides called out.
#config#json#yaml#tomlMake a drum loop in the browser and export it as a WAV
Eight synthesized voices, sixteen steps, and a look-ahead scheduler that keeps the timing tight — then render the loop to a real WAV, all client-side.
#audio#web-audio#music#appsRead a font's real metrics before you ship it
Weight class, embedding permission, x-height, and which scripts it actually covers — parsed straight from the file, so you know what you're shipping.
#fonts#typography#web#apps
Back to the desktop — 47 tools and 28 apps, all local.