Don't use stdClass
The digital agency I work for specialises in marketing, so some of my work tends to relate to mailing lists. This week I was asked to look at an issue on a Laravel-based export system built by a...
View ArticleThe trouble with integrated static analysis
I've always been a big fan in general of tools that provide feedback about the quality of my code. The development role in which I spent the most time was one in which I had no peer feedback or...
View ArticleCaching the Laravel user provider with a decorator
A couple of years ago I posted this article about constructing a caching user provider for Laravel. It worked, but with the benefit of hindsight I can now see that there were a number of issues with...
View ArticleFlow typed AJAX responses with React Hooks
I'm a big fan of type systems in general. Using Psalm to find missing type declarations and incorrect calls in PHP has helped me out tremendously. However, I'm not a big fan of Typescript. The idea of...
View ArticleWhat I want in a PHP CMS
I maintain a custom PHP legacy CMS for a client, and have also been building a micro-CMS as a learning project, so I've spent quite a lot of time in the last few years thinking about how content should...
View ArticleLightweight Laravel - deconstructing a full stack framework
Back when I used to work with Django, I read the book Lightweight Django, and it completely changed the way I thought about building web applications. For years I'd heard the same lines parroted about...
View ArticleMoving to Gatsby.js
If you're visting this site directly, rather than via RSS, you may have noticed that I've updated the whole thing. It's now built in Typescript, using Gatsby.js, and with Tailwind for the styling.This...
View ArticleDynamic image handling with Glide and GraphQL
I've used Glide on several PHP projects in the past. It's a great package that makes it really easy to dynamically generate images on the fly. For instance, if you need a particular image at both a...
View ArticleThe ORM Delusion
I've used some low-level database interfaces like PDO, and the database interfaces from several frameworks, including Codeigniter, Zend 1, Django, and Laravel, and I've been in the web development...
View ArticleEverything's (potentially) a callable
I'm a big fan of callables in PHP in general. They're an extremely powerful way to build applications out of many different reusable components, in a way that combines the best aspects of...
View ArticleWhy I no longer use the repository pattern
In September 2016, I started a new job after my previous employer went into liquidation. I expected a certain learning curve because I was going from an environment where I'd been the main driver of...
View ArticleWhat I think ChatGPT means for developers
I'm sure you've heard some of the buzz about ChatGPT. There's been examples of it creating a working Wordpress plugin on demand, recreating the Apple website, acting as a Linux terminal, and writing...
View ArticleTwo techniques for handling recursive relationships in MySQL
When modelling users in a hierarchical organization, it's common to need to retrieve the line manager or subordinates of a given user. In MySQL, two of the techniques that can be used to handle these...
View ArticleWhy (nearly) every PHP class you write should be abstract or final
If your introduction to object-oriented PHP was anything like mine, inheritance was probably touted as one of the biggest advantages. It allowed you to easily extend existing code with minimal effort,...
View ArticleWhy I haven't posted much this year
If you regularly read this blog, you may have noticed that I haven't posted much this year. There's a reason for this - a lot of my spare time has been taken up working on a new personal project, which...
View ArticleRetiring Laravel Azure Storage
Today I abandoned my most popular open source package, Laravel Azure Storage. According to Packagist, it's been installed nearly two million times down the years, and it has 221 stars and 45 forks on...
View ArticleSo... I learned Drupal
Late last year, at work they were looking for people to train up and get certified on working with Drupal so we could bid for jobs working with it. I can't say I'm a big fan of certification in general...
View ArticleUsing Dolt with Lando
For some years now, I've been using Lando as my main development environment at work. It's a convenient and flexible way to work with most stacks I might need to use, as it's Docker-based it's more...
View Article