Archive
MJ Convento
-
Push notifications in a back office, with service workers
Six weeks of putting browser push into an internal admin: registration and permissions, why Chrome still needs a GCM sender id, sending from PHP, and the two failures that only production found.
-
Ten weeks of PHP 7 in production
We moved the platform from PHP 5.6 to 7.0.2 in January and are now on 7.0.3. What broke mechanically, what needed thought, the numbers off our own six boxes, and why strict_types only goes in new files.
-
Symfony 2.8 or 3.0, and why we picked the boring one
Two versions shipped in November 2015 with the same features, and the only real difference is which deprecated code is still there. Here is how the support dates, not the code, decided it for our back office.
-
Symfony 2.7 LTS: deprecations first, upgrade second
Moving the ERP from Symfony 2.3 to the 2.7 long-term-support release. What LTS actually promises, the 187 deprecation notices on our first page load, and the form and security changes behind them.
-
PSR-7, read twice, and what immutability costs you
I read the new PSR-7 HTTP message interfaces twice before they made sense. Notes on why withHeader() returns a new object, why getBody() is a stream, and why wrapping Symfony’s mutable request is awkward.
-
EXPLAIN, and the report that took forty seconds
A finance report on the ERP took 41 seconds against 1.9 million invoices. The slow query log, EXPLAIN, one index that was never used, and the composite index that finally worked on MySQL 5.5.
-
Composer and PSR-4 in a codebase built on require_once
The ERP loads 181 files per request through require_once chains and an unmaintained PEAR install. How we moved it onto Composer: classmap for the old code, PSR-4 for new code, and the class that only broke on Linux.