Writing
-
Jan 16, 2026 — Simplicity Matters
-
Jan 1, 2026 — Musings on 2025
-
Dec 1, 2025 — Leveraging Promises and HTTP Pooling
-
Nov 13, 2025 — Improving unit test run time in a Laravel modular monolith
-
Oct 1, 2025 — Cleaner middleware: static factory functions
-
Aug 23, 2025 — Creating type-safe configs in Laravel
-
Jun 17, 2025 — FailOnException: Short-circuit Laravel job retries
-
Jan 11, 2025 — This Week I Learned: About TypeScript
-
Jan 4, 2025 — TIL: Laravel’s Factory::forEachSequence
-
Dec 21, 2024 — Avoid Leaking Model Info: Securing Responses When a Model Is Not Found
-
Sep 18, 2024 — How I Reduced 16k Queries Per Day
-
Sep 13, 2024 — Laravel People (Generally) Don’t Like Repositories
-
Aug 18, 2024 — The Pitfalls of Events and Laravel Observers in Large Teams
-
Jul 11, 2024 — If you give a mouse a cookie…
-
Dec 30, 2023 — 2023: My Year in Review
-
Dec 23, 2023 — Builder@insertWithCasts() - Bulk inserts with model casting
-
Nov 26, 2023 — What I have been working on in November 2023
-
Aug 15, 2023 — How WithoutRelations can keep your code clean
-
Jul 6, 2023 — Set Laravel’s default Gate rejection response
-
Jun 2, 2023 — Bind ThrottleRequestsWithRedis conditionally
-
Apr 12, 2023 — How to fix the ‘Identifier name too long’ exception in your Laravel migrations
-
Apr 2, 2023 — Add isUuid() to AssertableJson