<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tech on Shivam Rastogi</title>
    <link>https://shivamrastogi.com/tech/</link>
    <description>Recent content in Tech on Shivam Rastogi</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <copyright>Copyright © 2026, Shivam Rastogi</copyright>
    <lastBuildDate>Thu, 09 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://shivamrastogi.com/tech/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Over-engineering an async AI voice chat app, on purpose</title>
      <link>https://shivamrastogi.com/tech/over-engineering-an-async-ai-voice-chat-app-on-purpose/</link>
      <pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://shivamrastogi.com/tech/over-engineering-an-async-ai-voice-chat-app-on-purpose/</guid>
      <description>This is an async AI voice chat app. You record a voice message, send it to a friend, they listen and reply when they&amp;rsquo;re ready. In the background, OpenAI Whisper transcribes the audio and a separate service handles image processing. Conceptually, it&amp;rsquo;s a ten-line Django view with a file upload and a row in a message table.
That&amp;rsquo;s not what I built.
What I built is seven repos, four languages, Apache Pulsar running on Amazon EKS with end-to-end TLS, a Spring Boot image service, a Python Whisper transcription consumer, a Django web app deployed to ECS Fargate behind an AWS CDK CodePipeline, and a cert-manager setup issuing certificates from AWS Private CA to every pod in the cluster.</description>
    </item>
    
    <item>
      <title>Fixing duplicate deadline callbacks in Airflow&#39;s HA scheduler</title>
      <link>https://shivamrastogi.com/tech/fixing-duplicate-deadline-callbacks-in-airflows-ha-scheduler/</link>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://shivamrastogi.com/tech/fixing-duplicate-deadline-callbacks-in-airflows-ha-scheduler/</guid>
      <description>Apache Airflow supports running multiple scheduler replicas for high availability. The idea is simple — if one scheduler dies, another takes over. No downtime, no lost work. Most of Airflow&amp;rsquo;s critical paths (DAG parsing, task scheduling, trigger processing) are carefully designed to coordinate safely across replicas using row-level locks.
Most of them.
Last week I shipped a fix for one that wasn&amp;rsquo;t. The scheduler&amp;rsquo;s deadline-check loop was missing a FOR UPDATE lock, which meant two schedulers could pick up the same expired deadline at the same time and fire the breach callback twice.</description>
    </item>
    
  </channel>
</rss>
