Archive
MJ Convento
-
Readonly classes, and the DTOs we rewrote twice
PHP 8.2 turned nine readonly properties into one readonly class, which is less typing and one broken method. Notes on the clone that cannot work, and on 1,240 dynamic property deprecations.
-
Laravel 9: Symfony 6 underneath, and a smaller upgrade than expected
Seven hours of work, one silent upload bug, and a framework that mostly got out of the way. Notes on Flysystem 3, the PHP 8.0.2 floor, the new accessor syntax and full text search.
-
The MySQL 8 upgrade: collations, sql_mode, and the CTEs we finally used
Moving a seven-year-old schema from 5.7 to 8.0 took a weekend. Two startup failures came from my.cnf, ONLY_FULL_GROUP_BY broke three reports, and a collation mismatch on one join reached production.
-
React 18 inside a Symfony monolith, and the parts that hurt
Three weeks of putting React 18 components into Twig-rendered pages: createRoot and leaked roots, the two bugs StrictMode found, the one flushSync we needed, and 83 kB of extra JavaScript.
-
Upgrading to Symfony 6: the deprecations bill comes due
We went 4.4 LTS to 5.4 to 6.0 in six weeks. Clearing 214 deprecation messages on 5.4 was the actual work; the version bump took an afternoon. Notes on the security rewrite and two removals we missed.
-
Enums replaced forty class constants
PHP 8.1 shipped on 25 November. A status class holding 41 constants, a static validator and a switch with a throwing default became one backed enum, and Doctrine still needed thirty lines of custom type to store it.
-
One EC2 box to a load balancer, RDS and S3
A hand-built single server became two instances behind an Application Load Balancer, with RDS, Redis sessions and S3 uploads. The health check, the cron table and the invoice are the parts nobody warns you about.
-
PHPStan level 6 on a codebase from 2014
Two weeks of static analysis on a seven-year-old Symfony application: 417 errors at level 0, 8,996 at level 6, one nullable return that 611 passing tests never touched, and the rule about what may enter a baseline.