Archive
Posts
Notes on engineering, applied AI, leadership and the occasional detour into writing fiction.
2025
Spec-driven agentic development in practice
The one trick almost nobody uses: tell the LLM to ask you the questions. A working method for turning a braindump into a spec precise enough that an agent can build from it — and keeping the spec as the source of truth afterwards.
2019
Configure default datetime format of Symfony Serializer DateTimeNormalizer
The Symfony Serializer happily normalizes DateTimes — until you need milliseconds. How to change the DateTimeNormalizer default format once, globally.
2018
Add disks to a setup with a LUKS container on a LVM volume without losing data
Growing an encrypted LUKS-on-LVM data partition onto freshly bought disks without losing a byte — the exact command sequence, plus the obligatory backup sermon.
2016
Auto deploy a Sculpin website for free
Public repo on GitHub, merge to master, site live on S3 — a zero-cost Travis auto-deploy for a Sculpin static site, as used for rokka.io.
How to NaNoWriMo
The system that carried me through NaNoWriMo wins: plain text files, automatic backups, no backspace key, and a merciless focus on reaching the end of the story.
2014
Symfony 2.5 using a new structure
Saying yes to the new 3.0 directory structure in a fresh Symfony 2.5 project: what moves where, and why var and bin make daily life easier.
2013
Alternative location of the symfony2 documentation
When symfony.com goes down mid-task, the entire documentation is still sitting in a GitHub repo — less pretty to navigate, but all there.
2012
One Time Passwords in PHP and Google Authenticator
Two-factor auth for your own app with Google Authenticator: how the one-time-password RFCs work, and the PHP library I published to handle the tricky bits.
Zend Certified Engineer PHP 5.3
After years of owning the study guide, I finally sat the ZCE PHP 5.3 exam — number 95 in Switzerland, with honest notes on the test's fuzzier questions.
Extension '/path/script.php' not present
A PHP script that ran fine by hand but failed in cron with a nonsense error — the culprit was DOS line endings, and dos2unix ended it.