41554 blogs · [ { "id": "01a08c56-11ae-71cb-9a29-8edc00b3a398", "title": "Sticky database connections across requests with Laravel", "url": "https://tim.macdonald.au/sticky-database-connections-across-requests-with-laravel", "published_at": "2025-09-03T04:20:57+00:00" }, { "id": "01a08c56-11ae-71cb-9a29-8edc012c3430", "title": "Fake expectations", "url": "https://tim.macdonald.au/fake-expectations", "published_at": "2025-04-05T02:41:00+00:00" }, { "id": "01a08c56-11ae-71cb-9a29-8edc019ea184", "title": "Mark all files as un-viewed in a GitHub pull request", "url": "https://tim.macdonald.au/mark-all-files-unviewed-github", "published_at": "2025-03-31T21:52:16+00:00" }, { "id": "01a08c56-11ae-71cb-9a29-8edc01b23102", "title": "Single-use tests", "url": "https://tim.macdonald.au/single-use-tests", "published_at": "2023-10-07T22:31:34+00:00" }, { "id": "01a08c56-11ae-71cb-9a29-8edc0227f34a", "title": "Fast database queries are not always better", "url": "https://tim.macdonald.au/fast-database-queries-are-not-always-better", "published_at": "2023-08-24T00:12:59+00:00" }, { "id": "01a08c56-11ae-71cb-9a29-8edc02e8ca4a", "title": "Unique jobs and reserving resources on the queue", "url": "https://tim.macdonald.au/unique-jobs-and-reserving-resources-on-the-queue", "published_at": "2022-11-20T22:38:49+00:00" }, { "id": "01a08c56-11ae-71cb-9a29-8edc02fb2699", "title": "Introducing lazy loading prevention into an existing application", "url": "https://tim.macdonald.au/introducing-lazy-loading-prevention-into-an-existing-laravel-application", "published_at": "2021-09-18T11:06:52+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c551315e", "title": "Git rebase: a love story", "url": "https://tim.macdonald.au/git-rebase-a-love-story", "published_at": "2021-07-29T05:03:05+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c6420eda", "title": "Would you like fry with that? Using a HasOne over a HasMany relationship in Laravel", "url": "https://tim.macdonald.au/would-you-like-a-fry-with-that-using-a-has-one-over-a-has-many-relationship-in-laravel", "published_at": "2021-03-14T03:12:42+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c7414b07", "title": "Follow the Eloquent road", "url": "https://tim.macdonald.au/follow-the-eloquent-road-laracon-talk", "published_at": "2021-02-21T22:49:20+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c7c118e2", "title": "Using Laravel's Policies and Route Model Binding without Eloquent", "url": "https://tim.macdonald.au/using-laravels-policies-route-model-binding-without-eloquent", "published_at": "2020-10-15T22:24:48+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c8606773", "title": "Gracefully deprecating foreign keys for a polymorphic relationship", "url": "https://tim.macdonald.au/gracefully-deprecating-foreign-keys-in-eloquent", "published_at": "2020-10-10T06:29:52+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c940b31e", "title": "Avoid false positives by utiliting magic values in your tests", "url": "https://tim.macdonald.au/avoid-false-positives-by-utiliting-magic-values-in-your-tests", "published_at": "2020-06-08T02:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34c9fa033d", "title": "Sharing PHP-CS-Fixer rules across projects and teams", "url": "https://tim.macdonald.au/sharing-php-cs-fixer-rules-across-projects-and-teams", "published_at": "2020-04-28T15:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34caa41603", "title": "Rethinking Laravel's middleware argument API", "url": "https://tim.macdonald.au/rethinking-laravels-middleware-argument-api", "published_at": "2020-04-16T00:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cb1a91c8", "title": "Query scopes, meet action scopes", "url": "https://tim.macdonald.au/query-scopes-meet-action-scopes", "published_at": "2019-10-11T23:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cb2ee7f7", "title": "The case of the Laravel TestCase", "url": "https://tim.macdonald.au/the-case-laravel-testcase", "published_at": "2019-06-28T04:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cb86eccf", "title": "Dedicated query builders for Eloquent models", "url": "https://tim.macdonald.au/dedicated-eloquent-model-query-builders", "published_at": "2019-04-27T01:11:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cb8bbe87", "title": "Simple performance monitoring a Laravel Forge deployed application", "url": "https://tim.macdonald.au/performance-monitoring-laravel-forge-deployed-application", "published_at": "2019-02-10T22:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cc27fd4c", "title": "PHP be all like: that nonexistent class be cool", "url": "https://tim.macdonald.au/php-be-all-like-that-nonexistent-class-be-cool", "published_at": "2019-01-23T09:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cc6d71a8", "title": "Tips to speed up your PHPUnit tests", "url": "https://tim.macdonald.au/tips-speed-up-your-phpunit-tests", "published_at": "2019-01-08T14:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34ccd8e0cc", "title": "Global application settings", "url": "https://tim.macdonald.au/global-application-settings", "published_at": "2018-11-27T14:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cd3bc1f4", "title": "Giving collections a voice", "url": "https://tim.macdonald.au/giving-collections-a-voice", "published_at": "2018-11-26T04:04:53+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cdfbf6c3", "title": "My feature test suite setup", "url": "https://tim.macdonald.au/my-feature-test-suite-setup", "published_at": "2018-11-11T01:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34ceba19f6", "title": "Overriding Laravel Mix during testing in 5.8", "url": "https://tim.macdonald.au/overring-laravel-mix-during-testing-in-5-8", "published_at": "2018-11-04T01:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34cfb8a415", "title": "Loading Eloquent relationship counts", "url": "https://tim.macdonald.au/loading-eloquent-relationship-counts", "published_at": "2018-11-01T01:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d03b90cb", "title": "Versatile response objects in Laravel", "url": "https://tim.macdonald.au/versatile-response-objects-laravel", "published_at": "2018-05-11T02:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d1337d02", "title": "Laravel Cashier: a helping hand", "url": "https://tim.macdonald.au/laravel-cashier-helping-hand", "published_at": "2018-05-04T02:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d20ad06a", "title": "Backup multiple sites and frameworks with Laravel Backup", "url": "https://tim.macdonald.au/backup-multiple-sites-frameworks-laravel-backup", "published_at": "2017-10-31T01:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d2a8790c", "title": "Foreign key validation rule", "url": "https://tim.macdonald.au/foreign-key-validation-rule", "published_at": "2017-04-30T03:27:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d2cb1666", "title": "Enforcing valid data access from a form request object", "url": "https://tim.macdonald.au/enforcing-valid-data-access-from-form-request-object", "published_at": "2017-04-10T02:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d37d4771", "title": "Writing a zero downtime deployment script", "url": "https://tim.macdonald.au/writing-a-zero-downtime-deployment-script", "published_at": "2017-03-28T01:00:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d3df2ffd", "title": "Fluent validation rules for Laravel", "url": "https://tim.macdonald.au/fluent-validation-rules-for-laravel", "published_at": "2016-12-31T12:58:00+00:00" }, { "id": "01a08c56-11af-7040-ace7-df34d484da41", "title": "Being a developer in regional Australia", "url": "https://tim.macdonald.au/being-a-developer-in-regional-australia", "published_at": "2016-12-30T03:49:00+00:00" } ] posts Claim your blog
Back to tim.macdonald.au
Blog · corpus.blog/blogs/tim.macdonald.au/posts

tim.macdonald.au

tim.macdonald.au

2025

2023

2022

2021

2020

2019

2018

2017

2016