<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Prakhar Shukla</title><description>Serial founder and software engineer. Former Founding Engineer at Yobr (Norway). Built products with 2.5M+ downloads and $140K+ revenue. Specializing in TypeScript, React, Node.js, and AI/ML (Vercel AI SDK, Mastra).</description><link>https://prakhar.codes/</link><item><title>I Taught Granola to Auto-Record My Gather Meetings</title><link>https://prakhar.codes/blog/auto-record-gather-meetings-in-granola/</link><guid isPermaLink="true">https://prakhar.codes/blog/auto-record-gather-meetings-in-granola/</guid><description>Gather keeps your mic open all day, so Granola never realizes you&apos;re in a meeting. Here&apos;s the little macOS watcher I built to start and stop recording automatically, using WebRTC, a deep link, and the Chrome DevTools Protocol.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>Automation</category><category>Granola</category><category>Gather</category><category>Remote Work</category><category>macOS</category><category>WebRTC</category><category>Electron</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/granola-gather.png" length="0" type="image/png"/></item><item><title>Try-Catch is a Lie: Why TypeScript Error Handling is Broken (and How to Fix It)</title><link>https://prakhar.codes/blog/try-catch-is-a-lie/</link><guid isPermaLink="true">https://prakhar.codes/blog/try-catch-is-a-lie/</guid><description>TypeScript catches every type error except the ones that crash your app at 2 AM. Here&apos;s how to build a Result type that makes errors impossible to ignore.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><category>TypeScript</category><category>Error Handling</category><category>Patterns</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/try-catch-is-a-lie.jpg" length="0" type="image/png"/></item><item><title>Turning Code into Data: Demystifying ASTs</title><link>https://prakhar.codes/blog/turning-code-into-data-demystifying-asts/</link><guid isPermaLink="true">https://prakhar.codes/blog/turning-code-into-data-demystifying-asts/</guid><description>Ever wished you could query your codebase like a database? Here&apos;s how ASTs and ts-morph let you parse TypeScript, walk the tree, and build tools that understand your code.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><category>AST</category><category>TypeScript</category><category>ts-morph</category><category>Developer Tools</category><category>Code Analysis</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/turning-code-into-data-ast.jpg" length="0" type="image/png"/></item><item><title>How Do AI Agents Actually Work Under the Hood?</title><link>https://prakhar.codes/blog/how-ai-agents-work-under-the-hood/</link><guid isPermaLink="true">https://prakhar.codes/blog/how-ai-agents-work-under-the-hood/</guid><description>Forget the frameworks. Let&apos;s build an AI agent from scratch to understand streaming, tool calling, and the agentic loop.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate><category>AI</category><category>Agents</category><category>TypeScript</category><category>Streaming</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/ai-agents-under-the-hood.jpg" length="0" type="image/png"/></item><item><title>I Put My Life on Autopilot with OpenClaw</title><link>https://prakhar.codes/blog/how-i-set-up-an-openclawd-that-remembers-things/</link><guid isPermaLink="true">https://prakhar.codes/blog/how-i-set-up-an-openclawd-that-remembers-things/</guid><description>Meet Nyx, the AI cat that checks my emails, controls my smart home, judges my schedule, and actually remembers who I am.</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate><category>OpenClaw</category><category>AI</category><category>Automation</category><category>Productivity</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/nyx-openclaw-setup.png" length="0" type="image/png"/></item><item><title>I Built a TUI to Stop Losing Claude Sessions</title><link>https://prakhar.codes/blog/i-built-a-tui-to-stop-losing-claude-sessions/</link><guid isPermaLink="true">https://prakhar.codes/blog/i-built-a-tui-to-stop-losing-claude-sessions/</guid><description>How I solved the problem of managing 10+ Claude Code sessions across different projects with a simple terminal UI, fuzzy search, and tmux integration.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><category>Developer Tools</category><category>CLI</category><category>TypeScript</category><category>Terminal</category><category>Ink</category><category>AI Tools</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/claude-launcher.png" length="0" type="image/png"/></item><item><title>Stop Spending Weeks Finding Good Domains</title><link>https://prakhar.codes/blog/stop-spending-weeks-finding-domains/</link><guid isPermaLink="true">https://prakhar.codes/blog/stop-spending-weeks-finding-domains/</guid><description>How I checked 200+ domain variations in under a minute using Vercel&apos;s bulk domain availability API and parallel AI agents.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><category>Domains</category><category>Vercel</category><category>API</category><category>AI Agents</category><category>Productivity</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/stop-spending-weeks-finding-domains.png" length="0" type="image/png"/></item><item><title>How to Build Products That People Actually Use</title><link>https://prakhar.codes/blog/how-to-build-products-people-use/</link><guid isPermaLink="true">https://prakhar.codes/blog/how-to-build-products-people-use/</guid><description>What I learned from building Andronix - 2.5M downloads, $140K revenue, and still running 6 years later.</description><pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate><category>Product</category><category>Startup</category><category>Indie Hacking</category><category>Building</category><category>Advice</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/andronix_cloudflare.png" length="0" type="image/png"/></item><item><title>How to Build a Complete RAG Agent with Mastra and AI SDK</title><link>https://prakhar.codes/blog/build-complete-rag-agent-mastra-ai-sdk/</link><guid isPermaLink="true">https://prakhar.codes/blog/build-complete-rag-agent-mastra-ai-sdk/</guid><description>A practical guide to building a production RAG system with internal knowledge search, external fallback, conversation history, and streaming responses. Featuring a real implementation: AI chat for my portfolio.</description><pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate><category>AI</category><category>Mastra</category><category>AI SDK</category><category>RAG</category><category>TypeScript</category><category>Agents</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/build_complete_rag_agent.png" length="0" type="image/png"/></item><item><title>Why I Love Mastra: Building Production AI Agents That Actually Work</title><link>https://prakhar.codes/blog/why-i-love-mastra/</link><guid isPermaLink="true">https://prakhar.codes/blog/why-i-love-mastra/</guid><description>How Mastra and AI SDK helped me build a production-grade AI agent with 11 specialized tools, streaming responses, real business logic, and RAG capabilities.</description><pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate><category>AI</category><category>Mastra</category><category>AI SDK</category><category>TypeScript</category><category>Agents</category><category>RAG</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/why_i_love_mastra.jpg" length="0" type="image/png"/></item><item><title>Automate Your Resume Deployment with GitHub Actions, LaTeX, and Cloudflare R2</title><link>https://prakhar.codes/blog/automate-resume-deployment-github-actions-latex/</link><guid isPermaLink="true">https://prakhar.codes/blog/automate-resume-deployment-github-actions-latex/</guid><description>Build a fully automated resume pipeline that compiles LaTeX to PDF and deploys to Cloudflare R2 on every git push, with versioning and metadata tracking.</description><pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate><category>DevOps</category><category>GitHub Actions</category><category>LaTeX</category><category>Cloudflare</category><category>CI/CD</category><category>Automation</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/resume_automation.jpeg" length="0" type="image/png"/></item><item><title>Complete Typesafe REST APIs with TS-rest</title><link>https://prakhar.codes/blog/complete-typesafe-rest-api-with-ts-rest/</link><guid isPermaLink="true">https://prakhar.codes/blog/complete-typesafe-rest-api-with-ts-rest/</guid><description>Let&apos;s not depend on TRPC clients and build our own typesafe REST API with TypeScript.</description><pubDate>Sat, 13 Apr 2024 00:00:00 GMT</pubDate><category>Backend</category><category>TypeScript</category><category>REST API</category><category>NodeJS</category><category>Express</category><author>prakhar@prakhar.codes</author><enclosure url="https://prakhar.codes/images/blogs/typesafe_rest_api_tsrest.jpeg" length="0" type="image/png"/></item></channel></rss>