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.

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.

Tag: PHP

  • Horde 6: Return of the Git Tree

    Over the last few weekends, Horde 6 code has been merged back from the Maintaina fork and from separate contributions to the former Horde development version, “master”. It was time to upgrade the development tool chain. Back in the Horde 5 days, there was a utility called git-tools developed by Michael Rubinsky. It would checkout…

  • 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…

  • 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…

  • Modernizing horde/text_diff

    If you ever read a github pull request or similar extension proposal, you will likely have seen side by side comparisons of the original and the changed file. You may also have seen some text format that highlights only differences and a little context but hides the unchanged rest of the file. Both of these…

  • Tools to build better Tools faster

    Behind every lofty architecture mantra there is mundane execution. This is best left to tools and I don’t mean anybody in particular but programs that help us make better programs. It basically goes like this: Build tool. Use tool. Build better tool. Build tool to build better tool. Build better tool to build better tool…

  • Why you should develop for latest, greatest

    Developers sometimes choose not to use the latest available language features that would be appropriate to tackle a problem for fear of alienating users and collaborators. This is a bad habit and we should stop doing that. Part of the solution are transpilers. What are transpilers, where are they used and what is the benefit?…

  • Horde/Yaml: Graceful degradation

    Tonight’s work was polishing maintaina’s version of horde/yaml. The test suite and the CI jobs now run successfully both on PHP 7.4 and PHP 8.1. The usual bits of upgrading, you might say. However, I had my eye on horde/yaml for a reason. I wanted to use it as part of my improvements to the…

  • PHP: Tentative Return Types

    PHP 8.1 has introduced tentative return types. This can make older code spit out warnings like mad. Let’s examine what it means and how to deal with it.

  • Horde Installer: Recent Changes

    Major codebase change. Now triggers on autoload-dump rather than earlier in the install phase. Outputs info to console, new comments in autogenerated files.