Blog

Everything I've written

Search by keyword or tag, or filter by the kind of post. 21 posts and counting.

A developer profile with shipped-tools metrics
Developer Journal·3 min read

Turning a folder of projects into a developer story

What I learned writing my own READMEs, org profile, and portfolio — how to choose a static-site stack, structure a repo's front page, and quantify your impact honestly without overclaiming.

#career#writing#open-source#developer-experience
One domain with path-based sections and zero trackers
Developer Journal·5 min read

How I built this site: local-first, tracker-free, with Astro

The build journey of this very site — choosing Astro, picking paths over subdomains, pivoting from a blog to a full portfolio, auditing for telemetry, and a sneaky SVG encoding bug.

#astro#web#privacy#developer-experience
Digital Garden·4 min read

How I choose an architecture

My repeatable process for architecture decisions — start from the constraints, write an 'alternatives considered' table, and make the trade-off explicit. With examples from real projects.

#architecture#design#clean-code#distributed-systems
An editor showing coverage gutters and a Sonar issue, offline
Tech & Coding·5 min read

Bringing coverage and offline static analysis into the editor

Why I built an IDE extension that runs full static-analysis rules locally — no server round-trips — and the design decisions that made offline parity possible.

#developer-experience#typescript#java#static-analysis
A TestNG flow graph with pass/fail overlay across two IDEs
Developer Journal·5 min read

Building a test-flow visualizer for two IDEs

How a tool to untangle TestNG dependsOnMethods graphs grew into a cross-platform extension - and the decisions that kept it generic, fast, and shippable on top of a half-finished refactor.

#developer-experience#typescript#testing#week-notes
A GBNF grammar describing a strict JSON object
Tech & Coding·3 min read

Constraining a local LLM to valid JSON with GBNF grammars

Prompts ask a model to "return JSON". Grammars make it impossible to return anything else. How I used GBNF + constrained decoding to get reliable structured output on-device.

#llm#ai-agents#developer-experience#design
A shield with a no-network symbol — offline by construction
Developer Journal·6 min read

Designing a provably-offline app: privacy as a hard constraint

Lessons from building a local-first finance analyzer — how to make "offline" a guarantee you can prove, not a promise, and the architecture that falls out of it.

#privacy#architecture#flutter#llm
A pooled-ride timeline with shared and solo segments
Tech & Coding·5 min read

Fair fare-splitting for pooled rides: from a naive split to surplus sharing

Designing a ride-pooling fare model where riders save, the driver is rewarded for pooling, and the math is provably fair — checked against the Shapley value.

#algorithms#go#architecture#distributed-systems
A request hitting a netfilter egress hook and being dropped
Tech & Coding·7 min read

Blocking websites at the kernel layer on Linux — without a setuid binary

How I designed a per-user, system-wide website blocker that catches even raw-IP curl, while keeping a single narrow privileged surface and zero setuid bits.

#linux#security#go#architecture
A locally rendered Swagger UI with no external callbacks
Developer Journal·3 min read

What shipping swagger-view taught me about local-first tools

A developer-journal entry on building a privacy-first Swagger/OpenAPI previewer — and why "no callbacks" turned out to be a feature, not a constraint.

#week-notes#developer-experience#privacy#open-source
Developer Journal·1 min read

Week notes: collapsing microservice upgrades into one command

A messy, manual, multi-step release became a single Python command. Notes on what I built, what broke, and what I'd do differently.

#week-notes#automation#python#openshift
Digital Garden·3 min read

SOLID, in practice

An evolving note on what each SOLID principle actually buys you in a real Spring Boot service — with the smells that tell you a principle is being violated.

#architecture#java#spring-boot#clean-code
Python networking and security code
Tech & Coding·6 min read

Python Learning on Steroids

Going hands-on with networking and security in Python — sockets, packets, and learning a language by actually building with it.

#python#networking#security#learning
A day-to-night theme switch
Tech & Coding·3 min read

Automate Windows theme changes by time with a batch script

A tiny Windows automation that flips between light and dark themes on a schedule using a batch script and the registry.

#automation#windows#scripting
A verified certificate shield
Digital Garden·7 min read

Digital certificates in communication — what are those?

A from-scratch tour of PKI: public/private keys, hashing, digital signatures, and how certificates establish trust on the wire.

#security#networking#pki#cryptography
A table of DNS records
Digital Garden·2 min read

DNS record types and what they're for

A quick reference to the common DNS record types — A, AAAA, CNAME, MX, TXT and friends — and the job each one does.

#dns#networking#web
A CI/CD release pipeline
Tech & Coding·3 min read

Auto Publish/Release with GitHub Actions

Turn a green build into a versioned, published GitHub release automatically — tags, release notes, and artifacts without manual steps.

#github-actions#automation#devops#ci-cd
A CI pipeline — push, build, test
Tech & Coding·6 min read

Continuous Integration with GitHub Actions

Build and test on every push with GitHub Actions — strategy, matrix builds, workflow_dispatch, and a working Node.js CI workflow.

#github-actions#automation#devops#ci-cd
A request walking the Spring Security filter chain
Digital Garden·2 min read

Servlets & filters in Spring Security

How servlets and the filter chain underpin Spring Security — the request path from container to controller, and where auth fits in.

#java#spring-boot#security#backend
GitHub Actions workflow building blocks
Tech & Coding·7 min read

Intro to GitHub Actions

The vocabulary of GitHub Actions — jobs, runs-on, steps, and how a workflow is wired together — before building real pipelines.

#github-actions#automation#devops#ci-cd
A GRUB boot menu
Digital Garden·2 min read

GRUB: what is it?

What a bootloader actually does, and how GRUB fits into the Linux boot process from BIOS/POST through MBR to the login screen.

#linux#systems