<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>urjit.io</title><description>Engineering blog by Urjit Singh Bhatia — distributed systems, AI tooling, and infrastructure</description><link>https://urjit.io/</link><item><title>Personalizing Websites at the Edge</title><link>https://urjit.io/blog/personalizing-at-the-edge/</link><guid isPermaLink="true">https://urjit.io/blog/personalizing-at-the-edge/</guid><description>A bookmarklet for United&apos;s flight search led to a broader idea: users no longer have to accept default web UX as fixed. AI makes local, runtime personalization much more practical.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Claude Code&apos;s Silent Truncation Bug: Why AI Couldn&apos;t Fix a 5-Second Regex</title><link>https://urjit.io/blog/when-claude-code-keeps-spinning/</link><guid isPermaLink="true">https://urjit.io/blog/when-claude-code-keeps-spinning/</guid><description>Claude Code silently truncates lines longer than 2,000 characters — no error, no warning. Minified HTML, bookmarklets, and SVGs all hit this. I watched it loop for 20 minutes on a five-file project it could never fully read. Diagnostic, repro scripts, and workarounds included.</description><pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Getting Claude Code&apos;s Multi-Agent Team Mode to Actually Work</title><link>https://urjit.io/blog/fixing-my-cli-with-the-cli/</link><guid isPermaLink="true">https://urjit.io/blog/fixing-my-cli-with-the-cli/</guid><description>I tried to test Claude Code&apos;s multi-agent team mode with split panes in iTerm2. The it2 CLI was broken, the docs were confusing, and I spent the whole session yak-shaving. Here&apos;s what actually works.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>AI Exposes Your Slow Feedback Loops</title><link>https://urjit.io/blog/ai-exposes-your-slow-feedback-loops/</link><guid isPermaLink="true">https://urjit.io/blog/ai-exposes-your-slow-feedback-loops/</guid><description>AI coding assistants amplify both velocity and bottlenecks. Teams seeing 10x gains already had fast feedback loops. Here&apos;s why your infrastructure is now the bottleneck.</description><pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate></item><item><title>The &apos;Bring Your Own Coach&apos; Pattern: Building AI-Powered Apps Without Integrating AI</title><link>https://urjit.io/blog/bring-your-own-ai-coach/</link><guid isPermaLink="true">https://urjit.io/blog/bring-your-own-ai-coach/</guid><description>I had 10 years of workout data and wanted AI coaching for my strength training. Instead of building AI into my app, I built something simpler: a way to let any LLM generate workout configs. Zero AI code, zero costs, perfect privacy.</description><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Why is Gemini CLI So Slow? Investigation into 35 Second Startup Times</title><link>https://urjit.io/blog/the-high-cost-of-a-slow-cli/</link><guid isPermaLink="true">https://urjit.io/blog/the-high-cost-of-a-slow-cli/</guid><description>Deep dive into why Google&apos;s Gemini CLI takes 35-60 seconds to start. Analyzing 129,681 syscalls, MCP server initialization, and fundamental architectural issues affecting developer productivity.</description><pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Troubleshooting 1Password PassKeys on Android/(Android Chrome)</title><link>https://urjit.io/blog/passkeys-1password-android/</link><guid isPermaLink="true">https://urjit.io/blog/passkeys-1password-android/</guid><pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate></item><item><title>VFS Global Charges for Customer Service While Breaking UX With a Non-Functional Keyboard</title><link>https://urjit.io/blog/vfs/</link><guid isPermaLink="true">https://urjit.io/blog/vfs/</guid><pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Using a GitHub template repo for Golang projects</title><link>https://urjit.io/blog/golang-template-repo-pattern/</link><guid isPermaLink="true">https://urjit.io/blog/golang-template-repo-pattern/</guid><description>How to rewrite import paths with a bash one-liner when starting a repo from a github template</description><pubDate>Tue, 13 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Leveraging HAProxy Programs to Test URL Rewrite Rules</title><link>https://urjit.io/blog/haproxy-program-tests/</link><guid isPermaLink="true">https://urjit.io/blog/haproxy-program-tests/</guid><description>Learn how to use the `program` directive in HAProxy to test URL rewrite rules and routing logic. This guide covers setting up HAProxy with `Gor` for traffic capture and verification, ensuring your configurations work as expected.</description><pubDate>Fri, 14 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Debugging shell-startup latency while using Starship Prompt</title><link>https://urjit.io/blog/debugging_prompt_latency_with_starship_prompt/</link><guid isPermaLink="true">https://urjit.io/blog/debugging_prompt_latency_with_starship_prompt/</guid><description>Troubleshooting slowdown issues with the Starship terminal prompt during terminal startup. Here&apos;s how I fixed it and sped things up.</description><pubDate>Sat, 20 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Thoughts about time - part one</title><link>https://urjit.io/blog/time-part-one/</link><guid isPermaLink="true">https://urjit.io/blog/time-part-one/</guid><pubDate>Mon, 10 Jan 2022 00:00:00 GMT</pubDate></item><item><title>HAProxy - a tale of two queues</title><link>https://urjit.io/blog/haproxy-queues/</link><guid isPermaLink="true">https://urjit.io/blog/haproxy-queues/</guid><description>Discover how to optimize HAProxy performance by tuning queue and networking settings. This guide explores handling increased traffic, adjusting `maxconn` and `tcp_max_syn_backlog`, and verifying system state to ensure efficient load balancing.</description><pubDate>Sat, 26 Jun 2021 00:00:00 GMT</pubDate></item><item><title>Scaling RabbitMQ with shared exchanges</title><link>https://urjit.io/blog/scaling-rabbitmq-shared-exchange/</link><guid isPermaLink="true">https://urjit.io/blog/scaling-rabbitmq-shared-exchange/</guid><pubDate>Mon, 10 Aug 2020 00:00:00 GMT</pubDate></item><item><title>Understanding and Implementing Causal Profiling with Coz and Cozgo</title><link>https://urjit.io/blog/cozgo/</link><guid isPermaLink="true">https://urjit.io/blog/cozgo/</guid><description>cozgo, a Go wrapper for the Coz library for causal profiling in Go projects.</description><pubDate>Wed, 15 Apr 2020 00:00:00 GMT</pubDate></item><item><title>Good old bash for startup dependency management</title><link>https://urjit.io/blog/bash-startup-dependency-mgmt/</link><guid isPermaLink="true">https://urjit.io/blog/bash-startup-dependency-mgmt/</guid><description>A simple and clean way to wait for dependencies to be available in Unix*y environments. I often use this script to orchestrate my docker containers.</description><pubDate>Tue, 16 Jan 2018 00:00:00 GMT</pubDate></item><item><title>A fun integer overflow bug investigation</title><link>https://urjit.io/blog/a-fun-bug-investigation/</link><guid isPermaLink="true">https://urjit.io/blog/a-fun-bug-investigation/</guid><description>Explore a fun investigation into an integer overflow bug in Metabase. Learn how a simple unit conversion mistake led to a `NumberFormatException` and how the issue was resolved by debugging logs and updating the database.</description><pubDate>Sun, 10 Dec 2017 00:00:00 GMT</pubDate></item><item><title>Fast data migration from MySQL to Redshift on the command line</title><link>https://urjit.io/blog/shoveling-data-to-redshift-with-pipes-and-filters/</link><guid isPermaLink="true">https://urjit.io/blog/shoveling-data-to-redshift-with-pipes-and-filters/</guid><description>Learn how to migrate large datasets from MySQL to AWS Redshift using command-line tools. This guide covers extracting data, transforming it for Redshift, and loading it via S3, achieving efficient data transfer with Unix pipes and filters.</description><pubDate>Sun, 30 Jul 2017 00:00:00 GMT</pubDate></item></channel></rss>