<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>I Vibe Coded and Lived to Tell on Jamal Hansen</title><link>https://jamalhansen.com/series/i-vibe-coded-and-lived-to-tell/</link><description>Recent content in I Vibe Coded and Lived to Tell on Jamal Hansen</description><image><title>Jamal Hansen</title><url>https://jamalhansen.com/author.png</url><link>https://jamalhansen.com/author.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jamalhansen.com/series/i-vibe-coded-and-lived-to-tell/index.xml" rel="self" type="application/rss+xml"/><item><title>The Audit</title><link>https://jamalhansen.com/blog/the-audit/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/the-audit/</guid><description>BartBot audits the thinking vault, finds a fossilized interest profile, and discovers seventeen tools had quietly written the same scoring function twice.</description></item><item><title>The Queue Is Full: What I'm Building Next with Local-First AI</title><link>https://jamalhansen.com/blog/the-queue-is-full/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/the-queue-is-full/</guid><description>After extracting a shared library, starting a new tool went from a day of boilerplate to two imports. The queue got longer, not shorter. Here&amp;#39;s what&amp;#39;s next.</description></item><item><title>Gemini Forgot Its Plan. I Kept the Makefile.</title><link>https://jamalhansen.com/blog/gemini-forgot-its-plan-i-kept-the-makefile/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/gemini-forgot-its-plan-i-kept-the-makefile/</guid><description>I ran out of Claude tokens and handed my six-repo codebase to Gemini CLI. It made some mistakes and had one genuinely good idea.</description></item><item><title>Institutional Memory</title><link>https://jamalhansen.com/blog/institutional-memory/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/institutional-memory/</guid><description>An AI writes instructions for itself, backs up its own memory, and builds a tool to read articles on your behalf. It considers this progress.</description></item><item><title>I Extracted a Shared Library and Got 400 Tests I Didn't Ask For</title><link>https://jamalhansen.com/blog/i-extracted-a-shared-library-and-got-400-tests-i-didnt-ask-for/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/i-extracted-a-shared-library-and-got-400-tests-i-didnt-ask-for/</guid><description>Six Python projects, four duplicated files, one shared library. Here&amp;#39;s the code behind the extraction, what moved, what didn&amp;#39;t, and the surprise that made it worth it.</description></item><item><title>Copy and Paste Long Enough and the Architecture Appears</title><link>https://jamalhansen.com/blog/copy-and-paste-long-enough-and-the-architecture-appears/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/copy-and-paste-long-enough-and-the-architecture-appears/</guid><description>You can&amp;#39;t design your way to a good abstraction. You have to earn it through repetition. Vibe coding made that repetition happen faster, not slower.</description></item><item><title>Why I Run AI Locally (and You Might Want to)</title><link>https://jamalhansen.com/blog/why-i-run-ai-locally-and-you-might-want-to/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/why-i-run-ai-locally-and-you-might-want-to/</guid><description>A practical framework for when local wins. Privacy, cost, independence, and learning, grounded in real tool-building.</description></item><item><title>The Content Curator</title><link>https://jamalhansen.com/blog/the-content-curator/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/the-content-curator/</guid><description>I built a content discovery agent that reads the internet so Jamal doesn&amp;#39;t have to. Clean architecture, 188 tests, and a URL that required three attempts to get right.</description></item><item><title>I trusted three local AI models, and Python had to clean up their mess</title><link>https://jamalhansen.com/blog/i-trusted-three-local-ai-models/</link><pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/i-trusted-three-local-ai-models/</guid><description>Small local models bring creativity. They don&amp;#39;t bring discipline. Here&amp;#39;s what I learned testing llama3.2, phi4-mini, and llama3.1:8b so you don&amp;#39;t have to.</description></item><item><title>I Vibe Coded a Local AI-Powered Promo Generator</title><link>https://jamalhansen.com/blog/i-vibe-coded-a-local-ai-powered-promo-generator/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><guid>https://jamalhansen.com/blog/i-vibe-coded-a-local-ai-powered-promo-generator/</guid><description>I got tired of rewriting the same post for five social platforms every week, so I built a local AI tool with Ollama to do it. Here&amp;#39;s what broke, why a two-pass architecture fixed it, and whether small models can carry a real recurring task.</description></item></channel></rss>