Technical Articles
46 articles
Browse by topic: PHP · Infrastructure · Database · AI & LLMs · TypeScript · Quality Assurance
The Ouroboros Problem
A failure pattern I keep seeing in agentic coding workflows: an agent invents a rule whilst explaining its own reasoning, a later session reads that rule as a human requirement, and both defend and extend it from there. I don't have a fix for it yet.
The Host-Action Bridge: Letting a Sandboxed Agent Control Containers It Cannot Reach
How a file-based request spool, a host-side systemd watcher, and a closed verb allowlist let a runtime-less AI coding agent container trigger orchestration actions on its host, without a container socket, SSH access, or ad-hoc firewall holes.
Component-Driven Design with React, TypeScript, and Storybook
How building UIs as a hierarchy of typed, isolated components, with styling controlled entirely through declared props, produces design systems that stay coherent, testable, and maintainable as they grow.
PHP Exception Best Practices: Hard Rules, Project-Level Hierarchies, and Modern 8.4 Patterns
Simple hard rules for when to throw RuntimeException vs LogicException vs InvalidArgumentException, when to create project-level exceptions, how to structure them with typed properties and static factory methods, and how to log them properly with Monolog. Python and TypeScript get a cursory treatment at the end.
OpenAPI and Automatic Code Generation: Define Once, Generate Everywhere
How OpenAPI specifications let you define your API once and automatically generate type-safe client SDKs, server stubs, and models in PHP, TypeScript, Python, and dozens of other languages.
Errors vs Bugs: The Difference That Actually Matters
An error tells you what went wrong, whilst a bug makes you figure it out yourself - a distinction that shapes how you should write code, handle failures, and think about the cost of debugging.
Stop Encrypting Entire Files with Ansible Vault. Use Vault Strings Instead.
Ansible Vault file encryption creates opaque blobs that break git diffs, block code review, and resist AI tooling. Vault encrypted strings keep your keys visible and your values safe, making them a strictly better workflow for infrastructure secrets.
systemd Timers: The Modern Alternative to Cron Jobs
Cron has scheduled Linux tasks for fifty years, but systemd timers offer structured logging, dependency management, security sandboxing, and catch-up execution that cron simply cannot match. A deep dive for engineers running Red Hat, Fedora, and Rocky Linux.
Defence Before Fix: Preventing Bug Classes with Static Analysis
A method for turning a single bug report into a permanent, provable defence against its whole class, in six clauses, with a worked PHPStan example and the specification and toolchains that now implement it.
The AI Development Paradigm Shift: Managing the Firehose
AI coding assistants are fundamentally transforming software development productivity and economics. Understanding when to use AI versus deterministic code is now a critical strategic skill.
TypeScript's Honesty System: Why Type Safety is Optional and How to Enforce It
A working ESLint and tsconfig setup that actually enforces the type safety TypeScript only suggests by default, built against a taxonomy of the 25+ ways developers (and LLMs) routinely bypass it.
Using PHPStan to Enforce Project-Level Rules
Learn how to write custom PHPStan rules to enforce performance, architectural, and testing standards across your entire codebase. Includes real-world examples and multi-language comparisons.
Claude Code Latest Features: What's New in Autumn 2025
A dated snapshot of Claude Code as of November 2025: how checkpoints, subagents, the plugin system, and MCP fit together, plus version-specific fixes and settings added across the 2.0.30-2.0.33 release run.
Advanced Claude Code Hooks: Controlling Sub-Agent Behaviour
Learn how to use Claude Code hooks to enforce execution rules for parallel sub-agents, preventing resource conflicts in test suites and other shared-resource scenarios.
Advanced PHP Database Patterns: Beyond ORMs for High-Performance Applications
Discover advanced database patterns for PHP including retry mechanisms, bulk updates, statement caching, query classes, generators for memory efficiency, and PHPStan rules for test correctness. Learn when to use PDO directly over ORMs.
Caching vs Memoization: Choosing the Right Optimization Strategy
Deep dive into caching and memoization strategies, their differences, use cases, anti-patterns, and practical implementation tips across programming languages.
Claude Code Planning and Execution Workflows: From Built-in Modes to Parallel Agents
How to structure Claude Code planning work: a PlanWorkflow.md contract, GitHub issue-driven tracking, and the workflow tiers from built-in Plan Mode through parallel agents and custom subagents
Reusable OpenAPI Classes: Eliminating Boilerplate in PHP API Documentation
A worked example of the DRY principle applied to Symfony API documentation: wrap swagger-php OpenAPI attributes in your own reusable response, parameter, and security classes so a single change updates every endpoint that uses it.
PHP Stream Wrappers: Mastering I/O Abstraction and Custom Protocols
How PHP treats files, URLs, compressed data, and custom protocols through the same handful of functions, and when writing your own wrapper is worth the extra code
How Lenient Regex Patterns Explode Your Code Paths
Why optional regex patterns create exponential complexity and how strict validation reduces maintenance burden through fail-fast principles.
Automating Fedora 42 Desktop Development: Open Source Infrastructure as Code
What a real Ansible repository for provisioning a Fedora desktop looks like, and why baseline automation should stay narrow so project-specific stacks can build on top of it.
The Overfitting Trap: When LLM Agents Fix One Thing and Break Everything Else
A field guide to catching LLM agents when they hardcode a narrow fix instead of solving the actual bug, with prompt patterns and tests that force generic solutions.
Understanding LLM Context: The Hidden Challenge of AI Development
How context actually works when you are talking to a Large Language Model like Claude Code, why it degrades over a long conversation, and practical strategies for keeping it under control.
Upgrading Legacy MySQL: From MyISAM to Modern MySQL 8.4
A practical walkthrough for engineers maintaining pre-2010 MySQL schemas: six concrete failure scenarios MyISAM allows, and the transactions, constraints, and locking MySQL 8.4 and InnoDB use to close them.
The Unix Philosophy: A Strategic Guide for Technology Leadership
How the 50-year-old Unix philosophy still shapes resilient infrastructure, reduces vendor lock-in, and gives technology leaders more room to manoeuvre through modular, composable systems.
Dependency Inversion, Final Classes, and Pragmatic Testing in PHP 8.4
Why final classes push dependency inversion toward composition over inheritance, and how the Detroit/London testing split resolves into a simpler rule for when to reach for a mock.
Defensive Programming Principles: YAGNI, Invalid States, and Domain Purity
A practical look at three techniques - YAGNI, type-driven invalid-state prevention, and domain object purity - for cutting whole categories of bugs out of PHP and TypeScript codebases before they can exist.
Fail Fast Programming: Why Your Code Should Crash Spectacularly
A practical look at fail-fast programming in PHP, TypeScript, Bash, and Ansible - writing high-trust code that fails early, clearly, and at the exact point of deviation from expectations.
Early Return Patterns: Your Code's Best Exit Strategy
Master guard clauses and early return patterns across PHP, TypeScript, Bash, and Ansible to write cleaner, more maintainable code with reduced cognitive complexity
Mocking in Tests: Like Hot Sauce - A Little Goes a Long Way
Learn when to mock and when not to mock in unit tests. Discover why over-mocking creates brittle, unmaintainable tests and how to write better tests with minimal mocking using TypeScript, Vitest, and PHPUnit.
PHP Magic Constants for Maintainable Logging Systems
Master PHP magic constants (__FILE__, __METHOD__, __CLASS__, etc.) to build contextual logging systems with Monolog and PSR-3 that automatically track execution flow and debugging information.
PHP-QA-CI: A Comprehensive Quality Assurance Pipeline in a Single Dependency
LTS PHP-QA-CI provides a complete, production-ready QA pipeline with a full suite of integrated tools through a single Composer dependency, covering configuration, customisation, and CI/CD integration strategies.
PHP PER: The Evolution Beyond PSR-12 Coding Standards
Understanding PHP Evolving Recommendations (PER), how to enforce them with QA tools, and why PER Coding Style looks like the direction PHP standards are heading.
TypeScript Dependency Injection: A PHP Developer's Perspective
Understanding the fundamental differences between dependency injection in TypeScript and PHP, from structural typing to the lack of standardisation.
oclif: The Open CLI Framework - A Comprehensive Guide
An in-depth exploration of oclif, the enterprise-grade CLI framework from Salesforce. Learn best practices, pros and cons, and compare with alternatives.
Dynamic Gradient Headings: A CSS and JavaScript Implementation
How a single CSS custom property and a throttled mousemove listener are enough to make heading gradients track the cursor, with no per-element recalculation.
Building Better Claude Code Workflows with CC-Commands
Discover how the CC-Commands repository solves the pain points of managing custom Claude Code commands across multiple projects with straightforward automation and intelligent synchronisation.
Fedora 42: What's New in KDE Plasma, COSMIC, and the Installer
A look at Fedora 42's headline changes - KDE Plasma promoted to a full edition alongside GNOME, an official (alpha-quality) COSMIC Spin, a WebUI-based Anaconda installer for Workstation, and the toolchain updates underneath.
Ansible Fact Caching: The --limit Problem and Environment Separation Pain Points
Deep dive into Ansible fact caching limitations with --limit operations and the lack of dynamic cache location configuration for multi-environment deployments.
Managing Legacy PHP: From Technical Debt to Modern Architecture
Strategies for modernising legacy PHP codebases and managing technical debt effectively
Ansible Automation for PHP Infrastructure
Complete guide to automating PHP infrastructure deployment and management using Ansible
Proxmox vs Cloud: Why Private Infrastructure Wins
Why Proxmox-based private infrastructure often beats public cloud for PHP workloads with predictable demand, covering cost, performance, control, and the cases where cloud still wins.
High-Performance PHP: Optimisation Strategies
OPcache tuning, connection pooling, multi-level caching and async job queues for PHP applications under real load
MySQL Performance Tuning for Complex PHP Applications
A practical guide to MySQL configuration tuning, indexing, query rewriting, partitioning, and caching for PHP systems running complex, high-volume queries
Building Scalable Backend APIs with Modern PHP
Comprehensive guide to building scalable, maintainable PHP APIs using modern architecture patterns
AI-Enhanced PHP Development: Tools and Workflows
Modern PHP development enhanced with AI tools and workflows for increased productivity and code quality