I've long been planning to bring back my blog, but as is commonplace with this sort of thing, I found myself focusing too much on creating the ideal implementation. The perfect blog, with all the features I wanted and all the automation. No wonder I never actually finished it.

Then, on the 1st May, the day my contract was due for renewal, I was informed that the business was tightening its purse strings, due to the kicking it had taken with the US tariffs, and therefore wouldn't be renewing the contract. This was quite the surprise, as I had been assured that it would be renewed until the end of September, and I had quite literally 24 hours before, merged in a PR containing a completely bespoke ORM I built for the project.

I was planning to use the 4 months I would have to work on some additional projects, things I'd hoped could start generating some passive income and allow me to move away from writing code for people. Since I no longer have that window, I decided to take the plunge and just get something out there.

And to kick that off, I've put up two articles from the get go.

I'm also considering putting together some of the longer content that I had planned to build platform for, as "mini-course" PDFs on Gumroad. They're mostly complete, but they'll need a bit of polish and a bit of a rejig to make them more consumable, but they are as follows:

I'm still undecided on how I'm going to go about it, but I'm going to do something, to make the most of the time between contracts.

Available for work

Which brings me nicely to the fact that I am currently available for work. If you're looking for a PHP or Laravel expert, to help plan, build or refactor a project, get in touch!

If you're looking for a consultant for advice on an adhoc hourly basis, I'm also available for that too.

I'm also going to be continuing with Sprout, my multitenancy package, working on tenant-based config add-on, as well as the tenant-domain and tenant-database addons that build on top of that.

The last thing I want to mention is a little feature I've added to this blog called "insights". It's essentially a little tooltip based on the kind you get in IDEs when hovering over a method or class name. When you hover over the name of a class, method or function on this blog, and you see the help cursor, if you click on it, you'll see a bit more information about it, including some links. Here are a few examples:

Anyway, that's all from me for now, happy coding.

I'm Ollie Read—a software architect, Laravel and PHP expert, and lifelong builder. I write to share what I learn, explore how things work, and help others.

Got thoughts, questions, or just want to chat? I'm always up for a good conversation— get in touch, or find me on BlueSky, X or Discord

Method
afterResolving()
Class
Illuminate\Container\Container
Parameters
\Closure|string $abstract - The name of class/dependency, or the callback if it's global.
\Closure|null $callback - The callback to be called when the class is resolved. Defaults to null
Returns
void - Returns nothing.
Description

Registers a callback to be called after a class is resolved. Supports both callbacks for specific classes, or global callbacks for every resolution.

Links
Class
Route
Namespace
Illuminate\Routing
Description

This class represents both the registered route, and the current route state within Laravel.

Method
forgetParameter()
Class
Illuminate\Routing\Route
Parameters
string $name - The name of the parameter to forget.
Description

Unset a parameter on the route if it is set.

Links
Class
Route
Namespace
Illuminate\Routing
Description

This class represents both the registered route, and the current route state within Laravel.

Method
forgetParameter()
Class
Illuminate\Routing\Route
Parameters
string $name - The name of the parameter to forget.
Description

Unset a parameter on the route if it is set.

Links