Software

Posts in this category

Posts

  • TCP from the Wire: Reading a Real Handshake

    A tcpdump capture of one HTTP request over loopback, packet by packet: the three-way handshake, sequence numbers, window scaling, teardown, and where flow and congestion control fit in.

    14 min read 2,720 words Category: Software Tags: networking, tcp, tcpdump

  • Twelve-Factor on a Single VM

    Running a real application on one virtual machine with Docker Compose, environment-based config, log streams, automatic TLS and tested backups, without pretending it is a cluster.

    11 min read 2,063 words Category: Software Tags: devops, docker, infrastructure

  • CI for a Static Site: What This Repository Actually Runs

    The four GitHub Actions workflows behind this site and the six they replaced, read from the YAML, plus the concurrency, pinning and permission habits worth adding to any static-site pipeline.

    10 min read 1,989 words Category: Software Tags: github actions, ci, jekyll

  • A Performance Budget for This Very Site

    What it took to halve the same-origin CSS and JavaScript on every page of this Jekyll site, with the before-and-after bytes and the check that keeps it that way.

    11 min read 2,041 words Category: Software Tags: web performance, jekyll, frontend

  • Reliable Background Jobs with Nothing but PostgreSQL

    A job queue built on FOR UPDATE SKIP LOCKED, visibility timeouts, retries with jittered backoff and idempotent handlers, with the SQL and a Python worker.

    12 min read 2,295 words Category: Software Tags: postgresql, backend, python

  • A Pragmatic REST API, Decision by Decision

    Resource naming, versioning, cursor pagination, idempotency keys, RFC 9457 errors and rate-limit headers, with the measurements and the OpenAPI to back them up.

    9 min read 1,769 words Category: Software Tags: api design, http, openapi

  • Ports and Adapters in a Go Service

    A hexagonal layout for a small Go service, with interfaces at the boundary and a core you can test without a database.

    11 min read 2,027 words Category: Software Tags: go, architecture, testing

  • Designing a URL Shortener, Properly

    Requirements, back-of-the-envelope capacity numbers, the data model, base62 versus hashing for IDs, and what to do when one link goes viral.

    11 min read 2,102 words Category: Software Tags: system design, databases, caching