Private Semantic Search: Building an Offline Vector Search Engine with SQLite and Ollama
Learn how to build a 100% offline, privacy-first semantic search engine for your markdown notes using Ollama embeddings and SQLite's vector extensions.
Thoughts, experiments, and field guides on local AI, minimalist web development, and database-free architecture.
Learn how to build a 100% offline, privacy-first semantic search engine for your markdown notes using Ollama embeddings and SQLite's vector extensions.
Why use heavy databases? Learn how to generate static SQLite databases with FTS5 virtual tables to query index text instantly with SQL in client browser.
Ditch CSS framework bloat. Learn how to write a highly responsive, modern, auto-fitting blog card layout using pure native CSS grid and clamp values.
Why you don't need heavy frameworks like LangChain to build functional local AI agents. How to use vanilla Python or JS with Ollama's direct API.
Framework fatigue is real. Build a fully featured, beautiful chat interface for Ollama using only plain HTML, CSS, and Vanilla JavaScript.
A database is overkill for search on a static blog. Learn how to pre-build a lightweight JSON index and query it in the browser with simple JS.
Want to host dynamic side projects for free? Here is how to deploy SQLite on free tiers with automated Litestream streaming backups.
I spent six months using AI coding agents daily. Here's what surprised me, what frustrated me, and what I'd tell someone starting today.
A new space. A blank page. Some thoughts on why I'm starting this blog and my goals for the content.
Six months of using AI coding tools daily — the wins, the frustrations, and where I think this is heading.
In an era where AI can generate entire apps from a prompt, building something for yourself matters more than ever.
Forget the hype. Here's what the data actually says about AI and what developers should pay attention to right now.
No build step, no database, no server. Sometimes the oldest approach is the best one for the job.
The difference between AI-generated spaghetti and production-ready code is the prompt. Here's the framework I use every day.
The sexiest startup ideas get the most attention and the least revenue. Here's why boring software makes millionaires.
Static sites are great until someone says "can you add a contact form?" Here's how to handle it without spinning up a server.
Google's performance metrics sound intimidating. They're actually just three simple questions about your site.
Everyone uses JavaScript for dark mode. Here's how to build a multi-theme system with zero JS using CSS radio inputs.
Controversial opinion: if you're the only developer, feature branches are ceremony without value. Here's what I do instead.
Both tools let you run AI locally. But they take wildly different approaches — and the "best" one depends on what kind of developer you are.
Think you need a $3,000 GPU to run local AI? Absolutely not. Here's the guerrilla guide to running real LLMs on old hardware.
Stop uploading sensitive documents to ChatGPT. Build a fully offline document analysis system that never touches the internet.
You don't need a budget to ship a real product. Here's a complete production stack built entirely on free tiers.
Your brilliant tutorial has 3 views — all from your own browser. Here's how to fix that without becoming an SEO guru.
The developer graveyard is full of beautiful apps that no one asked for. Here's how to check if your idea has legs.
Redux has 1,800 GitHub issues. Your homemade state manager will have zero. Here's how to manage complex app state in plain JS.
Most websites are slow because of easily fixable mistakes. Here's a prioritized checklist that makes the biggest impact.