pgvector in 2026: Why I Deleted Pinecone From Half My Side Projects
pgvector plus HNSW replaced Pinecone on half my side projects. The schema, the index picks, hybrid search with FTS, and where I still reach for…
pgvector plus HNSW replaced Pinecone on half my side projects. The schema, the index picks, hybrid search with FTS, and where I still reach for…
When to pick Server-Sent Events over WebSockets in 2026: a shipping engineer's take on real-time channels for dashboards, LLM streams, and more.
I stopped rotating Go web frameworks and picked one. Here's when I reach for Chi, Gin, Fiber, Echo, and plain net/http on production Go services…
Real experience with Postgres full-text search in 2026: when tsvector and GIN indexes beat Elasticsearch, and the queries I actually ship in production.
I switched a Next.js app from Prisma to Drizzle last spring. Here's how I now pick between the two TypeScript ORMs on real serverless projects.
The Go concurrency patterns I actually reach for in 2026: errgroup instead of sync.WaitGroup, context cancellation everywhere, worker pools without cargo cult.
Two years, three runtimes, one grumpy migration weekend. Here is the Rust async runtime I ship with in 2026, and the cancellation trap that cost…
REST API design rules I still lean on in 2026: versioning, naming, pagination, errors, idempotency. Real Go code, plus the rituals I quietly skip.
I ran Bun in production for a year alongside Node. Here is where it actually replaced Node at runtime, where I switched back, and the…
Go 1.23's range-over-func and the iter package killed a pile of iterator boilerplate I'd been writing for years. Here's what actually changed for me.