Configuration management strategies that bring order to chaos across development environments and production systems.

Step into a world where settings files are poetry and environment variables tell stories of battles won. These configuration chronicles capture the art of making systems bend to your will without breaking, learned through countless deploys and rollbacks.

  • architecture (5)

    System design principles and architectural patterns that shape resilient, maintainable software solutions.
  • automation (6)

    Systematic approaches to eliminating repetitive tasks through scripting, version control workflows, and intelligent tooling.
  • configuration (5)

    Configuration management strategies that bring order to chaos across development environments and production systems.
  • devops (6)

    Containers, reproducible environments, and operational practices bridging the gap between development agility and production stability.
  • industry (2)

    Workforce trends, market shifts, and systemic forces reshaping who builds software and how the profession evolves.
  • infrastructure (6)

    Networks, cloud platforms, monitoring, and the foundational systems that determine whether digital services scale or collapse.
  • patterns (6)

    Design patterns and anti-patterns that separate maintainable codebases from technical debt graveyards.
  • productivity (7)

    Workflow optimisations, terminal mastery, and tool choices that multiply developer effectiveness without sacrificing code quality.
  • quality (12)

    Software quality principles—from debugging and testing to the practices that distinguish robust systems from those held together by hope.
  • security (5)

    Security engineering, credential management, and the defensive practices that protect systems from threats both obvious and obscure.
  • ssh (4)

    Secure shell mastery and remote access patterns that turn distributed systems into a unified workspace.
  • standards (7)

    Coding standards, process conventions, and the governance practices that transform individual preferences into collective consistency.

1 July 2025

Environment reproducibility: Docker vs. Nix vs. Vagrant

Production threw segmentation faults in unchanged code. Four hours revealed the cause: Node.js 18.16.0 versus 18.17.1—a patch version difference in native addon handling exposing a memory corruption issue. Environment drift creates space for bugs to hide. Docker, Nix, and Vagrant solve reproducibility at different levels with distinct trade-offs.

15 May 2025

Reproducible development environments: the Nix approach

Dozens of Go microservices in Docker, almost a dozen Node.js UI applications, PostgreSQL, Redis. Extensive setup process. Docker Desktop, Go 1.21 specifically, Node.js 18 specifically, PostgreSQL 14, build tools differing between macOS and Linux. When it breaks, debugging requires understanding which layer failed. Developers spend 10% of working time fighting environment issues.

17 January 2024

Streamlining local development with Dnsmasq

Testing on localhost hides entire categories of bugs—cookie scope issues, CORS policies, authentication flows that behave differently on real domains. These problems surface after deployment, when fixing them costs hours instead of minutes. Dnsmasq eliminates this gap by making local development behave like production, turning any custom domain into localhost whilst preserving domain-based security policies.

7 November 2023

SSH dotfiles: unlocking efficiency

Managing dozens of SSH connections means remembering complex hostnames, multiple keys, and elaborate commands you copy from text files. The .ssh/config file transforms this chaos into memorable aliases that map mental shortcuts to complete configurations, reducing cognitive load so you can focus on actual work rather than SSH incantations.

3 November 2023

Dotfiles: why and how

Working on someone else's machine feels like writing with their hands—common commands fail, shortcuts vanish, and everything feels wrong. Dotfiles transform this by capturing your accumulated workflow optimisation in version-controlled configuration files, turning any terminal into your terminal within minutes rather than days of manual reconfiguration.