Build Your Own X From Scratch Books

Leveling up your coding skills. By doing projects from scratch. With succinct & condensed books.

Redis Database Regex Engine Interpreter

Build Your Own Redis with C/C++

Learn network programming and data structures by building a Redis-like server from scratch with C/C++.

  • Why build Redis? The knowledge required is broader and deeper than usual application-level development. It's a good way to level up your skills (mainly network programming and data structures).
  • Why from scratch? A quote from Richard Feynman: β€œWhat I cannot create, I do not understand”. Human understandings are filled with holes aka β€œthings I don't know I don't know”. Building from scratch is a way to ensure your understanding is complete.
  • Why C? C is widely used in system programming and infrastructure software. Learn how C is used in real projects, with straightforward C code. No prior C/C++ experience is required.
  • Why a book? The Redis project is a complex software system built with lots of effort, which can be harder to grasp for beginners. The book breaks down the core concepts into easy-to-digest steps.
Read Now! Purchase$ Subscribe

πŸ†• Build Your Own Database From Scratch

Databases are not black boxes. Understand them by building your own from scratch!

From B-tree to KV store, then relational DB, in small steps and straightforward Golang code.

Three major topics are covered in this book:

  1. Persistence.
    How not to lose or corrupt your data. Recovering from a crash.
  2. Indexing.
    Efficiently querying and manipulating your data. (B-tree or LSM-tree).
  3. Concurrency.
    How to handle multiple (large number of) clients. Maybe transactions too.

Read Now! Pre-Order Subscribe

πŸ†• 5 Cool Coding Challenges from Beginner to Advanced

5 projects, 5Γ—3 times the fun, in 1 short book.
(Just an outline. Subject to change.)

  1. Regular expression engines
    1. Backtracking (beginner)
    2. NFA (intermediate)
    3. DFA (advanced)
  2. JSON parser
    1. Recursive descent (beginner)
    2. API design and JSON pointers (intermediate)
    3. JSON without dynamic allocations (advanced)
  3. HTTP server
    1. Sockets and protocols (beginner)
    2. Multithreading (intermediate)
    3. The event loop (advanced)
  4. High-performance word counter
    1. Buffered IO and parsing (beginner)
    2. Multithreading (intermediate)
    3. SIMD acceleration (advanced)
  5. Mini programming language
    1. Expression evaluation (beginner)
    2. Variables, control flows, and functions (intermediate)
    3. Static typing and compiling to x64 (advanced)
Read Now! Subscribe