Hi, Hello, Welcome!

I'm a Senior Developer by day, and a father and husband by night.

I spend my time working on websites, APIs, and integrations, and work predominantly with PHP (Laravel), React and VueJS, Tailwind CSS, and (some) Golang.

I'm based out of Brisbane, Australia, and currently work at Big Picture Medical.

Recent Posts

I write about problems or interesting solutions I have faced as a developer:

Generating A Client Secret For Sign In With Apple On Each Request

Recently I was tasked with adding Sign In with Apple to the federated authentication service we use at my day job. Like many other social providers, the open-source Socialite Providers organisation...

August 30, 2021 | 2 minute read


Gzip Compression with Laravel Vapor

I was answering some Laravel questions on StackOverflow this week when I stumbled on a question asking how to enable GZIP compression on responses when using Laravel Vapor. We host a number of...

July 30, 2021 | 2 minute read


Guzzle Middleware to Handle External Validation Failures

In this post I want to show how we use Guzzle middleware with Guzzle and Laravel Http clients to catch 422 validation failures from external services and turn them into local validation failures....

July 10, 2021 | 3 minute read


Using Inertia to Supercharge Server-Rendered Applications

Across two jobs, and a number applications, I've been using Inertia JS to create great SPA experiences with ease. Inertia allows us to leverage server side routing and controllers to quickly create...

January 22, 2021 | 1 minute read


Rollback Database Changes When Exceptions Occur

Have you ever run into scenarios where you write some code in your controller that writes a bunch of data to your database? I've often built out API endpoints that accept a big payload of data and...

October 21, 2020 | 2 minute read


A Beginners Guide to Basic Indexing

I want to preface this post with a disclaimer; this literally is a 'beginners guide'. A while back, I was facing some performance issues with an application in production and this post is a...

March 21, 2020 | 10 minute read

Looking for more? ⟶