A tour of my dotfiles

Over the years, I've built up a collection of aliases, shell functions, and CLI tools that make my terminal feel like home. All of it lives in a single repository: my dotfiles.

It's a backup of every terminal tool and configuration I rely on, and it means I can set up a brand new Mac from scratch in about five minutes. Colleagues at Spatie use it as a starting point for their own setups too.

Let me walk you through what's in there. I'll cover the tools and tricks first, with installation and setup further down.

Read more

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]

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.

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]