Window Functions, Joins, CTEs and Subqueries
Once you've got filtering and grouping down, SQL starts asking harder questions. Which doctor handles the most visits? Which department has the most…
Tech news from the best sources
Once you've got filtering and grouping down, SQL starts asking harder questions. Which doctor handles the most visits? Which department has the most…
Email verification looks like a small feature: create a token, send a message, and accept the token when the user clicks it. In a production backend…
Our quiz app is two deployed things. A Next.js app, and a long-lived WebSocket server that holds the game clock, because a serverless function canno…
Two of the GDPR rights our users have are buttons in the app. Export your data, and delete your session history. Both of them write a row to this ta…
Imagine your company has 50 employees and 80 IT assets, including laptops, monitors, and smartphones. An employee leaves the organisation. HR confir…
We used to give schools a discount code. A teacher asked for one, we minted it, and then we maintained the parts that follow from a code existing: a…
Oct 30, 2026, Supabase is enforcing a breaking change for RLS grants in the public schema. Existing tables are unaffected; new tables created after…
Disclosure: I build Schemity , a desktop ERD tool - this post is from our blog and uses it for the examples. TL;DR: Use the pattern PostgreSQL alrea…
Milestone 4 of IncidentCopilot — an open-source, local-first AI DevOps Incident Copilot 📌 Introduction Logs are plentiful during outages — the chall…
problem statement in a typical microservice, each instance opens its own pg client pool. during a traffic spike the aggregate connection count can e…
Nakodo has 77 call sites that look like this: await audit ({ action : " campaign.launched " , userId , entityType : " campaign " , entityId : campai…
At 2 a.m. on a Tuesday, a client's reporting replica silently stopped applying changes. The publisher kept accepting writes. The replica kept answer…
Joins are one of those topics where everyone nods along when you explain them, then freezes up the moment they have to write one on the spot, in fro…
PostgreSQL 19 was supposed to ship in October. The release team now says general availability is November 19, with RC 2 on November 12 (postgresql.o…
I'm Duc. Since May 2025 I've been building Excalibase on nights and weekends, next to my day job. It started as a GraphQL engine for Postgres, becau…
Introduction: The Headline That Made My Stomach Drop Almost every week, we see another headline about a major tech company or hot startup suffering…
PostgreSQL EXPLAIN ANALYZE: What I Actually Look At in Query Plans Every slow query I have ever chased started the same way: someone guessing. "Prob…
Marketing wanted a list. Every customer who had never placed an order. The query was short and read like English. Select from customers where id is…
Yesterday I added an optional phone number to Nakodo. When a creator or a business says yes to a brand, the app introduces them by email, and the br…
The largest test file in PubTrivia is 543 lines, and it has no mocks in it. It calls the actual server actions a player's phone calls, and the actua…
Originally published on the Hubfly blog . TL;DR What you get: a 3-service Compose file (Postgres, a one-shot migration job, an API) where the API ca…
This is a submission for the MLH x DEV Writing Challenge What I Built Here is a bug that drove me crazy for three days straight. You ask an autonomo…
OpenSparrow v4.2 adds native Excel export, column masking for viewers, and record‑tooltips in drilldowns — plus a handful of UI polish and stability…
We hit a wall last month. Traffic was stable, CPU was idle, but p99 latency spiked to 2s. The PostgreSQL server looked healthy. The culprit wasn't t…
I like the Supabase JS client. .from('todos').select('id, task').eq('done', false) reads like what I mean, and { data, error } means I'm not wrappin…
Families manage money and responsibilities in ways that often resemble small organizations. They coordinate recurring contributions, fund shared pro…
Most database crashes in Node.js apps don’t happen because of heavy queries. They happen because of unmanaged connection pools. When your TypeScript…
Operator notes are time-series data. Each one has a timestamp, a site, a temperature, and a sentence about what happened. Searching them by meaning…
Put the user filter inside the vector search itself. If you search everything and remove other people’s chunks afterwards, those chunks still use up…
Why "just retry" creates duplicate payments, and a PostgreSQL-backed design for idempotency keys that survives double clicks, timeouts, crashes and…