#software-engineering
48 posts
- Reading Petzold's CODE as a book club, one Saturday at a time
Six months of Saturday sessions reading Petzold's CODE together, from flashlights and Morse code to operating systems. Over 120 started. 4 of us finished.
- Why "Product" is No Longer the Moat: The End of the Feature Factory!
We are witnessing the most significant shift in the economics of software since the advent of cloud computing.
- From the audience to the stage: how a backend engineer learnt to give talks
In 2019 I was in the audience at Bengaluru meetups. Since then I've given talks in Bengaluru, Delhi, Goa, Pilani and Chicago. Here's every one, in order.
- #DistributedDilemmas: all 24 days in one place
In February 2025 I posted one distributed systems dilemma a day on X. I made it to day 24. Here they all are, with the diagrams.
- Day 24 of #DistributedDilemmas: Distributed sessions are a persistent headache
Distributed sessions are a persistent headache. Sticky sessions don't scale, but fully distributed sessions add complexity. Consider JWT or externalized…
- Day 23 of #DistributedDilemmas: Distributed caching layers often become consistency nightmares
Distributed caching layers often become consistency nightmares. As cache invalidation schemes attempt to maintain coherence, real-world implementations…
- Day 22 of #DistributedDilemmas: Distributed background jobs need careful orchestration
Distributed background jobs need careful orchestration. While stateless architectures simplify scaling, they risk duplicate processing like Slack alerts…
- Day 21 of #DistributedDilemmas: Event sourcing isn't a silver bullet for distribution
Event sourcing isn't a silver bullet for distribution. Replay and snapshots become bottlenecks at scale. Design for efficient event storage and retrieval…
- Day 20 of #DistributedDilemmas: Distributed rate limiting is harder than it looks
Distributed rate limiting is harder than it looks. Local rate limits don't prevent global abuse. Global protection requires coordination mechanisms like…
- Day 19 of #DistributedDilemmas: Database migrations in distributed systems require meticulous planning due to their inherent complexity
Database migrations in distributed systems require meticulous planning due to their inherent complexity. Schema changes become distributed coordination…
- Day 18 of #DistributedDilemmas: Microservice authentication is a distributed minefield
Microservice authentication is a distributed minefield. While JWTs excel at decentralized authentication, they introduce authorization complexity due to…
- Day 17 of #DistributedDilemmas: Distributed cron jobs are a coordination nightmare
Distributed cron jobs are a coordination nightmare. Time drift and job duplication plague naive implementations. Consider distributed schedulers or…
- Day 16 of #DistributedDilemmas: Serverless doesn't mean worry-free
Serverless doesn't mean worry-free. Cold starts and hidden state create new classes of distributed problems. While offering auto-scaling and cost…
- Day 15 of #DistributedDilemmas: Distributed logging creates more noise than signal
Distributed logging creates more noise than signal. Modern distributed systems face two critical logging challenges: 1. Data overload from scattered logs…
- Day 14 of #DistributedDilemmas: Service discovery often becomes a SPOT (single point of failure)
Service discovery often becomes a SPOT (single point of failure). Your registry being unavailable shouldn't prevent finding the registry. Design for…
- Day 13 of #DistributedDilemmas: Configuration sprawl is the silent killer of distributed systems
Configuration sprawl is the silent killer of distributed systems. Environment variables become unmanageable at scale. Treat config as code, not as an…
- Day 12 of #DistributedDilemmas: API versioning perpetuates distributed mistakes
API versioning perpetuates distributed mistakes. v2 endpoints often carry v1's technical debt. Evolve APIs additively to avoid version hell.
- Day 11 of #DistributedDilemmas: Queue-based architectures hide scaling issues
Queue-based architectures hide scaling issues. Kafka topics with long retention become both a blessing and a curse. Backpressure beats unbounded queues!…
- Day 10 of #DistributedDilemmas: Observability becomes obscurity at scale
Observability becomes obscurity at scale. More metrics often mean less visibility. Focus on the critical few signals that truly indicate system health!…
- Day 9 of #DistributedDilemmas: Distributed transactions are a myth at scale
Distributed transactions are a myth at scale. Two-phase commit falls apart under network partitions. Design for compensation, not for distributed…
- Day 8 of #DistributedDilemmas: Eventual consistency is consistently misunderstood
Eventual consistency is consistently misunderstood. CRDTs work better in whitepapers than in production. Real-world systems need a spectrum of consistency…
- Day 7 of #DistributedDilemmas: Network partitions heal dangerously
Network partitions heal dangerously. Merging divergent states introduces subtle data corruption. CAP theorem isn't a choice, it's a law of nature in…
- Day 6 of #DistributedDilemmas: Leader election creates false security
Leader election creates false security. Raft/Paxos implementations often have higher MTTR than the failures they aim to solve. Simplicity frequently beats…
- Day 5 of #DistributedDilemmas: Sharding decisions made today become tomorrow's scaling bottlenecks
Sharding decisions made today become tomorrow's scaling bottlenecks. NoSQL's partitioning promises often cost more than vertical scaling. Distribution ≠…
- Day 4 of #DistributedDilemmas: Idempotency is a lie we tell ourselves
Idempotency is a lie we tell ourselves. Nested partial failures expose retry logic flaws. True exactly-once delivery remains elusive in distributed…
- Day 3 of #DistributedDilemmas: Caching accelerates inconsistency
Caching accelerates inconsistency. Cache invalidation storms often outweigh hit rates. The fastest cache is sometimes no cache at all. Exhibit A: DoorDash…
- 🚀 Launching today: 28 Days of #DistributedDilemmas
Follow me on Twitter/X this February for one battle-tested insight a day on the hidden complexities behind outages, tech debt and architectural nightmares.
- Day 2 of #DistributedDilemmas: Microservices don't eliminate complexity, they redistribute it
Microservices don't eliminate complexity, they redistribute it. Your monolith's function calls become network calls. Pick which failures you want to debug…
- Day 1 of #DistributedDilemmas: Consistency guarantees become availability nightmares
Consistency guarantees become availability nightmares. Every distributed lock is a future bottleneck. Systems that embrace controlled inconsistency often…
- 🎄Solve Advent of Code 2024 With Me!
Announcing a spoiler-free YouTube video series for Advent of Code 2024 that focuses on how to analyze and approach each puzzle, not just the answers.
- Cell-based architecture, explained: the public version of my Innovation Day talk
My Innovation Day deck was internal, so here's the public version: what a cell is, scaling up and across, blast radius, and what cells cost you.
- The engineering books I'd read first, and how I actually get through them
A Blind post listed 9 books for a >600K/yr engineering job. I've read 8 of them. Here are the ones I'd read first, and the habits that get me through books.
- The Redis Paradox: my DelhiFOSS 2.0 talk at IIT Delhi, written up
The written version of my DelhiFOSS 2.0 talk on Redis beyond caching: a short history of caches, live driver matching with GEO commands, and Pub/Sub.
- Speccing a Shopify app for a friend: Etsy-to-Shopify inventory sync
A friend needed a Shopify app that keeps stock in sync with Etsy. Before any code, I wrote him a spec to hand to a developer: scope, diagrams and a 70-hour initial estimate.
- Our Journey with Multi-region Cloud Architecture and Data Residency
How Atlassian built its multi-region cloud architecture for data residency, covering region creation, service hydration, tenant migration and self-serve moves.
- Elevating Trust: Atlassian's Journey to HIPAA Eligibility Expansion!
How Atlassian expanded HIPAA eligibility by replacing a manual BAA process with a self-serve flow and a new service integrating IronClad with Admin Hub.
- 🌶 Just writing code doesn't make you a good Software Engineer! 🌶
Six habits beyond coding that turn a coder into a 10x product engineer, from focusing on the end-user and communicating well to documenting everything.
- Job hunt 4.0: five weeks of senior and staff interviews, and what I got wrong
An offer pulled in the crypto winter, a warm-up in November 2021, about 40 companies in one Obsidian note, and my notes on every round I fumbled.
- Two system design problems from my 2022 interviews, worked with real numbers
A photo pipeline for a fleet of 360-degree camera cars and an A/B split-testing service: requirements, capacity math, data model and the parts I'd tighten.
- Interview prep, senior edition: a system design checklist, one backtracking template and what loops grade on
My 2022 prep notes for senior and staff interviews: a system design checklist, one Python DFS for seven backtracking problems, rubrics and a STAR story bank.
- Back from Dead | Troubleshoot slow page loads & 503 errors of WordPress blog
How a slow, 503-throwing WordPress blog on GoDaddy shared hosting was traced to a bloated Jetpack postmeta table, and fixed by cleaning up the database.
- Post[0] = "why tech?"
I always talk about how I am a huge nerd when it comes to tech. So, what better way to start my engineering blog than talking about "why tech?".
- Face recognition on a Raspberry Pi 3 at Shuttl
We built face-recognition boarding for Shuttl on a Raspberry Pi 3 with Python and OpenCV. Low FPS, a crunch and a TV demo.
- The best resource to prepare for a Software Engineering interview | Fresher Edition
Discover the best resource to prepare for a Software Engineering interview and make sure that you clear it like a boss. Tried 'n' Tested.
- Love Python? Take this challenge now!
Do you think, code & live in Python? So, this is for you. Discover "The Python Challenge" and explore new horizons & possibilities with Python. Dive in!
- Android 101 : Day 4 | Intent In Android
Activities, Yay! Learn how to design a Multi-Activity App using the concepts of Intent In Android & build something great. Oh, and Source code is included!
- Android 101 : Day 3 | Hybrid Approach
In this post you'll learn, how to develop a Caller Application using Hybrid Approach and Intents in Android OS. Get your hands-on session now!
- Android 101 : Day 1 | Building Your First App
Learn how to start Building Your First App for Android smartphones by following this uber cool Android 101 guide. It's time to say - Hello, World!