<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Saurabh Kumar</title><link>https://saurabh-kumar.com/</link><description>Recent content on Saurabh Kumar</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright © 2025, Saurabh Kumar.</copyright><lastBuildDate>Sun, 14 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://saurabh-kumar.com/index.xml" rel="self" type="application/rss+xml"/><item><title>My Local LLM On A 32 GB M1 Pro</title><link>https://saurabh-kumar.com/articles/2026/06/my-local-llm-on-a-32-gb-m1-pro/</link><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2026/06/my-local-llm-on-a-32-gb-m1-pro/</guid><description>&lt;p&gt;My pi setup has a &lt;code&gt;fast&lt;/code&gt; mode: a slot I wired into my own config for the small, high-volume questions, pointed at Bedrock&amp;rsquo;s Haiku 4.5. It is a good model. Cheap, responsive, and it answers the kind of small, contained question I throw at it twenty times a day without complaining. It is also not mine. It runs on hardware I do not own, it can be deprecated or quietly swapped the week I have come to lean on it, and every one of those small questions hands a slice of my code to a third party.&lt;/p&gt;</description></item><item><title>Django ORM: From sync_to_async Threads to Native psycopg3</title><link>https://saurabh-kumar.com/articles/2026/06/django-orm-from-sync_to_async-threads-to-native-psycopg3/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2026/06/django-orm-from-sync_to_async-threads-to-native-psycopg3/</guid><description>&lt;p&gt;Django shipped async ORM methods back in 3.1, and for years I told people they
were not really async. &lt;code&gt;aget()&lt;/code&gt;, &lt;code&gt;afilter()&lt;/code&gt;, &lt;code&gt;acreate()&lt;/code&gt;, the whole &lt;code&gt;a&lt;/code&gt;-prefixed
surface — the docs called it async support, and in the sense that mattered it was
not. Every one of those calls still blocked a real OS thread. You got coroutine
syntax without coroutine performance.&lt;/p&gt;
&lt;p&gt;Django 6.0 fixed it for real in December 2025. I want to walk through the path
from &amp;ldquo;fake async via threads&amp;rdquo; to &amp;ldquo;native async via psycopg3,&amp;rdquo; because it is not
a story about a feature landing. It is a story about three constraints that
boxed Django in for five years: &lt;code&gt;psycopg2&lt;/code&gt; blocks, connection state lived in
thread-locals, and the entire ORM assumed DB-API2. Once you see those three, every
design decision Django made falls out of them almost mechanically.&lt;/p&gt;</description></item><item><title>How I Optimized My Zsh Startup Time</title><link>https://saurabh-kumar.com/articles/2026/05/how-i-optimized-my-zsh-startup-time/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2026/05/how-i-optimized-my-zsh-startup-time/</guid><description>&lt;p&gt;My zsh prompt was taking close to a second to appear on a fresh terminal. Not catastrophic. But you feel it every time tmux spawns a new pane, and for me that is constantly. The config had grown for years, one &lt;code&gt;eval&lt;/code&gt; and one plugin at a time, and nobody had been auditing it, least of all me.&lt;/p&gt;
&lt;p&gt;What follows is the audit, and the eight things I changed. The numbers are estimates, not measurements, and I will say so again at the end.&lt;/p&gt;</description></item><item><title>The Great Fork: How Redis Lost Its Soul and Valkey Found It</title><link>https://saurabh-kumar.com/articles/2026/01/the-great-fork-how-redis-lost-its-soul-and-valkey-found-it/</link><pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2026/01/the-great-fork-how-redis-lost-its-soul-and-valkey-found-it/</guid><description>&lt;h2 id="the-moment-everything-changed"&gt;The Moment Everything Changed&lt;/h2&gt;
&lt;p&gt;Picture this: It&amp;rsquo;s March 2024, and somewhere in a conference room, executives at Redis Inc. are making a decision. They&amp;rsquo;re looking at their balance sheets, watching cloud giants like AWS and Google profit from offering managed Redis services, and they&amp;rsquo;re thinking: &lt;em&gt;This isn&amp;rsquo;t fair. We built this. Why are they making all the money?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So they pull the trigger. &lt;strong&gt;On March 20, 2024&lt;/strong&gt;, after fifteen years of operating under the BSD 3-clause license—one of the most permissive licenses in open source—they announce a switch to dual source-available licensing: RSALv2 and SSPLv1. The new licensing takes effect with Redis 7.4. The message is simple: you can still see our code, but if you want to build a business with it, we need our cut.&lt;/p&gt;</description></item><item><title>Default Apps 2025</title><link>https://saurabh-kumar.com/articles/2025/11/default-apps-2025/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2025/11/default-apps-2025/</guid><description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Apps I’ve been using regularly this year.”&lt;/strong&gt; Heavily inspired by &lt;a href="https://micro.webology.dev/2025/10/29/default-apps-here-are-my/" rel="noopener external"&gt;Jeff
Triplett&lt;/a&gt;.
Catalogued by Robb Knight’s &lt;a href="https://defaults.rknight.me/" rel="noopener external"&gt;App Defaults&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mail Client&lt;/strong&gt;: &lt;a href="https://www.edisonmail.com/" rel="noopener external"&gt;Edison Mail&lt;/a&gt; and gmail in browser&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notes&lt;/strong&gt;: &lt;a href="https://obsidian.md" rel="noopener external"&gt;Obsidian&lt;/a&gt;, SimpleNotes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;To-Do&lt;/strong&gt;: &lt;a href="https://bulletjournal.com/" rel="noopener external"&gt;Bullet Journel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Photo Shooting&lt;/strong&gt;: iPhone, Canon 6D&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Photo Editing&lt;/strong&gt;: PhotoShop, Gimp&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calendar&lt;/strong&gt;: &lt;a href="https://www.notion.com/product/calendar" rel="noopener external"&gt;Notion Calendar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud File Storage&lt;/strong&gt;: iCloud + Google Drive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSS&lt;/strong&gt;: &lt;a href="https://netnewswire.com/" rel="noopener external"&gt;NetNewsWire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contacts&lt;/strong&gt;: Apple Contacts &amp;amp; Google Contacts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser&lt;/strong&gt;: Arc, Zen Browser and Safari&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat&lt;/strong&gt;: Apple Messages, Discord, Slack&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bookmarks&lt;/strong&gt;: RainDrop.io&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read It Later&lt;/strong&gt;: Safari Reading List&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Word Processing&lt;/strong&gt;: Apple Pages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spreadsheets&lt;/strong&gt;: Google Sheets&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presentations&lt;/strong&gt;: Figma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shopping Lists&lt;/strong&gt;: Amazon&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Budgeting and Personal Finance&lt;/strong&gt;: paisa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;News&lt;/strong&gt;: Perplexity.ai, &lt;a href="https://netnewswire.com/" rel="noopener external"&gt;NetNewsWire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Music&lt;/strong&gt;: Youtube Music&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password Management&lt;/strong&gt;: 1Password and Apple Passwords&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code Editor&lt;/strong&gt;: &lt;a href="https://zed.dev/" rel="noopener external"&gt;Zed&lt;/a&gt; &amp;amp; Cursor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPN&lt;/strong&gt;: &lt;a href="https://adguard.com/en/welcome.html" rel="noopener external"&gt;AdGuard&lt;/a&gt;, Zscalar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="bonus-items"&gt;Bonus Items&lt;/h3&gt;
&lt;p&gt;Important enough to include here, ordered roughly by how often I rely on each.&lt;/p&gt;</description></item><item><title>Notes on Understanding Hebbian Learning</title><link>https://saurabh-kumar.com/articles/2025/11/notes-on-understanding-hebbian-learning/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2025/11/notes-on-understanding-hebbian-learning/</guid><description>Dive into Hebbian learning, the fundamental principle of how our brains learn and form memories. From Pavlov&amp;rsquo;s dogs to your morning coffee ritual, discover how neurons wire together through repetition.</description></item><item><title>Cut Django Database Latency by 50-70ms With Native Connection Pooling</title><link>https://saurabh-kumar.com/articles/2025/06/cut-django-database-latency-by-50-70ms-with-native-connection-pooling/</link><pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2025/06/cut-django-database-latency-by-50-70ms-with-native-connection-pooling/</guid><description>&lt;p&gt;Your Django app is hemorrhaging database resources. Each HTTP request creates
and destroys expensive PostgreSQL connections, adding 50-70ms of latency your
users feel directly. This connection overhead costs you real money in cloud
environments where database CPU time translates to monthly bills.&lt;/p&gt;
&lt;p&gt;Django 5.1 (released August 7, 2024) eliminated this waste with native
connection pooling&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. Deploy the fix in under 10 minutes and watch your
database connection overhead drop by 60-80% while your response times improve by
10-30%.&lt;/p&gt;</description></item><item><title>ty: Astral's Take on Python Type Checking</title><link>https://saurabh-kumar.com/articles/2025/05/ty-astrals-take-on-python-type-checking/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2025/05/ty-astrals-take-on-python-type-checking/</guid><description>&lt;p&gt;Anyone who has run &lt;code&gt;mypy&lt;/code&gt; on a real codebase knows the workarounds. You enable the daemon, you keep the incremental cache warm, you scope the check to the files you touched, and you still wait a few seconds for the editor to catch up after a rename. In CI it is worse, because the cache is cold and the full run can stretch into the minutes. None of this is broken, exactly. It is just the cost you learn to pay. So when a new checker says the wait can mostly go away, I pay attention, but I also want to know what it costs.&lt;/p&gt;</description></item><item><title>Handling Django Authentication Redirects in HTMX Applications</title><link>https://saurabh-kumar.com/articles/2025/05/handling-django-authentication-redirects-in-htmx-applications/</link><pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2025/05/handling-django-authentication-redirects-in-htmx-applications/</guid><description>&lt;p&gt;Ever been in the middle of building a slick Django app with HTMX when you hit
that authentication headache? You know the one - a user&amp;rsquo;s session times out,
they click something, and instead of getting a proper login page, they get a
weird login form fragment jammed into whatever DOM element was being updated.
Not exactly the seamless experience we&amp;rsquo;re going for!&lt;/p&gt;
&lt;p&gt;I ran into this problem recently and thought, &amp;ldquo;There&amp;rsquo;s got to be a better way.&amp;rdquo;
Spoiler alert: there is! Let me show you a simple middleware solution that makes
this authentication dance much smoother.&lt;/p&gt;</description></item><item><title>Efficiently Managing Mass URL Redirects with Nginx</title><link>https://saurabh-kumar.com/articles/2017/09/efficiently-managing-mass-url-redirects-with-nginx/</link><pubDate>Mon, 25 Sep 2017 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2017/09/efficiently-managing-mass-url-redirects-with-nginx/</guid><description>&lt;p&gt;In this post, I&amp;rsquo;ll show you how to efficiently implement hundreds or even thousands of URL redirects on your server without sacrificing performance. We&amp;rsquo;ll use Nginx&amp;rsquo;s powerful &lt;code&gt;map&lt;/code&gt; module which creates optimized hash tables for fast lookups.&lt;/p&gt;
&lt;h2 id="creating-your-redirect-configuration"&gt;Creating Your Redirect Configuration&lt;/h2&gt;
&lt;p&gt;First, create a file called &lt;code&gt;redirects-map.conf&lt;/code&gt; where each line represents a single redirect rule in this format:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;old_location&amp;gt; &amp;lt;new_url&amp;gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can use two types of location specifications:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simple path redirects&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Now</title><link>https://saurabh-kumar.com/now/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/now/</guid><description>&lt;details&gt;
&lt;summary&gt;What is this?&lt;/summary&gt;
&lt;p&gt;A snapshot of what&amp;rsquo;s on my plate right now: work, learning, life. Inspired by &lt;a href="https://nownownow.com" rel="noopener external"&gt;nownownow.com&lt;/a&gt;.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;strong&gt;Work:&lt;/strong&gt; Leading Web Services at &lt;a href="https://fueled.com" rel="noopener external"&gt;Fueled&lt;/a&gt; as Principal Engineer. Currently shipping AI-assisted Q&amp;amp;A with source citations for &lt;a href="https://www.southpole.com/" rel="noopener external"&gt;South Pole&lt;/a&gt;&amp;rsquo;s Quality Management Framework, and helping the team push more grounded LLM patterns into client work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Side / learning:&lt;/strong&gt; Maintaining &lt;a href="https://github.com/theskumar/python-dotenv" rel="noopener external"&gt;python-dotenv&lt;/a&gt; on the slow burn. Reorganized my &lt;a href="https://github.com/theskumar/dotfiles" rel="noopener external"&gt;dotfiles&lt;/a&gt; and &lt;a href="https://github.com/theskumar/agent-stuff" rel="noopener external"&gt;pi setup&lt;/a&gt;, going deep on agentic workflows and context engineering. Tinkering with local LLMs on Apple Silicon.&lt;/p&gt;</description></item><item><title>Projects</title><link>https://saurabh-kumar.com/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/projects/</guid><description>&lt;h1 id="projects"&gt;Projects&lt;/h1&gt;
&lt;h3 id="ongoing"&gt;Ongoing&lt;/h3&gt;
&lt;p&gt;See &lt;a href="https://saurabh-kumar.com/now/"&gt;/now/&lt;/a&gt; for what I&amp;rsquo;m currently working on.&lt;/p&gt;
&lt;h3 id="past-client-work"&gt;Past client work&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.southpole.com/" rel="noopener external"&gt;South Pole - AI-assisted Q&amp;amp;A with source citations over their Quality Management Framework (RAG)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fueled.com/work/apple/" rel="noopener external"&gt;Apple - Gamification engine and a multilingual, multi-region CMS behind an Android training app for Apple&amp;rsquo;s EMEA carrier retail staff&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fueled.com/work/victorias-secret/" rel="noopener external"&gt;Victoria&amp;rsquo;s Secret Community - Scaling a real-time community feed inside their mobile app for a mass-market retail audience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fool.com/" rel="noopener external"&gt;The Motley Fool - Premium subscription platform: Vue-to-Next.js migration, the Jester design system, and a GraphQL layer exposing clean APIs over legacy, distributed backends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rpmplanner.com/" rel="noopener external"&gt;Tony Robbins RPM Planner - Web and iOS planner with built-in AI voice coaching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tonyrobbins.com/breakthrough-app" rel="noopener external"&gt;Tony Robbins Breakthrough - Video and audio distribution at scale for the mobile app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://public.com/" rel="noopener external"&gt;Public.com - Initial architecture of the investing platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goosehead.com" rel="noopener external"&gt;Goosehead Insurance - Digital Agent 2.0: heavy third-party integrations at enterprise uptime, the platform their agents live in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.christianitytoday.com/" rel="noopener external"&gt;Christianity Today - API layer exposing their WordPress content as clean APIs for a new mobile launch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://everfi.com" rel="noopener external"&gt;EverFi - Game backend and CMS for K–12 educational games, with content authoring for game assets and level creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.2ndfloor.org" rel="noopener external"&gt;2NDFLOOR - Anonymous support community for youth mental health&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.irismd.com/" rel="noopener external"&gt;IrisMD - AI-assisted medical scribe turning live patient conversations into EHR notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.beaconhealthsystem.org/" rel="noopener external"&gt;Beacon Health System - Patient portal for appointments and video visits, HIPAA-compliant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alpaswellnesscenters.org/" rel="noopener external"&gt;Alpas Wellness Centers - Django backend for a mental health and recovery network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://omstars.com/" rel="noopener external"&gt;Omstars - Web portal for yoga courses, classes, and subscriptions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://urgentactionfund.org/" rel="noopener external"&gt;Urgent Action Fund - Grants management platform, on a private fork of hypha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Spoken-tutorial/spoken-website" rel="noopener external"&gt;Tech Lead on Spoken Tutorials at IIT Bombay - Django platform for the Govt. of India&amp;rsquo;s open-source tech literacy initiative&lt;/a&gt; (2017–2018)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rawmango.com" rel="noopener external"&gt;rawmango.com - Fashion e-commerce site&lt;/a&gt; [replaced]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="open-source-work--community"&gt;Open source work &amp;amp; Community&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hyphapp/hypha" rel="noopener external"&gt;hypha - Manage open calls and applications for nonprofits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pydelhi.org" rel="noopener external"&gt;pydelhi.org - Delhi Python meetup&lt;/a&gt; (revived and ran, 2014–2018)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pythonindia/junction" rel="noopener external"&gt;pythonindia/junction - Conference proposal management for PyCon India and PyDelhi&lt;/a&gt; [closed]&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.feldroy.com/products/two-scoops-of-django-3-x" rel="noopener external"&gt;Technical reviewer for Two Scoops of Django&lt;/a&gt; (the book)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Writing</title><link>https://saurabh-kumar.com/articles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/</guid><description>&lt;p&gt;Notes on backend systems, performance, and the tools I lean on.&lt;/p&gt;</description></item></channel></rss>