Archive
MJ Convento
-
PHP 7.2, libsodium, and the password hashing we finally fixed
A users table with md5 and salted sha1 in one column. Why PHP 7.2 does not let you bulk convert any of it, why Argon2i needed a build flag we did not have, and the rehash-on-login code that works.
-
Laravel 5.6 for a client dashboard, from a Symfony habit
My first substantial Laravel project after four years of Symfony: facades versus constructor injection, an N+1 that cost 118 queries, the 5.6 logging rewrite, and the scheduled report that ran three times.
-
Symfony 4 and Flex, or how the skeleton got small
Two days converting a 2.8 app with one AppBundle to Symfony 4.0. The directory move, Flex recipes, parameters.yml becoming .env, and what private services break. Also why the bigger client app stays on 3.4.
-
The tests we stopped writing
I deleted 212 tests from a 912-test suite and the build halved. Notes on which tests earn their place: getter assertions and mock transcripts went, money arithmetic and timezone boundaries stayed.
-
Doctrine migrations, and why the Friday deploy broke
A generated diff, a NOT NULL column with no default, and a deploy that ran migrations before it flipped the symlink. 213 failed inserts on a Friday evening, and the expand and contract ordering I should have used.
-
MySQL 5.7 JSON columns, and the regrets that followed
A support lookup read 2.4 million rows to return 41 of them, because the predicate sat inside a JSON document. The generated column fix, the two details that broke it first, and what I keep out of documents now.
-
PHP 7.1 in a codebase that still remembers 5.3
PHP 7.1 shipped on 1 December. Nullable types and iterable let me delete guard clauses across 31 functions. ArgumentCountError cost a day and a rollback, and the mcrypt deprecation is a backfill, not a rename.
-
jQuery 3 and the code we kept
The admin is 40,000 lines of jQuery and we moved it to 3.1.1. What the Promises/A+ rewrite of Deferred actually broke, why fractional widths made a page slow, and why we are not rewriting.