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 Tixel.

Recent Posts

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

Using Generators for Pagination

Inspired by a recent tweet from @freekmurze, his upcoming Mailcoach PHP SDK contains a nice API for paginating through all records: Whilst I definitely like the idea of the...

November 9, 2022 | 3 minute read


Using MySQL and Postgres functions in SQLite

A common debate in the community is whether you should use SQLite or the same database that you use in production for your tests; assuming you don't use SQLite in production. From the conversations...

October 3, 2022 | 3 minute read


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

Looking for more? ⟶