Writing
Notes on Laravel, the web, testing, and whatever else I've been wrestling with — 13 posts and counting, going back to 2017.
2025
2 postsIt's all about the Action
Sep 2nd, 2025A practical guide to single-purpose action classes in Laravel — why they make code clearer, how to name, structure and test them, and when to skip them.
#phpYou’re Not Alone With Your Legacy Code
Aug 28th, 2025Legacy code built your company and pays your salary. A case for treating the code you inherit with a little more respect.
#legacy2022
1 post2021
2 postsTesting complex eloquent queries
Sep 18th, 2021Techniques for testing complex SQL and Eloquent queries in Laravel using an in-memory SQLite database and seeders.
#phpStop lying about the benefits of testing
Sep 5th, 2021A testing advocate pushes back on the overselling of tests: what writing tests really does, and doesn't, give you.
#php2020
2 postsChange uploaded filenames in the trix editor in nova
Oct 4th, 2020How to slugify image filenames uploaded from the Trix editor in Laravel Nova so they're URL-safe before landing in S3.
#phpHow does the web work?
May 10th, 2020Part 1 of a series on what actually happens when you type a URL into your browser — starting with DNS.
2019
2 postsPublish a Vue component to npm
Jun 6th, 2019A step-by-step walkthrough of packaging and publishing a Vue component to npm — including the parts other tutorials skip.
#javascriptLogical or || in php vs javascript
Feb 10th, 2019Why the logical OR (||) operator behaves differently in JavaScript than in PHP, and what it actually returns.
#php2018
3 postsDifferentiate Laravel collection methods
May 31st, 2018A field guide to the trickier, similarly-named Laravel collection methods — and how to finally tell them apart.
#php?? vs ?: vs || in php
Apr 23rd, 2018?? vs ?: vs || in PHP — what each operator actually does and how they differ, in one quick explainer.
#phpTranslate content on the front end
Apr 23rd, 2018Approaches for passing your translated strings from Laravel to a front-end framework, for both SPAs and multi-page apps.
#php