I'm blogging about Emacs, Drupal, php and exciting subjects

Puppet vs Ansible for Infrastructure Automation

Choosing the right infrastructure automation platform is one of the most important decisions organizations make when scaling server management and DevOps workflows. Two of the most widely used configuration management tools are Puppet and Ansible.

Both platforms automate infrastructure tasks, reduce manual administration, and improve operational consistency. However, they use very different architectures and operational models.

Understanding the strengths and limitations of each platform is essential when building modern infrastructure automation strategies.

Puppet SSL Certificate Troubleshooting Guide

SSL certificate problems are among the most common and frustrating issues administrators encounter when managing Puppet infrastructure. Puppet relies heavily on certificate-based authentication between agents and the Puppet server, and even minor certificate problems can prevent entire infrastructure environments from receiving configuration updates.

Understanding how Puppet certificates work, why they fail, and how to troubleshoot them effectively is essential for maintaining reliable infrastructure automation.

Structured Data for SoftwareApplication and TechArticle: Schema for Developer Sites

Most structured data guides begin and end with Article, Product, and BreadcrumbList. For developer-focused sites — blogs covering tools, libraries, and technical how-tos — two schema types deserve far more attention: TechArticle and SoftwareApplication. Both are valid Schema.org types that Google's Rich Results Test recognises, both are chronically underused, and both map naturally onto the kind of content a developer blog publishes.

TLS 1.3 Only: Hardening Nginx SSL to Get an A+ on SSL Labs

SSL Labs' A+ rating is the benchmark for a correctly hardened HTTPS configuration. Achieving it requires more than just installing a certificate — you need to restrict protocol versions, configure cipher suites appropriately, enable OCSP stapling, set strict HSTS headers, and tune session resumption. This article covers a complete Nginx TLS 1.3 configuration for a Drupal site, with explanations for every directive.

Drupal Configuration Management: Syncing Config Between Environments

Drupal's configuration management system is one of its most powerful features for maintaining consistency across development, staging, and production environments. When it works well, deploying a change is as simple as running drush cim -y. When it goes wrong, you are staring at UUID mismatches and hash errors. This article covers the full workflow, from basic export/import to environment-specific config splits and safe deployment practices.

Nginx Worker Processes and Connections: Tuning for Your Server

Nginx's default configuration is conservative. The defaults for worker processes and connections will serve a low-traffic site without complaint, but they leave performance on the table for anything larger. Understanding what these settings do and how they interact lets you tune Nginx to use the hardware you have paid for.

PHP 8.3 Typed Class Constants and json_validate: What You Need to Know

PHP 8.3, released in November 2023, is a focused release. It does not introduce a sweeping new feature like fibers or enums, but it adds several small improvements that remove friction from everyday PHP code. The two most immediately useful additions are typed class constants and the json_validate() function. This article covers both in depth, along with the other 8.3 additions worth knowing about.

PHP 8.1 Fibers Explained: Concurrency Without the Complexity

PHP 8.1 introduced Fibers, and they are the most significant change to PHP's execution model since generators. Unlike threads or async/await in other languages, Fibers do not add implicit concurrency. They are a tool for cooperative concurrency — a way for application code to yield control voluntarily and resume later. Understanding what Fibers actually are makes it much easier to use them correctly.

Drupal GraphQL Module: Setting Up and Querying Your Content API

The drupal/graphql module v4 provides a schema-first GraphQL API for Drupal 10 and 11. Unlike the JSON:API module, which exposes your entire entity structure automatically, GraphQL v4 requires you to define your schema explicitly. That extra work pays off: you get a clean API surface that reflects your application's domain, not Drupal's internal data model.

Composer Autoloading Deep Dive: PSR-4, Classmap, and Files Strategies

Most PHP developers know just enough about Composer autoloading to make it work. But when class resolution fails in a Drupal module, a package publishes duplicate class definitions, or a legacy library throws "class not found" mid-request, you need to understand what the autoloader is actually doing. This article covers all four autoloading strategies, how they interact, and the performance trade-offs that matter in production.

Subscribe to