Technical insights and software architecture

Deep dives into PHP development, Horde Framework evolution and practical software engineering. Focused on real-world solutions for complex technical challenges. “Always close to the source”.

Core Topics

PHP, Horde Framework, authentication systems, composer workflows and modern development practices.

Long-form Analysis

Comprehensive technical articles exploring architectural decisions, migration strategies and lessons learned from real projects.

Code & Community

Open source contributions, framework development and sharing knowledge with the PHP developer community.

Category: Tech

  • A wicked problem from the past

    In the last few evenings there was great despair. Trying to solve one problem would reveal yet another one. As a result, I hesitated to release some of the changes immediately. I don’t want to make people suffer, having to deal with new improved problems of the day whenever they run an update on their…

  • Unit Testing Horde 6

    Some years ago I reasoned about upgrading unit tests from ancient PHPUnit 4 to then-recent PHPUnit 9.Back then Horde’s unit test suite would use a Horde_Test class inheriting from the actual phpunit test cases. Even then I was fairly certain that this approach was not very practical in the long run.Why extending PHPUnit might be…

  • I want to run horde/components on new PHP

    If you want to run horde-components on a version of PHP which is not yet reflected in packagist.org released versions: me@mine:~/horde/components$ composer config minimum-stability devme@mine:~/horde/components$ composer install –ignore-platform-reqs No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.Loading composer repositories with package informationUpdating dependenciesLock file operations:…

  • Runaway Trains Back on Track – Plans are just plans

    Trains don’t only run on railroad tracks but supposedly on schedule. Commuters shall know every stop, arrival and departure, the order of cars and their position on the platform. If trains regularly arrive delayed, at another platform, composed of different or differently ordered cars it is a source of frustration. If they skip a station…

  • Maintaina’s Horde 6 goes upstream

    Horde 6 alpha versions with composer 2 support are coming to the upstream repos and packagist.org composer create-project horde/bundle .

  • Satis is now a Composer Plugin.

    Satis is the lightweight, static repository generator for the composer package manager. It enables admins to provide PHP software packages inside airgapped CIs, OS packaging environments and restricted data centers. Back in August I added a plugin mode to satis to make it work as a regular composer plugin. While working on it, I also…

  • Let’s have a date. Revised horde/date ideas

    It’s bad but not as bad as you think. The way we write dates is very different among cultures and technologies. Even countries of the same language family might have totally different notions where to put the year, where to put the month, where to put the day when writing down a date in numbers.…

  • Horde on PHP 8.1 and Composer: Update

    by

    in

    Regular readers of this blog and many other are aware that PHP 7.4 will stop receiving security updates when PHP 8.2 comes out in November. This has made many horde admins question if they can continue to run Horde. Some events in life have made progress slower than originally planned. So where are we? Confirmed…

  • Code Generators: Bad, worse & ugly

    Code generators have been invented and forgotten at least four times in software history. They have an appeal to developers like the sun to Daedalus’ son. Let’s not be Icarus, let’s keep them generators at a distance and watch them carefully. Whenever a language, framework or paradigm forces developers to do the same thing over…