Join 9,500+ smart developers

Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.

No spam. Unsubscribe anytime. You can also follow me on X.

Rewriting Bun in Rust

bun.com

Jarred Sumner explains why the Bun team is moving from Zig to Rust, after years of fighting memory safety issues in a codebase that mixes GC and manual memory management. He also shares how Claude helped make a mechanical, test-suite-driven rewrite realistic without pausing feature work for a year.

Read more [bun.com]

Building RAG in Laravel: Four Ingestion Bugs That Silently Wreck Retrieval

mujahidabbas.dev - submitted by Muhammad Mujahid Abbas

Every Laravel RAG tutorial builds the same ingestion pipeline (chunk, embed, store) and stops the moment the agent answers on screen. None of them check whether retrieval is any good. But retrieval quality is decided at ingestion, before the model runs once, and four decisions there fail with no error, no exception, no failed test:

  • Chunking that severs the answer mid-sentence, so answer@1 falls while source hit@1 still looks healthy.
  • An HNSW index built with vector_l2_ops while you query with cosine <=>. Postgres silently ignores the index and scans every row. Laravel 13's native whereVectorSimilarTo() hardcodes <=>, so it's easier to hit than ever. Shown with EXPLAIN.
  • The embedding dimension baked into the vector(1536) column type, so "shrink it to save storage" is a migration plus a full re-embed that quietly drops retrieval to 47%.
  • Ingesting and querying with different models, which turns every distance into noise.

Each bug is real code from a working repo, proven against an eval suite. It's the prequel to my earlier "Evaluating RAG in Laravel" post: build it, prove it, tune it. Every example verified against laravel/ai v0.7.2 and pgvector, with the full repo to clone.

Read more [mujahidabbas.dev]

Prompt-Injection Guardrails in Laravel: Defend the Tools, Not the Prompt

mujahidabbas.dev - submitted by Muhammad Mujahid Abbas

You can't out-prompt an attacker — to the model, your system instructions and a malicious support ticket are the same text. So stop defending the prompt and lock down the boundaries you actually control: tools scoped to the authenticated user server-side, middleware that screens and logs, output handled as untrusted input, a human in front of anything irreversible, and a fake-free test that fails CI the moment someone drops the auth scope.

Read more [mujahidabbas.dev]

More time to think

ma.ttias.be

Matthias writes that AI has shifted more of software development from typing to thinking, reviewing, and iterating. Nice reflection on how agentic coding, parallel worktrees, and voice dictation can slow individual features down while still increasing overall output.

Read more [ma.ttias.be]

The elephant in the room

www.joshwcomeau.com

Josh Comeau shares a thoughtful take on AI, arguing that deep technical skill becomes more valuable, not less, as these tools improve. His point is that strong developers can use AI to amplify their work, while less experienced builders still struggle without solid architectural judgment.

Read more [www.joshwcomeau.com]

Flood Fill vs the Magic Circle

sebastiandedeyne.com

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 [sebastiandedeyne.com]

How I write feature specs

sebastiandedeyne.com

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 [sebastiandedeyne.com]