Ranked Search on SQLite
A job-search engine over 13,000 multilingual listings — structured SQL filters, FTS5 with a trigram index, title-boosted BM25, and an eight-signal scorer in PHP — built after deliberately turning down Meilisearch.
Search for a command to run...
A job-search engine over 13,000 multilingual listings — structured SQL filters, FTS5 with a trigram index, title-boosted BM25, and an eight-signal scorer in PHP — built after deliberately turning down Meilisearch.
Restaurant staff search for clients and reservations with typos, missing diacritics, and half-remembered phone numbers — and the whole thing runs on PostgreSQL trigrams plus a scoring layer in TypeScript, with no search infrastructure at all.
You inject a secret into a container at startup, the app runs perfectly, and then docker exec fails with an authentication error. Here is why it happens, and the one line that fixes it.
A multilingual savings app I built to make myself save. The interesting part isn't the balance creeping up. It's what happens when the plan has to change — a missed deposit, a bigger ambition, a moved date. The schedule rewrites itself, and it never throws the old one away.
A table-reservation system for an Istanbul restaurant where the real engineering wasn't the booking form but a live floor plan that read the night's reservations off the database every half hour and regrouped, recoloured, and reset every table on its own — with every staff screen kept in agreement in real time.
A European job search built on a snapshot of a public board, where a pipeline of heuristics and local open-source language models reads each posting in two dozen languages and turns it into structured signals — role, experience, visa sponsorship, tech stack — before a custom search engine ever ranks it.
My freshly-deployed app returned a gateway timeout while the machine was healthy and the page rendered perfectly — the problem wasn't a crash, it was a three-minute thought, and the fix was a cache that can never be wrong.
Wiring blog publishing into a new project, I spent a few hours — and one Pro subscription — chasing a 301 redirect that turned out to be a moved API endpoint, sitting in plain sight on the dashboard the whole time.
Six custom Claude Code slash commands I rely on daily on a Laravel legacy project — and the one specific piece of toil each one absorbs.