Articles
My technical writing and blog posts - 67 articles
Filters
Optimizing the Wrong Signal
Explains how incomplete data leads to flawed decisions, using a WWII aircraft example to highlight why missing data matters more than visible patterns.
GSLB Is Actually Smart DNS Not a Load Balancer
Explains why Global Server Load Balancing (GSLB) is often misunderstood. Despite the name, most GSLB systems do not sit in the request path like traditional L4 or L7 load balancers. Instead, they operate at the DNS layer, influencing which regional endpoint a client connects to during name resolution. The article breaks down how GSLB steers traffic across regions using DNS responses, how this differs from regional load balancing, and why DNS caching introduces architectural constraints that engineers should understand when designing multi-region systems.
7 Mental Models to Effectively Utilize Claude Code as an Agentic System
Presents Claude Code as an execution loop rather than a chat interface and shows how productivity comes from deliberately controlling its context, memory, reasoning budget, workflows, quality gates, and external tool access. Breaks down how these seven mental models shift the developer's role from writing prompts to designing a compounding system, where each iteration starts from a stronger baseline and operates on real data instead of assumptions.
DNS as a Distributed System
Reframes DNS from a simple name-to-IP lookup into what it actually is: a globally distributed, hierarchical, cache-first system that makes explicit trade-offs between consistency, availability, and performance. Explains why these design choices lead to real-world outages, security incidents, and surprising failure modes, and why DNS must be reasoned about like any other large-scale distributed system.
Writing as Infrastructure
Argues that writing is a scaling primitive for engineering teams: while code scales systems, writing scales intent, decisions, and long-term clarity. Explains why writing is often deprioritised and how the real cost shows up later in misalignment, rework, and slow execution.
Latency and Response Time Are Not the Same
Clarifies the critical distinction between latency and response time in distributed systems. Shows how conflating the two leads to optimising the wrong layer, and explains where infrastructure choices end and application-level performance begins.
Learning How to Unlearn
Explains why unlearning outdated assumptions and mental models is becoming more important than continuously acquiring new skills.
Run Transformer Models in Your Browser using Transformer.js
Shows how to run transformer models entirely in the browser using transformers.js, enabling client-side and privacy-friendly inference.
Random Is Not Same as Unpredictable in Python
Clarifies the difference between randomness and unpredictability in Python and why misunderstanding it can cause security issues.
12 Qualities That Take a Software Engineer to Staff Engineer
Identifies twelve practical qualities that make software engineers effective beyond just writing code.
You Should Switch to gRPC if You're Still Using REST for Microservices
Explains when gRPC is a better alternative to REST for microservices and the trade-offs involved.
Andrej Karpathy Grounds AI Hype in Reality in His New Podcast: Key Takeaways
Summarizes key insights from Andrej Karpathy's podcast, focusing on realistic expectations from modern AI systems.
Andrej Karpathy Says Expert Programmers Shouldn't Reject LLMs
Discusses why experienced programmers should adapt to LLMs instead of avoiding them completely.
LLM? Agent? RAG? MCP? If You're Confused Too, This GuideWill Help
Provides a high-level explanation of common AI terms like LLMs, agents, RAG, and MCP in simple language.
12 Qualities of a Highly Effective Architect
Explores the core qualities that make software architects effective at scale beyond technical design decisions.
Ranking Cricket's Top 10 Players in Every Discipline with Pandas and Kaggle Data
Uses Python and Pandas to analyze cricket data and rank top players across different performance dimensions.
Build a Smart Automated Event Reminder System with Python in Under 30 Minutes
Shows how to build a lightweight automated reminder system using Python with minimal infrastructure and setup.
5 Data Normalization Techniques You Should Know for Machine Learning
Explains common data normalization techniques and when each should be applied in machine learning workflows.
4 Important Behavioral Design Patterns everyone should be aware of
Introduces key behavioral design patterns and explains how they govern object interaction and responsibility.
4 Important Structural Design Patterns everyone should be aware of
Covers commonly used structural design patterns and how they help organize complex systems.