Blog
Stop running flush on every page load during SilverStripe development: set the cache default lifetime to minus one in your config.
Installing SilverStripe 3.1 without Composer, by adding the framework and CMS repositories as Git submodules and wiring them up by hand.
Long-running PHP scripts dropped by the MySQL wait timeout on Rackspace, fixed by subclassing the Doctrine MySQLi connection to pass a flag.
Why PECL extensions fail to build on Debian and Ubuntu under Zend Server 6, and which source and build packages you need to install first.
End a MySQL command-line SELECT with backslash-G instead of a semicolon to get readable row-per-column output rather than a mangled table.
ZuQ, a homegrown ZeroMQ queue built to replace RabbitMQ: PHP clients with lazy-pirate retry talking to a C++ router-socket daemon.
Building a replicated GlusterFS distributed filesystem on Rackspace Cloud and Ubuntu 12.10: server setup, formatting bricks and mounting it.
Zend OptimizerPlus strips PHP docblocks when it caches bytecode, which quietly breaks Reflection, Doctrine and ZF2. How to get them back.
A fresh Redmine 2.x install on Ubuntu 12.10 with Ruby, Apache, Passenger and MySQL, written after an upgrade went comprehensively wrong.
Remote-debugging a PHP CLI script on a LAMP virtual machine from PHPStorm: server path mappings, Xdebug settings and the environment variables.