A collection of simplified implementations of complex systems, built from scratch to understand their core principles.
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.
- 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
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.
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.
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.
When building "from scratch" implementations:
- Start Small: Begin with the absolute minimum feature set
- Focus on Core Concepts: Implement fundamental features first
- Keep It Simple: Avoid premature optimization
- Document Everything: Explain key concepts and design decisions using diagrams like plantuml or mermaid.
- Include Tests: Demonstrate how the system should work
- Use Modern Tools: Leverage current languages and frameworks
Helpful resources for building systems from scratch: