<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel>
<title>Harman Kamboj — Writing</title>
<link>https://hammyasf.github.io/blog.html</link>
<description>Essays on Web3, AI engineering, full-stack, and shipping software.</description>
<language>en-us</language>
<item><title>Browser game asset streaming: the first playable frame is the whole budget</title><link>https://hammyasf.github.io/browser-game-asset-streaming.html</link><guid>https://hammyasf.github.io/browser-game-asset-streaming.html</guid><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><description>Browser game asset streaming is a load-order problem, not a compression one. What I ship before the first playable frame, what waits, and how to avoid the mid-game hitch.</description></item>
<item><title>Session keys and the frontend: the session ends before your UI notices</title><link>https://hammyasf.github.io/session-keys-frontend.html</link><guid>https://hammyasf.github.io/session-keys-frontend.html</guid><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><description>Session keys stop the wallet popups, then die quietly. The four ways a session ends, why your UI is the last to know, and what I would build instead of a connected boolean.</description></item>
<item><title>Dynamic tool selection: why loading every tool wrecks your agent's accuracy</title><link>https://hammyasf.github.io/dynamic-tool-selection-agents.html</link><guid>https://hammyasf.github.io/dynamic-tool-selection-agents.html</guid><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><description>Load every tool into an agent and tool-calling accuracy falls off a cliff. Why more tools make the model guess, and how I filter the toolset at runtime with retrieval.</description></item>
<item><title>React Server Components did not kill the waterfall, they moved it to the server</title><link>https://hammyasf.github.io/react-server-components-server-waterfall.html</link><guid>https://hammyasf.github.io/react-server-components-server-waterfall.html</guid><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate><description>React Server Components do not delete the data waterfall, they move it server-side where it hides. How the server-side waterfall forms and how I unwind it.</description></item>
<item><title>Websocket backpressure in the browser: the client cannot ask you to slow down</title><link>https://hammyasf.github.io/websocket-backpressure-browser.html</link><guid>https://hammyasf.github.io/websocket-backpressure-browser.html</guid><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><description>Websocket backpressure does not exist in the browser client. Why a fast feed drowns a slow tab, and the pacing patterns I use to keep live UIs honest.</description></item>
<item><title>Streaming made my CLS worse: the Suspense boundary was in the wrong place</title><link>https://hammyasf.github.io/suspense-boundary-cls-streaming.html</link><guid>https://hammyasf.github.io/suspense-boundary-cls-streaming.html</guid><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate><description>Streaming fixed my LCP and hurt CLS. Why matching skeleton heights does not work, and how Suspense boundary placement decides your layout shift.</description></item>
<item><title>What an intent-based swaps frontend has to stop promising</title><link>https://hammyasf.github.io/intent-based-swaps-frontend.html</link><guid>https://hammyasf.github.io/intent-based-swaps-frontend.html</guid><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate><description>Intent-based swaps hand execution to a solver, so your swap UI can no longer promise a price it does not control. What breaks in the frontend and how I handle it.</description></item>
<item><title>Rollback netcode in the browser: determinism is the hard part</title><link>https://hammyasf.github.io/rollback-netcode-browser-determinism.html</link><guid>https://hammyasf.github.io/rollback-netcode-browser-determinism.html</guid><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><description>Rollback netcode in the browser is not the hard part. Determinism is. Why your game desyncs, what breaks in JavaScript, and whether you even need rollback.</description></item>
<item><title>Adding x402 payments to an API: the HTTP 402 flow, minus the hype</title><link>https://hammyasf.github.io/x402-payments-api.html</link><guid>https://hammyasf.github.io/x402-payments-api.html</guid><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><description>x402 payments let software pay software over HTTP 402. What the flow really does, why it lands for agents, and the production traps the demo skips.</description></item>
<item><title>Gasless transactions are not free: what a paymaster costs</title><link>https://hammyasf.github.io/gasless-transactions-paymaster.html</link><guid>https://hammyasf.github.io/gasless-transactions-paymaster.html</guid><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate><description>Gasless transactions hide the gas fee from users, but a paymaster still pays and can be drained. What breaks in production and how to sponsor gas safely.</description></item>
<item><title>EIP-7702 changed what your frontend can assume about a wallet</title><link>https://hammyasf.github.io/eip-7702-frontend.html</link><guid>https://hammyasf.github.io/eip-7702-frontend.html</guid><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><description>EIP-7702 lets a normal wallet address carry code, so your frontend can no longer treat every EOA as a plain key. What breaks, how to detect a delegated account, and the phishing surface it brings.</description></item>
<item><title>What breaks when you cancel a streaming LLM response</title><link>https://hammyasf.github.io/cancel-streaming-llm-response.html</link><guid>https://hammyasf.github.io/cancel-streaming-llm-response.html</guid><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><description>Cancel a streaming LLM response and the UI stops, but the model keeps generating and billing. What actually breaks on cancel, and how I wire it right.</description></item>
<item><title>The one thing I still will not let an AI agent do: database migrations</title><link>https://hammyasf.github.io/ai-agent-database-migrations.html</link><guid>https://hammyasf.github.io/ai-agent-database-migrations.html</guid><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><description>AI agent database migrations sound fine in a demo and go quiet-wrong on real data. Why the agent can write the migration but does not get to run it in prod.</description></item>
<item><title>Why serverless keeps exhausting your Postgres connection pool</title><link>https://hammyasf.github.io/serverless-postgres-connection-pool.html</link><guid>https://hammyasf.github.io/serverless-postgres-connection-pool.html</guid><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><description>Serverless functions exhaust a Postgres connection pool because each instance opens its own. Why it happens under load, and how I actually fix it in production.</description></item>
<item><title>MCP or a direct API call? When I skip the tool server</title><link>https://hammyasf.github.io/mcp-vs-direct-api-agents.html</link><guid>https://hammyasf.github.io/mcp-vs-direct-api-agents.html</guid><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><description>MCP vs direct API for an AI agent: when the tool server earns its place, when a plain API call is less code and fewer failure modes, and the test I use.</description></item>
<item><title>Giving an AI agent on-chain data? Do not start with raw RPC</title><link>https://hammyasf.github.io/ai-agent-onchain-data.html</link><guid>https://hammyasf.github.io/ai-agent-onchain-data.html</guid><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate><description>Giving an AI agent on-chain data through raw RPC is a trap. Why I put an indexer between the agent and the chain, and what that actually fixes.</description></item>
<item><title>Durable execution: how I make an AI agent survive a crash mid-run</title><link>https://hammyasf.github.io/durable-execution-ai-agents.html</link><guid>https://hammyasf.github.io/durable-execution-ai-agents.html</guid><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><description>Durable execution for AI agents lets a run resume from the last checkpoint after a crash instead of redoing unsafe work. Here is how I actually set it up.</description></item>
<item><title>WebGPU will not fix your slow browser game</title><link>https://hammyasf.github.io/webgpu-slow-browser-game.html</link><guid>https://hammyasf.github.io/webgpu-slow-browser-game.html</guid><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><description>WebGPU shipped in every browser, but it will not fix a slow browser game. The real bottlenecks are download size and the main thread, not raw GPU power.</description></item>
<item><title>Most multi-agent systems do not need to be multi-agent</title><link>https://hammyasf.github.io/multi-agent-systems-overhead.html</link><guid>https://hammyasf.github.io/multi-agent-systems-overhead.html</guid><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><description>Most multi-agent systems add coordination overhead before they add value. When one good agent wins, when multiple agents pay off, and how I decide.</description></item>
<item><title>SSE or WebSockets? How I actually pick for real-time features</title><link>https://hammyasf.github.io/sse-vs-websockets-real-time-choice.html</link><guid>https://hammyasf.github.io/sse-vs-websockets-real-time-choice.html</guid><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><description>SSE or WebSockets for real-time features: how I actually decide, from someone who shipped live price and trading screens. Direction of data beats raw power.</description></item>
</channel></rss>
