freek.dev

https://freek.dev

89 posts · 13 Votes

Tech 99% · Life 1%

Subscribe via RSS

  1. Integration testing our Laravel package with a real server and queue

    The Flare team explains how they built end-to-end integration tests for their Laravel package using a real Testbench workbench app, HTTP server, and queue worker. The post also shows how they swapped the sender to write payloads to disk, then built helpers to assert traces, errors, and async job behavior. Read more

    0
  2. Flood Fill vs the Magic Circle

    Sebastian reflects on Robin Sloan's distinction between software's flood fill and the magic circle of the physical world. It's a sharp piece on where AI coding feels limitless, and where paper, printers, post offices, and other real-world constraints still break the illusion of full automation. Read more

    0
  3. How I write feature specs

    Sebastian shares a practical three-step workflow for writing feature specs, from gathering notes with tools like Granola to using a thinking model to surface contradictions and scope. He then switches back to hands-on editing to shape the final spec and uses Spiral for a final pass without letting AI take over the writing. Read more

    0
  4. Our hackathon project: Live at Spatie

    At our latest hackathon, we built Live at Spatie, a Laravel and React wrapper around Owntone that lets the whole team queue music, see what's playing, and control the office speakers. The nicest touch is the Slack bot: thanks to an MCP server powered by laravel/mcp and OpenClaw, you can ask it to queue music right from Slack. Read more

    0
  5. Using the ADR (Action/Domain/Responder) Pattern in Laravel

    Learn what the ADR (Action/Domain/Responder) pattern is and how to apply it in Laravel with a simple, practical example. Read more

    0
  6. How I manage my todo list

    Peter Suhm shares a simple Todoist setup that separates tasks due on a specific day from tasks that just need to happen this week. The heart of the system is a single custom filter that combines today, overdue, and @this-week items into one view. Read more

    0
  7. Flaky Test Retries in Pest v4.5.0

    Pest v4.5.0 adds first-class support for flaky tests with retries and a dedicated CLI filter. The release also brings a useful casing assertion for catching namespace and file path mismatches, plus a coverage option that hides uncovered files. Read more

    0
  8. Idempotency: What, Why and How

    A deep dive into idempotency, from the theory behind safe retries to a practical Laravel implementation using the Laravel Idempotency package. Read more

    0
  9. Reusing your Laravel MCP tools in the Laravel AI SDK

    Learn how to reuse your Laravel MCP tools in the Laravel AI SDK using a simple proxy approach, helping you avoid code duplication and making it easier to build AI agents integrated into your Laravel applications. Read more

    0
  10. Event sourcing with a little help from AI

    A Claude Code skill that helps you design and generate event-sourced domain code for Laravel using spatie/laravel-event-sourcing Read more

    0
  11. Splitting Laravel Boost guidelines across multiple files

    Laravel Boost only reads a single core.blade.php per package, so extra sibling files get silently dropped. Here is the minimal pattern for splitting your guidelines into organized partials using a Blade view namespace. Read more

    0
  12. ★ Searching multiple columns with one URL parameter in laravel-query-builder

    We just released v7.3.0 of laravel-query-builder, which adds a new way to group multiple filters under a single URL parameter. Before getting into the new feature, let me show you how the basics work, so the new bit makes sense in context. The basics Here's a typical setup in a controller: use Spatie\QueryBuilder\AllowedFilter; use Spatie\QueryBuilder\QueryBuilder; $users = QueryBuilder::for(User::class) ->allowedFilters( AllowedFilter::partial('name'), AllowedFilter::exact('status'), )…

    0
  13. On pricing

    Seth Godin shares a compact set of pricing truths about value, story, and perception. It is especially good on why the right answer to "that's too expensive" is often a better story, not a lower price. Read more

    0
  14. RBAC in Laravel: A Practical Deep Dive

    A deep dive into Role-Based Access Control, from the theory behind roles and permissions to a practical, team-aware Laravel implementation without external packages. Read more

    0
  15. Laravel Route Binding Behind the Curtains

    A deep dive into how Laravel transforms raw route segments into models, scoped children, enums, and custom bound values before your controller runs. Read more

    0
  16. ★ Announcing laravel-sluggable v4 with self-healing URLs

    The spatie/laravel-sluggable package has been around for close to a decade. A slug is the readable part of a URL that identifies a record, like announcing-laravel-sluggable-v4-with-self-healing-urls in this post's URL. The package generates one for any Eloquent model when you save it, derived from a title or another text field, and most of the time you don't have to think about it. We just released v4, which adds a few things worth talking about. Let me walk you through them. Generating slugs…

    0
  17. How to monitor your Laravel app for critical vulnerabilities using Oh Dear

    This practical guide shows how to use spatie/laravel-health together with Oh Dear to detect vulnerable Composer dependencies in production and get alerted quickly. It also shows how adding composer audit in CI gives you an extra early warning layer. Read more

    0
  18. Lock a shared test database for parallel test processes

    AI coding agents love to run tests in parallel processes. That's great until multiple processes try to use the same local test database at once. A small file lock can serialize access and stop those runs from stepping on each other. Read more

    0
  19. Running GitHub Actions on a Mac Mini

    Matthieu Napoli explains how he replaced GitHub-hosted CI with self-hosted runners on a Mac Mini at home. The setup is simple, fast, and a good look at the trade-offs around isolation, caching, and parallelism. Read more

    0
  20. Porting Mac OS X to the Nintendo Wii

    An absurd and very fun technical deep dive into getting Mac OS X 10.0 running natively on a Nintendo Wii. It covers the hardware investigation, boot process, kernel patching, and driver work needed to pull it off. Read more

    0
  21. Understanding Traceroute

    A clear walkthrough of how traceroute works under the hood. It explains the TTL trick, the ICMP replies routers send back, and even rebuilds the core idea in Rust. Read more

    0
  22. Enhancing our API for better agentic consumption

    We've shipped several improvements to the Oh Dear API to make it work better with AI coding agents. The updates include historical check runs, dashboard links in every response, and markdown-friendly documentation. Read more

    0
  23. ★ Generate Apple and Google Wallet passes from Laravel

    A mobile pass is that thing in your iPhone's Wallet app. A boarding pass, a concert ticket, a coffee loyalty card, a gym membership. Apple calls them passes. Google calls them objects. Both Wallet apps let you generate them, hand them out, and push live updates to the copy that's already on someone's device. We just released Laravel Mobile Pass, a package that lets you generate those Apple and Google passes from a Laravel app and send updates to already issues passes. Together with the package,…

    1
  24. In Praise of --dry-run

    Henrik Warne makes a good case for adding a --dry-run mode to commands that change state. It gives you a fast, safe way to verify configuration, inspect behavior, and test workflows without side effects. Read more

    0
  25. How Will LLMs Transform Us? AI as a Tool in the Future of Development

    This article frames AI as a tool to support, not replace, developers, emphasizing the importance of staying in control of how and when it’s used. It encourages a thoughtful approach where developers leverage AI for efficiency while maintaining ownership of decisions and outcomes. Read more

    0
  26. What Paddle doesn't tell you about implementing metered billing

    How to implement calendar-month metered billing on Paddle using zero-value subscriptions, one-time charges, and a homemade invoice grace period. Read more

    0
  27. Introducing TypeScript Transformer 3

    Ruben explains the full rewrite behind TypeScript Transformer 3 and why the new architecture makes the package much more flexible. The post covers the new transformer pipeline, AST-based output, improved type parsing via PHPStan, and a watch mode for faster development. Read more

    0
  28. Talking about Laravel, Oh Dear, and AI

    In this interview, I talk about Laravel, application monitoring, and how AI is changing the way developers work.

    0
  29. Scotty vs Laravel Envoy: Spatie's New Deploy Tool Is Worth the Switch

    Hafiz compares Scotty with Laravel Envoy and explains why Spatie's new deploy tool is a nicer fit for SSH-based deployments. He walks through the plain bash format, improved terminal output, migration path, and zero-downtime deployment workflow. Read more

    0