Ashok G

Refs

Kernel, Traced

1 — A system call, from syscall to return

2 — open(): the path walk

3 — fork() and exec(): making a process

4 — The scheduler picks the next task

5 — A page fault

6 — The page cache and readahead

7 — connect(): where the SYN is born

8 — A packet out: send() to the NIC

9 — A packet in: NIC to recv()

10 — bpf(): the verifier

11 — LSM hooks and cgroups: where policy attaches

12 — Signals, timers and RCU: three mechanisms every path uses

Linux From the Metal Up: further sources

Kernel documentation and source

Building systems

News, analysis and history

Writing a kernel from scratch

System Design

1 — What happens in a single request

2 — What one machine can do

3 — Measuring: latency, throughput, availability

4 — Scaling out: stateless servers and load balancers

5 — Databases: indexes, transactions and isolation

6 — Caching

7 — Queues and asynchronous work

8 — Queueing, tail latency and scalability limits

9 — Partitioning

10 — Replication and consistency

11 — Clocks, consensus and distributed locks

12 — Storage engines

13 — Delivery guarantees and transactions across services

14 — Resilience: timeouts, retries, circuit breakers and overload

15 — Services and APIs

16 — Running it: observability, deployments and regions

17 — Low-level design

18 — A rate limiter, end to end

19 — Worked designs

Guides

Big-O complexity, and how to approach it in real code

Threads, concurrency and parallelism

How Kafka works, from 0 to 1000

PostgreSQL indexes: every kind, and when to use which

Semaphore vs mutex vs lock

Shooting manual on the Nikon D7500

JWTs, access tokens, sessions, OAuth and Zero Trust

The Kubernetes control plane, Cilium, Flannel and OPA Gatekeeper

RDMA, RoCE and NVIDIA networking

Redis internals: the protocol, the event loop and why one thread is fast

How TLS works, and when it can be decrypted