<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Kushal Sharma</title><description>Kushal Sharma builds AI infrastructure at Muse Mesh — an LLM gateway, self-hosted agent frameworks, and open-source tooling. Previously ten years shipping Android at Flipkart.</description><link>https://kushalsharma.github.io/</link><language>en-us</language><item><title>The ESP32 pinout cheat sheet I actually wanted</title><link>https://kushalsharma.github.io/writing/esp32-pinout-cheat-sheet/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/esp32-pinout-cheat-sheet/</guid><description>Every pinout diagram tells you what each pin can do. Almost none of them lead with what will stop your board booting, or which pins go dead the moment you turn on Wi-Fi. This is the reference I ended up writing for myself.</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate><category>esp32</category><category>hardware</category><category>reference</category><category>embedded</category></item><item><title>I have been building the same thing for ten years</title><link>https://kushalsharma.github.io/writing/same-thing-for-ten-years/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/same-thing-for-ten-years/</guid><description>A JSON layout engine, a schema-to-code generator, two widget frameworks, and now an LLM gateway. Four companies, four stacks, one idea I did not notice until I wrote them down in order.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><category>infrastructure</category><category>career</category><category>android</category><category>llm</category></item><item><title>The query said the data was dead. Twice, it was wrong.</title><link>https://kushalsharma.github.io/writing/the-query-was-lying/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/the-query-was-lying/</guid><description>I was auditing a production database to find what was safe to delete. Two of my findings said &quot;dead, safe to remove&quot; and both were artefacts of how I was measuring.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>firestore</category><category>databases</category><category>production</category><category>debugging</category></item><item><title>Your LLM gateway routes. Mine bills.</title><link>https://kushalsharma.github.io/writing/gateways-route-mine-bills/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/gateways-route-mine-bills/</guid><description>Routing between model providers is the commoditised half of the problem. The half nobody wants to build is knowing whose money you just spent — and it is the half that decides whether your AI product has a business model.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>llm</category><category>infrastructure</category><category>billing</category><category>gateway</category></item><item><title>What it costs you when one user writes an infinite loop</title><link>https://kushalsharma.github.io/writing/one-user-infinite-loop/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/one-user-infinite-loop/</guid><description>Nobody has to be malicious. A retry policy, an agent that does not know when to stop, and a for-loop over a spreadsheet are enough. Here is the arithmetic, and what actually stops it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>llm</category><category>infrastructure</category><category>billing</category><category>reliability</category></item><item><title>I built a pocket AI companion out of a ₹400 microcontroller</title><link>https://kushalsharma.github.io/writing/esp32-ai-buddy/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/esp32-ai-buddy/</guid><description>An ESP32 with an animated face, a microphone, a speaker and a wireless camera eye. You hold a button and talk to it, and it can call tools that move real hardware.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><category>esp32</category><category>hardware</category><category>ai-agents</category><category>buddy</category></item><item><title>I designed a PCB by talking to an agent</title><link>https://kushalsharma.github.io/writing/pcb-with-an-agent/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/pcb-with-an-agent/</guid><description>KiCad driven through an MCP server, autorouted, ground poured, DRC clean at zero errors. Also: the four things it got wrong, which are the interesting part.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><category>esp32</category><category>hardware</category><category>ai-agents</category><category>kicad</category><category>mcp</category></item><item><title>The microcontroller is a terminal. Your PC is the brain.</title><link>https://kushalsharma.github.io/writing/microcontroller-is-a-terminal/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/microcontroller-is-a-terminal/</guid><description>Version one ran everything on the ESP32 and was permanently out of memory. Version two moved the thinking to a proxy and got unbounded speech, streaming replies and swappable models for free.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><category>esp32</category><category>hardware</category><category>architecture</category><category>ai-agents</category></item><item><title>The flicker was the radar</title><link>https://kushalsharma.github.io/writing/the-flicker-was-the-radar/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/the-flicker-was-the-radar/</guid><description>A desk instrument started flickering on every screen. The cause was a sensor that had nothing to do with drawing, running on a schedule that had everything to do with it.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><category>esp32</category><category>hardware</category><category>debugging</category><category>firmware</category></item><item><title>Two heartbeats killed my WebSocket every thirty seconds</title><link>https://kushalsharma.github.io/writing/two-heartbeats/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/two-heartbeats/</guid><description>A healthy link that dropped like clockwork, and a device that would happily retry a dead IP address forever. Two connection bugs where the fix was removing something, not adding it.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><category>esp32</category><category>debugging</category><category>websockets</category><category>networking</category></item><item><title>I gave an agent a CAD program and asked for LED panels</title><link>https://kushalsharma.github.io/writing/cad-by-conversation/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/cad-by-conversation/</guid><description>Modular WS2812B panels, designed by describing constraints instead of drawing them. The interesting part is which half of the design work actually transferred.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>hardware</category><category>cad</category><category>ai-agents</category><category>3d-printing</category><category>mcp</category></item><item><title>Telegram was the right UI until I was sitting next to the machine</title><link>https://kushalsharma.github.io/writing/phoebe-needed-a-second-face/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/phoebe-needed-a-second-face/</guid><description>Phoebe runs on hardware in my house and I talk to it on Telegram. That is excellent from a train and slightly absurd from the chair in front of it.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>phoebe</category><category>telegram</category><category>self-hosted</category></item><item><title>Debugging a dead motor driver with a multimeter in one hand and an agent in the other</title><link>https://kushalsharma.github.io/writing/multimeter-and-an-agent/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/multimeter-and-an-agent/</guid><description>Four days, three power supplies, two motor drivers and one chip that turned out to be dead. The agent could run code on the robot. It could not see the robot. That division of labour turned out to be the whole trick.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><category>robotics</category><category>hardware</category><category>ai-agents</category><category>raspberry-pi</category></item><item><title>&quot;OpenAI-compatible&quot; is a contract, not a format</title><link>https://kushalsharma.github.io/writing/openai-compatible-is-a-contract/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/openai-compatible-is-a-contract/</guid><description>I renamed an environment variable to the accurate name and it silently rerouted my traffic to another company. Four days of small breakages, and what they say about what compatibility actually means.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><category>llm</category><category>gateway</category><category>api-design</category><category>mume</category></item><item><title>Thirty thousand moving objects and one main thread</title><link>https://kushalsharma.github.io/writing/thirty-thousand-moving-objects/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/thirty-thousand-moving-objects/</guid><description>A long weekend spent putting every satellite and every aircraft on a 3D globe in a browser. The globe was the easy part. Everything after it was a fight for the main thread.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><category>frontend</category><category>performance</category><category>webgl</category><category>dataviz</category></item><item><title>The gap between the answer and the bill</title><link>https://kushalsharma.github.io/writing/billing-after-the-answer/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/billing-after-the-answer/</guid><description>You cannot price an LLM call until after it has finished. That one fact decides the shape of every metering system you will ever build on top of one.</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><category>llm</category><category>billing</category><category>infrastructure</category><category>mume</category></item><item><title>Cancelling a stream doesn&apos;t cancel the bill</title><link>https://kushalsharma.github.io/writing/cancelling-a-stream/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/cancelling-a-stream/</guid><description>The user closes the tab. Your server writes into a socket nobody is reading. The provider keeps generating, and keeps charging. Nothing errors, which is the problem.</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><category>llm</category><category>streaming</category><category>infrastructure</category><category>billing</category></item><item><title>I gave an old Raspberry Pi 3 full access to my GitHub. Here&apos;s what happened in 48 hours.</title><link>https://kushalsharma.github.io/writing/building-phoebe-pi-assistant/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/building-phoebe-pi-assistant/</guid><description>A Raspberry Pi 3 Model B with 906MB of RAM, an autonomous TypeScript agent with 855 runtime-loaded skills, and two days of unsupervised access to my GitHub org.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>raspberry-pi</category><category>typescript</category><category>phoebe</category></item><item><title>Why are we innovating here? We already solved this.</title><link>https://kushalsharma.github.io/writing/stop-innovating-go-look/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/stop-innovating-go-look/</guid><description>The night Phoebe was built: one abandoned framework, one teardown, and the sentence that turned the evening around.</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>phoebe</category><category>raspberry-pi</category><category>telegram</category></item><item><title>Ten rounds on a rounded corner</title><link>https://kushalsharma.github.io/writing/ten-rounds-on-a-rounded-corner/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/ten-rounds-on-a-rounded-corner/</guid><description>An agent can write the CSS. It cannot look at the screen. That one asymmetry decides which parts of interface work go fast and which turn into a loop you have to break yourself.</description><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate><category>design</category><category>ai-agents</category><category>frontend</category><category>mume</category></item><item><title>Nine weeks from first commit to taking money</title><link>https://kushalsharma.github.io/writing/gateway-nine-weeks-to-production/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/gateway-nine-weeks-to-production/</guid><description>The commit log of an LLM gateway going from nothing to production, and what the order of it says about which parts are actually hard.</description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate><category>llm</category><category>infrastructure</category><category>mume</category><category>solo</category></item><item><title>Rate limiting an LLM API is not rate limiting a REST API</title><link>https://kushalsharma.github.io/writing/rate-limiting-an-llm-api/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/rate-limiting-an-llm-api/</guid><description>Requests are the wrong unit and everyone uses them anyway, including me. Here is why the right unit is so hard to enforce, and what to do until you can.</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><category>llm</category><category>api</category><category>infrastructure</category><category>mume</category></item><item><title>Mume Gateway: one endpoint, 500+ models</title><link>https://kushalsharma.github.io/writing/mume-ai-gateway-api/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/mume-ai-gateway-api/</guid><description>Point the OpenAI SDK at a different base URL and you have access to models from OpenAI, Anthropic, Google, Mistral and others — with per-user credits, quotas and billing behind it.</description><pubDate>Sat, 29 Nov 2025 00:00:00 GMT</pubDate><category>llm</category><category>api</category><category>infrastructure</category><category>mume</category></item><item><title>Stable Diffusion, from noise to image</title><link>https://kushalsharma.github.io/writing/stable-diffusion-intro/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/stable-diffusion-intro/</guid><description>How diffusion models turn random noise into coherent images, and running the whole thing locally with ComfyUI.</description><pubDate>Mon, 29 Jan 2024 00:00:00 GMT</pubDate><category>generative-ai</category><category>stable-diffusion</category><category>comfyui</category></item><item><title>Kubeflow for ML workflows</title><link>https://kushalsharma.github.io/writing/kubeflow-for-ml-workflows/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/kubeflow-for-ml-workflows/</guid><description>What Kubeflow is, the pieces that matter, and why ML pipelines belong on Kubernetes.</description><pubDate>Mon, 20 Jan 2020 00:00:00 GMT</pubDate><category>kubeflow</category><category>mlops</category><category>kubernetes</category></item><item><title>Docker save and load</title><link>https://kushalsharma.github.io/writing/docker-basics/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/docker-basics/</guid><description>Moving Docker images between machines without a registry - pull, commit, save, load.</description><pubDate>Tue, 12 Feb 2019 00:00:00 GMT</pubDate><category>docker</category><category>devops</category></item><item><title>LSTM networks with Keras for sequence prediction</title><link>https://kushalsharma.github.io/writing/lstm-keras/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/lstm-keras/</guid><description>How LSTM cells actually work - forget, input and output gates - and a worked Keras example for predicting sequences.</description><pubDate>Sun, 23 Sep 2018 00:00:00 GMT</pubDate><category>machine-learning</category><category>keras</category><category>python</category></item><item><title>Hello World</title><link>https://kushalsharma.github.io/writing/hello-world/</link><guid isPermaLink="true">https://kushalsharma.github.io/writing/hello-world/</guid><description>The first post on this blog. Views expressed here are solely mine.</description><pubDate>Thu, 04 May 2017 00:00:00 GMT</pubDate><category>meta</category></item></channel></rss>