skip to content

Search

Writing — 104 posts · 2007–2026

Posts

Linux and sysadmin notes from the late 2000s, Ruby, PHP and Git from the years after, and lately code agents, team leadership and web performance.

Subscribe via RSS

2014

  • A bash snippet that installs phpunit, phploc, phpmd, pdepend and the rest of the PHP QA toolchain in one go through Composer.

  • Scaling out with cloud instances or scaling up with bigger machines: what StackOverflow's scale-up architecture says about the trade-off.

2013

  • Purge, ban and tag-based invalidation in Varnish 3 — why banning a regex does not free memory the way you think, and how surrogate keys turn a hundred invalidations into one.

  • A PHP continuous test runner rewritten to depend only on inotifywait, replacing the earlier Ruby and Watchr version.

  • Parallelising PHP lint with xargs so the linting step stops dominating build time on a large project in Jenkins.

  • How to run GitHub's Hubot on a gTalk account so a bot sits in the team's chat and does the boring parts of the day.

  • Why files edited on the host don't always show up inside a Vagrant box over vboxsf, and how to stop the caching from biting while developing Opennemas.

  • ReactPHP puts an event loop in a language whose entire ecosystem assumes there isn't one. A look at what works, what a single blocking call does to it, and the narrow set of jobs it is actually right for.

  • Wireframes are not early design, they are a cheap way to have the expensive argument. What they are for, what fidelity costs you, and why I stopped drawing them in anything that could render a gradient.

  • Bubble, insertion, merge and quicksort written out in PHP and timed against each other — and against sort(), which beats all of them by two orders of magnitude for a reason worth understanding.

  • Making a laptop suspend to RAM on the lid close and then hibernate a couple of hours later, on Debian and Ubuntu — the systemd way, and the pm-utils way for machines that have not switched yet.

  • What Marissa Mayer's decision to end remote work at Yahoo! got wrong, and what telecommuting actually costs and gives a company.

  • Forking, detaching from the terminal, PID files and signal handling in PHP — plus an honest look at the one problem the language does not let you solve, and what to do about it.

2012