Blog
About

© 2026 Uzair Tariq

Blog

Thoughts, ideas, and things I find interesting.

How Distributed Systems Decide What Is True

How quorums, fencing tokens, and clear failure assumptions keep distributed systems safe when nodes pause, lose authority, or disagree.

distributed systemsquorums+4 more tags: fencing tokens, byzantine faults, safety, liveness
Sep 23, 2026

Why Distributed Systems Cannot Trust the Clock

Why synchronized clocks still misorder events, how TrueTime exposes uncertainty, and why process pauses can turn valid leases into unsafe writes.

distributed systems+5 more tags: clock synchronization, last write wins, logical clocks, google spanner, process pauses
Sep 22, 2026

Why Distributed Systems Cannot Trust the Network

Why silence cannot prove failure, how timeouts and queues mislead, and why predictable network latency conflicts with efficient resource use.

distributed systems+5 more tags: network reliability, failure detection, network timeouts, network partitions, fault tolerance
Sep 15, 2026

Three Ways Databases Make Transactions Serializable

A practical comparison of serial execution, two-phase locking, and SSI, including predicate locks, phantoms, contention, and transaction retries.

database transactions+5 more tags: serializability, two phase locking, serializable snapshot isolation, concurrency control, database internals
Sep 14, 2026

Why Snapshot Isolation Still Lets Business Rules Break

How lost updates, write skew, and phantoms can break business rules, and when atomic updates, constraints, locks, or serializable transactions fit best.

databasesconcurrency+3 more tags: transactions, system design, postgresql
Sep 10, 2026

What Transactions Really Guarantee

Transactions protect related changes from failures and concurrency bugs, covering ACID, isolation levels, MVCC, and safe retries.

transactionsdatabases+3 more tags: isolation levels, mvcc, concurrency control
Sep 9, 2026

What I Learned About Partitioning: Data, Indexes, and Routing

How partition keys, indexes, rebalancing, and routing shape a scalable distributed database.

distributed systemsdatabases+3 more tags: data engineering, system design, partitioning
Sep 8, 2026

Python asyncio: a practical mental model for safe concurrent work

A practical guide to Python asyncio: tasks, concurrency, timeouts, cancellation, blocking work, and production-safe choices.

pythonasyncioconcurrency+2 more tags: backend engineering, software engineering
Sep 5, 2026

Leaderless Replication: Quorums and Conflicts

How leaderless databases use quorums, repair stale replicas, and handle conflicting writes without a primary

distributed systemsdatabases+2 more tags: replication, system design
Sep 2, 2026

When multiple leaders write: handling conflicts

How multi-leader replication enables local writes, why conflicts happen, and how to design safe resolution rules

distributed systemsdatabases+3 more tags: replication, data consistency, system design
Aug 29, 2026

How leader-follower replication behaves in production

How leader-follower replication handles writes, failures, replica lag, and read consistency in production

distributed systemsdatabases+3 more tags: replication, system design, data engineering
Aug 29, 2026

How data moves through systems without breaking old code

How databases, APIs, and message brokers keep data compatible through real-world deployments

system design+5 more tags: distributed systems, schema evolution, data serialization, api design, message queues
Aug 27, 2026

How schemas let data evolve without breaking old code

How data formats and schemas let old and new services safely evolve together

databasessystem design+4 more tags: schema evolution, data serialization, protocol buffers, avro
Aug 20, 2026

Why faster analytics comes with less write flexibility

How column stores handle writes, and when materialized views and OLAP cubes make repeated analytics much faster

databasesdata warehousing+4 more tags: columnar storage, materialized views, olap, system design
Aug 17, 2026

The column-storage ideas that finally clicked for me

My practical notes on column storage, bitmap indexes, Cassandra, and vectorized processing

databasescolumnar storage+4 more tags: cassandra, bitmap indexes, performance, system design
Aug 12, 2026

Why analytics databases store data by column

Why column stores make analytical queries faster through selective reads, compression, bitmap indexes, and CPU-friendly scans

databasesdata warehousing+4 more tags: columnar storage, analytics, olap, performance
Aug 12, 2026

Why transactional databases and data warehouses do different jobs

Why OLTP and OLAP need different database designs, and how ETL, warehouses, and star schemas support analytics

databasessystem design+4 more tags: data warehousing, oltp, olap, etl
Aug 11, 2026

Beyond primary keys: how databases index real queries

How secondary, spatial, full-text, and in-memory indexes make real database queries fast, and what each trade-off costs

databasesindexing+4 more tags: system design, storage engines, search, performance
Aug 6, 2026

How Cassandra Makes LSM-Trees Work at Scale

How Cassandra uses partitioning, replication, compaction, and separate analytics pipelines to make LSM-trees practical at banking scale

cassandralsm trees+5 more tags: databases, system design, distributed systems, data engineering, compaction
Aug 5, 2026

B-trees vs LSM-trees: where each storage engine pays the cost

A practical comparison of B-trees and LSM-trees: writes, compaction, latency, and transaction trade-offs

databasesstorage engines+4 more tags: b-trees, lsm trees, system design, performance
Aug 5, 2026

What a database B-tree really looks like on disk

A practical mental model for database B-trees: pages, heap rows, MVCC, WAL, page splits, and how they compare with LSM-trees

databasesb-trees+3 more tags: postgresql, storage engines, system design
Aug 5, 2026

How B-trees keep database indexes fast and balanced

How B-trees use fixed-size pages, page splits, WALs, and latches to keep database indexes fast and recoverable

b-treesstorage engines+3 more tags: system design, indexing, data structures
Aug 5, 2026

How LSM-trees make writes fast without losing ordered data

How SSTables, memtables, compaction, and Bloom filters make LSM-trees fast for writes and range queries

databasesstorage engines+4 more tags: lsm trees, system design, distributed systems, data structures
Aug 3, 2026

How databases write data: logs, indexes, and storage engines

How append-only logs, indexes, compaction, and storage-engine trade-offs shape database performance

databasesstorage engines+3 more tags: system design, data structures, lsm trees
Jul 30, 2026
« First‹ Prev
1 / 2
Next ›Last »