<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Debanjan Basu</title><description>Senior Software Engineer - ML &amp; Data Systems. Blog and portfolio.</description><link>https://d3banjan.github.io/</link><atom:link href="https://d3banjan.github.io/rss.xml" rel="self" type="application/rss+xml"/><item><title>The Words That Feel Most Bengali</title><link>https://d3banjan.github.io/blog/2026-03-01-bengali-deep-history-1-comfort-words/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-03-01-bengali-deep-history-1-comfort-words/</guid><description>The words that feel irreducibly Bengali — the ones with no Sanskrit explanation — are probably the oldest non-Bengali words in the language.</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-03-01-bengali-deep-history-1-comfort-words/&quot;&gt;https://d3banjan.github.io/blog/2026-03-01-bengali-deep-history-1-comfort-words/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The words that feel irreducibly Bengali — the ones with no Sanskrit explanation — are probably the oldest non-Bengali words in the language.&lt;/p&gt;</content:encoded></item><item><title>Before We Were Bengali — The People of the Red Earth</title><link>https://d3banjan.github.io/blog/2026-03-08-bengali-deep-history-2-red-earth/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-03-08-bengali-deep-history-2-red-earth/</guid><description>3,600 years ago, a rice-farming civilization on the Ajay River left words, bones, and pottery that are still with us. Who were they?</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-03-08-bengali-deep-history-2-red-earth/&quot;&gt;https://d3banjan.github.io/blog/2026-03-08-bengali-deep-history-2-red-earth/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3,600 years ago, a rice-farming civilization on the Ajay River left words, bones, and pottery that are still with us. Who were they?&lt;/p&gt;</content:encoded></item><item><title>The Words That Don&apos;t Move</title><link>https://d3banjan.github.io/blog/2026-03-15-bengali-deep-history-3-words-that-dont-move/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-03-15-bengali-deep-history-3-words-that-dont-move/</guid><description>Languages change unevenly. The words that resist replacement the longest are the ones lived in the body — farming, cooking, counting. Bengali is a palimpsest, and knowing which layer you&apos;re reading changes everything.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-03-15-bengali-deep-history-3-words-that-dont-move/&quot;&gt;https://d3banjan.github.io/blog/2026-03-15-bengali-deep-history-3-words-that-dont-move/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Languages change unevenly. The words that resist replacement the longest are the ones lived in the body — farming, cooking, counting. Bengali is a palimpsest, and knowing which layer you&apos;re reading changes everything.&lt;/p&gt;</content:encoded></item><item><title>Three Ways of Knowing the Same People</title><link>https://d3banjan.github.io/blog/2026-03-22-bengali-deep-history-4-three-lenses/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-03-22-bengali-deep-history-4-three-lenses/</guid><description>There is a community of 7 million people who remember, in song, walking through a mountain pass to a golden land they then had to abandon overnight. Genetics corroborates the journey. Sanskrit texts called their kings demons.</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-03-22-bengali-deep-history-4-three-lenses/&quot;&gt;https://d3banjan.github.io/blog/2026-03-22-bengali-deep-history-4-three-lenses/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is a community of 7 million people who remember, in song, walking through a mountain pass to a golden land they then had to abandon overnight. Genetics corroborates the journey. Sanskrit texts called their kings demons.&lt;/p&gt;</content:encoded></item><item><title>The Iron That Cut Their Own Forest</title><link>https://d3banjan.github.io/blog/2026-03-29-bengali-deep-history-5-iron-forest/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-03-29-bengali-deep-history-5-iron-forest/</guid><description>Before any Sanskrit speaker had reached the eastern hills, someone there figured out how to smelt iron. Their descendants became the blacksmiths every classical Indian village needed. The iron they pioneered cleared the forests that had sheltered them.</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-03-29-bengali-deep-history-5-iron-forest/&quot;&gt;https://d3banjan.github.io/blog/2026-03-29-bengali-deep-history-5-iron-forest/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before any Sanskrit speaker had reached the eastern hills, someone there figured out how to smelt iron. Their descendants became the blacksmiths every classical Indian village needed. The iron they pioneered cleared the forests that had sheltered them.&lt;/p&gt;</content:encoded></item><item><title>Reform Pathways and the Automation Question: What Berlin Could Do Tomorrow</title><link>https://d3banjan.github.io/blog/2026-02-05-berlin-transit-reform-automation/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-02-05-berlin-transit-reform-automation/</guid><description>Federal operations funding, employer levies, congestion charging, and driverless trains — proven solutions exist for every aspect of BVG&apos;s crisis. The question is political will.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-02-05-berlin-transit-reform-automation/&quot;&gt;https://d3banjan.github.io/blog/2026-02-05-berlin-transit-reform-automation/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Federal operations funding, employer levies, congestion charging, and driverless trains — proven solutions exist for every aspect of BVG&apos;s crisis. The question is political will.&lt;/p&gt;</content:encoded></item><item><title>A Word Older Than the Language That Carried It</title><link>https://d3banjan.github.io/blog/2026-04-05-bengali-deep-history-6-champa/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-04-05-bengali-deep-history-6-champa/</guid><description>Saat Bhai Champa — Seven Brothers Champa. The most Sanskrit-sounding element of the story is probably the oldest non-Sanskrit thing in it.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-04-05-bengali-deep-history-6-champa/&quot;&gt;https://d3banjan.github.io/blog/2026-04-05-bengali-deep-history-6-champa/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Saat Bhai Champa — Seven Brothers Champa. The most Sanskrit-sounding element of the story is probably the oldest non-Sanskrit thing in it.&lt;/p&gt;</content:encoded></item><item><title>Vienna, Zurich, Munich, Hamburg: What Working Transit Looks Like</title><link>https://d3banjan.github.io/blog/2026-02-04-european-transit-models-comparison/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-02-04-european-transit-models-comparison/</guid><description>Every solution to BVG&apos;s crisis has been implemented somewhere in Europe. Four cities show what competitive wages, stable funding, and political commitment actually achieve.</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-02-04-european-transit-models-comparison/&quot;&gt;https://d3banjan.github.io/blog/2026-02-04-european-transit-models-comparison/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Every solution to BVG&apos;s crisis has been implemented somewhere in Europe. Four cities show what competitive wages, stable funding, and political commitment actually achieve.&lt;/p&gt;</content:encoded></item><item><title>Why BVG Drivers Walked Out: Wages, Strikes, and the 9.8:1 Ratio</title><link>https://d3banjan.github.io/blog/2026-02-03-bvg-driver-strikes-wages/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-02-03-bvg-driver-strikes-wages/</guid><description>Berlin pays its transit drivers less than any other major German city while its CEO earns more relative to workers than any other state-owned enterprise. The 2025 Ver.di strikes were the result.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-02-03-bvg-driver-strikes-wages/&quot;&gt;https://d3banjan.github.io/blog/2026-02-03-bvg-driver-strikes-wages/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Berlin pays its transit drivers less than any other major German city while its CEO earns more relative to workers than any other state-owned enterprise. The 2025 Ver.di strikes were the result.&lt;/p&gt;</content:encoded></item><item><title>Austerity, Concrete, and Compounding Debt: The Policy Failures That Built a Crisis</title><link>https://d3banjan.github.io/blog/2026-02-01-bvg-black-zero-austerity-infrastructure/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-02-01-bvg-black-zero-austerity-infrastructure/</guid><description>How the Black Zero balanced budget, a federal funding structure that rewards new construction over maintenance, and a procurement debacle created BVG&apos;s €3 billion infrastructure hole.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-02-01-bvg-black-zero-austerity-infrastructure/&quot;&gt;https://d3banjan.github.io/blog/2026-02-01-bvg-black-zero-austerity-infrastructure/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How the Black Zero balanced budget, a federal funding structure that rewards new construction over maintenance, and a procurement debacle created BVG&apos;s €3 billion infrastructure hole.&lt;/p&gt;</content:encoded></item><item><title>From Bug Fix to Production Hardening: A Refactoring Marathon</title><link>https://d3banjan.github.io/blog/2026-02-01-django-queue-production-hardening/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-02-01-django-queue-production-hardening/</guid><description>Stalled task detection, security hardening, code refactoring, and lifecycle signals — turning a task queue into production-grade infrastructure.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-02-01-django-queue-production-hardening/&quot;&gt;https://d3banjan.github.io/blog/2026-02-01-django-queue-production-hardening/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Stalled task detection, security hardening, code refactoring, and lifecycle signals — turning a task queue into production-grade infrastructure.&lt;/p&gt;</content:encoded></item><item><title>Hidden in Plain Sight</title><link>https://d3banjan.github.io/blog/2026-04-12-bengali-deep-history-7-nursery-rhymes/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-04-12-bengali-deep-history-7-nursery-rhymes/</guid><description>আগডুম বাগডুম. You clapped hands to it as a child. The words seemed like pure joyful sound. They aren&apos;t.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-04-12-bengali-deep-history-7-nursery-rhymes/&quot;&gt;https://d3banjan.github.io/blog/2026-04-12-bengali-deep-history-7-nursery-rhymes/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;আগডুম বাগডুম. You clapped hands to it as a child. The words seemed like pure joyful sound. They aren&apos;t.&lt;/p&gt;</content:encoded></item><item><title>From Division to Decay: How Reunification Broke Berlin&apos;s Transit</title><link>https://d3banjan.github.io/blog/2026-01-31-bvg-reunification-transit-crisis/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-01-31-bvg-reunification-transit-crisis/</guid><description>Berlin&apos;s BVG inherited two incompatible transit systems, a billion-mark loss, and a policy framework that would starve it of funding for three decades.</description><pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-01-31-bvg-reunification-transit-crisis/&quot;&gt;https://d3banjan.github.io/blog/2026-01-31-bvg-reunification-transit-crisis/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Berlin&apos;s BVG inherited two incompatible transit systems, a billion-mark loss, and a policy framework that would starve it of funding for three decades.&lt;/p&gt;</content:encoded></item><item><title>What the River Remembers</title><link>https://d3banjan.github.io/blog/2026-04-19-bengali-deep-history-8-what-the-river-remembers/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-04-19-bengali-deep-history-8-what-the-river-remembers/</guid><description>&quot;The history of Bengal is written in water.&quot; A synthesis — genetic, linguistic, civilizational — of who the Bengali people are and what a modern democracy owes to a culture that survived for 10,000 years.</description><pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-04-19-bengali-deep-history-8-what-the-river-remembers/&quot;&gt;https://d3banjan.github.io/blog/2026-04-19-bengali-deep-history-8-what-the-river-remembers/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&quot;The history of Bengal is written in water.&quot; A synthesis — genetic, linguistic, civilizational — of who the Bengali people are and what a modern democracy owes to a culture that survived for 10,000 years.&lt;/p&gt;</content:encoded></item><item><title>My 2026 Linux Desktop: Niri + DankMaterialShell + Kitty</title><link>https://d3banjan.github.io/blog/2026-01-18-wayland-desktop-finale/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-01-18-wayland-desktop-finale/</guid><description>Complete stack overview showing how compositor, shell, terminal, and tools integrate through consistent patterns.</description><pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-01-18-wayland-desktop-finale/&quot;&gt;https://d3banjan.github.io/blog/2026-01-18-wayland-desktop-finale/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Complete stack overview showing how compositor, shell, terminal, and tools integrate through consistent patterns.&lt;/p&gt;</content:encoded></item><item><title>Two Claude Code Power Features You Should Be Using</title><link>https://d3banjan.github.io/blog/2026-01-11-claude-code-power-features/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-01-11-claude-code-power-features/</guid><description>Custom status lines for ambient awareness and git worktrees for parallel AI-assisted development sessions.</description><pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-01-11-claude-code-power-features/&quot;&gt;https://d3banjan.github.io/blog/2026-01-11-claude-code-power-features/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Custom status lines for ambient awareness and git worktrees for parallel AI-assisted development sessions.&lt;/p&gt;</content:encoded></item><item><title>Desktop Polish: DankMaterialShell and the Perfect Rofi Launcher</title><link>https://d3banjan.github.io/blog/2026-01-04-dankmaterialshell-rofi/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2026-01-04-dankmaterialshell-rofi/</guid><description>Unifying desktop aesthetics across shell, launcher, and compositor with shared color tokens and consistent IPC patterns.</description><pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2026-01-04-dankmaterialshell-rofi/&quot;&gt;https://d3banjan.github.io/blog/2026-01-04-dankmaterialshell-rofi/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unifying desktop aesthetics across shell, launcher, and compositor with shared color tokens and consistent IPC patterns.&lt;/p&gt;</content:encoded></item><item><title>Mastering Niri Navigation: Shortcuts That Preserve Muscle Memory</title><link>https://d3banjan.github.io/blog/2025-12-21-niri-shortcuts-navigation/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-12-21-niri-shortcuts-navigation/</guid><description>Designing a unified shortcut system for Niri that maintains consistency with Hyprland and standard desktop patterns.</description><pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-12-21-niri-shortcuts-navigation/&quot;&gt;https://d3banjan.github.io/blog/2025-12-21-niri-shortcuts-navigation/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Designing a unified shortcut system for Niri that maintains consistency with Hyprland and standard desktop patterns.&lt;/p&gt;</content:encoded></item><item><title>Niri: The Scrolling Tiling Compositor That Made Me Leave Hyprland</title><link>https://d3banjan.github.io/blog/2025-12-07-niri-scrolling-compositor/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-12-07-niri-scrolling-compositor/</guid><description>Why Niri scrolling paradigm works better than traditional tiling for ultrawide monitors, and how to think about window management differently.</description><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-12-07-niri-scrolling-compositor/&quot;&gt;https://d3banjan.github.io/blog/2025-12-07-niri-scrolling-compositor/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Why Niri scrolling paradigm works better than traditional tiling for ultrawide monitors, and how to think about window management differently.&lt;/p&gt;</content:encoded></item><item><title>SSH in 33 Seconds? Optimizing for India-to-Bulgaria VPN Connections</title><link>https://d3banjan.github.io/blog/2025-11-30-ssh-high-latency-optimization/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-11-30-ssh-high-latency-optimization/</guid><description>Diagnosing and fixing SSH latency over high-latency VPN links, with focus on the TCP-over-TCP problem and connection multiplexing.</description><pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-11-30-ssh-high-latency-optimization/&quot;&gt;https://d3banjan.github.io/blog/2025-11-30-ssh-high-latency-optimization/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Diagnosing and fixing SSH latency over high-latency VPN links, with focus on the TCP-over-TCP problem and connection multiplexing.&lt;/p&gt;</content:encoded></item><item><title>From Terminal to Development Environment: Putting It All Together</title><link>https://d3banjan.github.io/blog/2025-11-16-terminal-workflow-finale/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-11-16-terminal-workflow-finale/</guid><description>Combining Kitty, shell tools, and Claude Code into a cohesive workflow with git worktrees for parallel development.</description><pubDate>Sun, 16 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-11-16-terminal-workflow-finale/&quot;&gt;https://d3banjan.github.io/blog/2025-11-16-terminal-workflow-finale/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Combining Kitty, shell tools, and Claude Code into a cohesive workflow with git worktrees for parallel development.&lt;/p&gt;</content:encoded></item><item><title>Completing the Terminal Stack: Bash, Starship, and History Tools</title><link>https://d3banjan.github.io/blog/2025-11-02-bash-starship-history-tools/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-11-02-bash-starship-history-tools/</guid><description>Choosing shell components for portability and power, with switchable history backends and cross-shell prompt.</description><pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-11-02-bash-starship-history-tools/&quot;&gt;https://d3banjan.github.io/blog/2025-11-02-bash-starship-history-tools/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Choosing shell components for portability and power, with switchable history backends and cross-shell prompt.&lt;/p&gt;</content:encoded></item><item><title>Kitty Superpowers: Kittens, Hints, and Remote Control</title><link>https://d3banjan.github.io/blog/2025-10-19-kitty-kittens-remote-control/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-10-19-kitty-kittens-remote-control/</guid><description>How Kitty extensions solve real problems with smart selection, better SSH, and terminal automation.</description><pubDate>Sun, 19 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-10-19-kitty-kittens-remote-control/&quot;&gt;https://d3banjan.github.io/blog/2025-10-19-kitty-kittens-remote-control/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How Kitty extensions solve real problems with smart selection, better SSH, and terminal automation.&lt;/p&gt;</content:encoded></item><item><title>Kitty Terminal: Why GPU Acceleration Changes Everything</title><link>https://d3banjan.github.io/blog/2025-10-05-kitty-terminal-fundamentals/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-10-05-kitty-terminal-fundamentals/</guid><description>Introduction to Kitty terminal emulator with focus on the design decisions that make it different from alternatives.</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-10-05-kitty-terminal-fundamentals/&quot;&gt;https://d3banjan.github.io/blog/2025-10-05-kitty-terminal-fundamentals/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Introduction to Kitty terminal emulator with focus on the design decisions that make it different from alternatives.&lt;/p&gt;</content:encoded></item><item><title>Pessimistic Locking: One Task, One Worker</title><link>https://d3banjan.github.io/blog/2025-09-06-django-queue-pessimistic-locking/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-09-06-django-queue-pessimistic-locking/</guid><description>Using SELECT FOR UPDATE SKIP LOCKED to prevent multiple workers from claiming the same task — database-level concurrency without application-level locks.</description><pubDate>Sat, 06 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-09-06-django-queue-pessimistic-locking/&quot;&gt;https://d3banjan.github.io/blog/2025-09-06-django-queue-pessimistic-locking/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Using SELECT FOR UPDATE SKIP LOCKED to prevent multiple workers from claiming the same task — database-level concurrency without application-level locks.&lt;/p&gt;</content:encoded></item><item><title>The Fork, the File Descriptor, and the Deployment</title><link>https://d3banjan.github.io/blog/2025-04-12-django-queue-fork-pitfalls/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-04-12-django-queue-fork-pitfalls/</guid><description>Two production bugs from subprocess isolation: shared database connections after fork, and lost working directories after deployment.</description><pubDate>Sat, 12 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-04-12-django-queue-fork-pitfalls/&quot;&gt;https://d3banjan.github.io/blog/2025-04-12-django-queue-fork-pitfalls/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Two production bugs from subprocess isolation: shared database connections after fork, and lost working directories after deployment.&lt;/p&gt;</content:encoded></item><item><title>Hunting Memory Leaks in a Django Task Worker</title><link>https://d3banjan.github.io/blog/2025-03-29-django-queue-memory-leaks/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2025-03-29-django-queue-memory-leaks/</guid><description>Production memory climbing to 500 MB. The fix: run tasks in subprocesses so the OS reclaims everything. From 500 MB to 50 MB.</description><pubDate>Sat, 29 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2025-03-29-django-queue-memory-leaks/&quot;&gt;https://d3banjan.github.io/blog/2025-03-29-django-queue-memory-leaks/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Production memory climbing to 500 MB. The fix: run tasks in subprocesses so the OS reclaims everything. From 500 MB to 50 MB.&lt;/p&gt;</content:encoded></item><item><title>django-simple-queue: 300 Lines to Replace Celery</title><link>https://d3banjan.github.io/blog/2024-12-21-django-simple-queue-intro/</link><guid isPermaLink="true">https://d3banjan.github.io/blog/2024-12-21-django-simple-queue-intro/</guid><description>How a ~300 LOC task queue built on Django ORM replaces Celery for small teams — the architecture, the tradeoffs, and when it makes sense.</description><pubDate>Sat, 21 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Originally published at &lt;a href=&quot;https://d3banjan.github.io/blog/2024-12-21-django-simple-queue-intro/&quot;&gt;https://d3banjan.github.io/blog/2024-12-21-django-simple-queue-intro/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How a ~300 LOC task queue built on Django ORM replaces Celery for small teams — the architecture, the tradeoffs, and when it makes sense.&lt;/p&gt;</content:encoded></item></channel></rss>