Skip to content

nicholasadamou/from-scratch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 

Repository files navigation

🌱 From Scratch

from-scratch

A collection of simplified implementations of complex systems, built from scratch to understand their core principles.

Overview

The "from scratch" principle is a learning approach where you take a complex system (like Redis, Nginx, or Docker) and build a simplified version to understand its fundamental concepts. By stripping away advanced features and focusing on core functionality, you gain deep insights into how these systems actually work.

Why Build From Scratch?

  • Deep Understanding: Building something from scratch forces you to understand every component and design decision
  • Learning Best Practices: You discover why certain patterns and architectures are used
  • Demystification: Complex systems become less intimidating when you build a basic version yourself
  • Better Debugging: Understanding the fundamentals helps you troubleshoot real systems more effectively

Projects

Spring Docker Linux

A simplified load balancer implementation in Java using Spring Boot that demonstrates:

  • Round-robin load distribution
  • Health checking
  • Service discovery
  • Request proxying
  • Docker containerization

You can read an article about this project here.

Python Pytest

A collection of data structures that are not included in the Python standard library built to learn more about data structures and algorithms.

I wrote an article on A Deeper Than Not Dive Into Two Sum, exploring the infamous LeetCode problem #1, Two Sum. In this article, I explained my thought process behind databricks and why building systems from scratch is a useful learning technique for the curious developer. Moreover, I take a deep dive into the low level design of a hash map that features the Hash Map implementation from databricks. You can read this section of the article here.

React TypeScript Vite Python FastAPI AWS Amazon S3 Docker

A system for uploading large files (20GB+) to Amazon S3 using multipart uploads with signed URLs, consisting of:

  • Python/FastAPI backend for managing upload sessions
  • MongoDB for tracking upload progress
  • React/TypeScript/Vite frontend for chunking files and handling uploads

You can read an article about this project here.

Development Guidelines

When building "from scratch" implementations:

  1. Start Small: Begin with the absolute minimum feature set
  2. Focus on Core Concepts: Implement fundamental features first
  3. Keep It Simple: Avoid premature optimization
  4. Document Everything: Explain key concepts and design decisions using diagrams like plantuml or mermaid.
  5. Include Tests: Demonstrate how the system should work
  6. Use Modern Tools: Leverage current languages and frameworks

Resources

Helpful resources for building systems from scratch:

About

🌱 A mono repository designed to demystify complex technologies by building them from scratch.

Resources

License

Stars

Watchers

Forks