I'm blogging about Emacs, Drupal, php and exciting subjects
Cumulative Layout Shift measures visual instability — how much the page content moves around while loading. Google uses it as a Core Web Vital, and a poor CLS score (above 0.25) directly affects rankings. The target is 0.1 or below at the 75th percentile.
Pre-built Emacs configurations like Doom Emacs and Spacemacs are impressive. They give you a working, polished setup in minutes. But they are also someone else's opinion about how Emacs should work, and when something breaks — or when you want to understand what is actually happening — you are left reading hundreds of files written by strangers.
Getting Xdebug 3 working through a Docker/Nginx stack is the kind of task that takes an afternoon if you don't know the networking pitfalls. This guide cuts straight to a working configuration, explains every setting, and covers both PhpStorm and Emacs (DAP Mode) as IDE targets.
The Drupal Entity API is the backbone of every non-trivial Drupal project. Nodes, users, taxonomy terms, and media items are all content entities. When you need structured data that does not map neatly to a Node — say, a service ticket, a product, an event log entry — you build a custom content entity.
Drupal has an excellent security track record at the core level, but production breaches consistently come from misconfigurations, outdated contributed modules, overly permissive file system settings, and missing server-level controls. This checklist covers every layer: Drupal application, file system, database, Nginx/PHP-FPM, and monitoring.
HTTP/2 has been the default for production Nginx deployments for years. HTTP/3, built on QUIC, is now a first-class Nginx feature as of version 1.25.0 — available in the official Nginx mainline and stable packages without custom builds. This guide covers enabling both protocols correctly, including TLS requirements, firewall rules, verification, and the gotchas that catch people out.
PHP 8.4, released November 21 2024, ships a feature that immediately earns its keep in any domain-model-heavy codebase: asymmetric property visibility. You can now declare a property's read scope and write scope independently, in a single declaration — no boilerplate getters, no magic __set guards, no readonly trade-offs.
PHPStan is now used by 36% of PHP projects — a jump driven by modern frameworks, Drupal core's own adoption, and the realisation that type errors caught at analysis time cost nothing compared to type errors caught in production.
PHP-FPM (FastCGI Process Manager) is the standard way to run PHP behind Nginx. Its defaults are conservative and will not serve a production Drupal or PHP application efficiently.
Magit is not a thin wrapper around Git. It is a complete reimagining of the Git workflow inside a text editor, and it is almost universally cited as the single Emacs package that converts sceptics. After one week with Magit, most developers find the command-line Git UX intolerable by comparison.
Subscribe to Linkhub