Repositorio original: https://github.com/codecrafters-io/build-your-own-x
feynman.png | ||
ISSUE_TEMPLATE | ||
README.md |
Table of contents
- 3D Renderer
- Augmented Reality
- BitTorrent Client
- Blockchain / Cryptocurrency
- Bot
- Database
- Docker
- Emulator
- Front-end Framework / Library
- Game
- Git
- Network Stack
- Neural Network
- Operating System
- Physics Engine
- Programming Language
- Regex Engine
- Search Engine
- Shell
- Template Engine
- Text Editor
- Web Search Engine
- Web Server
- Uncategorized
Tutorials
Build your own 3D Renderer
- C++: Introduction to Ray Tracing: a Simple Method for Creating 3D Images
- C++: How OpenGL works: software rendering in 500 lines of code
- C++: Raycasting engine of Wolfenstein 3D
- C# / TypeScript / JavaScript: Learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript
- Java / JavaScript: Build your own 3D renderer
- Java: How to create your own simple 3D render engine in pure Java
- JavaScript / Pseudocode: Computer Graphics from scratch
- Python: A 3D Modeller
Build your own Augmented Reality
- C#: How To: Augmented Reality App Tutorial for Beginners with Vuforia and Unity 3D [video]
- C#: Windows Mixed Reality Academy [video]
- C#: How To Unity ARCore [video]
- C#: AR Portal Tutorial with Unity [video]
- C#: How to create a Dragon in Augmented Reality in Unity ARCore [video]
- C#: How to Augmented Reality AR Tutorial: ARKit Portal to the Upside Down [video]
Build your own BitTorrent Client
- C#: Building a BitTorrent client from scratch in C#
- Nim: Writing a Bencode Parser
- Node.js: Write your own bittorrent client
- Python: A BitTorrent client in Python 3.5
Build your own Blockchain / Cryptocurrency
- ATS: Functional Blockchain
- C#: Programming The Blockchain in C#
- Ethereum: From “What is Blockchain?” to building a blockchain in less than an hour
- Go: Building Blockchain in Go
- Go: Code your own blockchain in less than 200 lines of Go
- Haskell: A simple cryptocurrency implementation, written to illustrate the basic components of a Proof-of-Work based public distributed ledger
- Java: Creating Your First Blockchain with Java
- JavaScript: A cryptocurrency implementation in less than 1500 lines of code
- JavaScript: Build your own Blockchain in JavaScript
- JavaScript: Learn & Build a JavaScript Blockchain
- JavaScript: Creating a blockchain with JavaScript [video]
- JavaScript: How To Launch Your Own Production-Ready Cryptocurrency
- Python: Learn Blockchains by Building One
- Python: Build your own blockchain: a Python tutorial
- Python: Building an automated Cryptocurrency trading bot with Python on Binance [video]
- Python: A Practical Introduction to Blockchain with Python
- Python: Let’s Build the Tiniest Blockchain
- Ruby: Programming Blockchains Step-by-Step (Manuscripts Book Edition)
- TypeScript: Naivecoin: a tutorial for building a cryptocurrency
Build your own Bot
- Haskell: Roll your own IRC bot
- Java: How To Make a Scary Russian Twitter Bot With Java
- Node.js: Creating a Simple Facebook Messenger AI Bot with API.ai in Node.js
- Node.js: How to make a responsive telegram bot
- Node.js: Create a Discord bot
- Node.js: gifbot - Building a GitHub App
- PHP: Let’s write a cryptocurrency bot
- Python: Chatbot Fundamentals: An interactive guide to writing bots in Python
- Python: Step-by-Step Instructions for Building a Basic Facebook Chat Bot
- Python: How to Build Your First Slack Bot with Python
- Python: Build a Reddit Bot
- Python: How To Make A Reddit Bot [video]
- Python: How To Create a Telegram Bot Using Python
- Python: Create a Twitter Bot in Python Using Tweepy
- Python: Creating Reddit Bot with Python & PRAW [video]
- R: Build A Cryptocurrency Trading Bot with R
Build your own Database
- C: Let's Build a Simple Database
- C++: Implementing a Key-Value Store
- C#: Build Your Own Database
- Clojure: An Archaeology-Inspired Database
- Crystal: Why you should build your own NoSQL Database
- JavaScript: Dagoba: an in-memory graph database
- Python: DBDB: Dog Bed Database
- Python: Write your own miniature Redis with Python
Build your own Docker
- C: Linux containers in 500 lines of code
- Go: Building a container from scratch in Go [video]
- Python: A workshop on Linux containers: Rebuild Docker from Scratch
- Python: A proof-of-concept imitation of Docker, written in 100% Python
- Shell: Docker implemented in around 100 lines of bash
Build your own Emulator
- C++: How to write an emulator (CHIP-8 interpreter)
- C++: Emulation tutorial (CHIP-8 interpreter)
- C++: Emulation tutorial (GameBoy emulator)
- C++: Emulation tutorial (Master System emulator)
- JavaScript: GameBoy Emulation in JavaScript
- Python: Emulation Basics: Write your own Chip 8 Emulator/Interpreter
Build your own Front-end Framework / Library
- JavaScript: WTF is JSX (Let's Build a JSX Renderer)
- JavaScript: A DIY guide to build your own React
- JavaScript: Reverse Engineering React
- JavaScript: Building React From Scratch [video]
- JavaScript: Building Your Own React Clone in Five Easy Steps
- JavaScript: Gooact: React in 160 lines of JavaScript
- JavaScript: Build your own Vuejs
- JavaScript: Build Yourself a Redux
- JavaScript: Let’s Write Redux!
- JavaScript: Redux: Implementing Store from Scratch
- JavaScript: Build Your own Simplified AngularJS in 200 Lines of JavaScript
- JavaScript: How to write your own Virtual DOM
Build your own Game
- C: Handmade Hero
- C: How to Program an NES game in C
- C: Chess Engine In C [video]
- C: Let's Make: Dangerous Dave [video]
- C: Learn Video Game Programming in C [video]
- C: Coding A Sudoku Solver in C [video]
- C: Coding a Rogue/Nethack RPG in C [video]
- C: Tutorial For a Brickout Clone
- C: A tutorials for a basic Invaders game made in C with GTK: and OpenGL
- C: Astroids Tutorial written in C using GTK with OpenGL and DashGL for matrix manipulation
- C++: How To Make Minecraft in C++/ OpenGL [video]
- C++: Breakout
- C++: Beginning Game Programming v2.0
- C++: Tetris tutorial in C++ platform independent focused in game logic for beginners
- C#: Learn C# by Building a Simple RPG
- C#: Creating a Roguelike Game in C#
- Go: Games With Go [video]
- Java: 3D Game Development with LWJGL 3
- JavaScript: 2D breakout game using Phaser
- JavaScript: How to Make Flappy Bird in HTML5 With Phaser
- JavaScript: Developing Games with React, Redux, and SVG
- JavaScript: Build your own 8-Ball Pool game from scratch [video]
- JavaScript: How to Make Your First Roguelike
- Lua: BYTEPATH
- Python: Developing Games With PyGame
- Python: Making Games with Python & Pygame [pdf]
- Ruby: Write Yourself a Roguelike
- Ruby: Developing Games With Ruby
Build your own Git
- Haskell: Reimplementing “git clone” in Haskell from the bottom up
- JavaScript: Gitlet
- JavaScript: Build GIT - Learn GIT
- Python: Just enough of a Git client to create a repo, commit, and push itself to GitHub
- Ruby: Rebuilding Git in Ruby
Build your own Network Stack
- C: Beej's Guide to Network Programming
- C: Let's code a TCP/IP stack
- Ruby: How to build a network stack in Ruby
Build your own Neural Network
- C#: Neural Network OCR
- Go: Build a multilayer perceptron with Golang
- Go: How to build a simple artificial neural network with Go
- Go: Building a Neural Net from Scratch in Go
- Java: Neural Networks: Perceptron [video]
- JavaScript: Neural Network implementation in JavaScript, by an example
- JavaScript: Neural networks from scratch for JavaScript linguists (Part1 — The Perceptron)
- JavaScript: You can build a neural network in JavaScript even if you don’t really understand neural networks
- JavaScript: How to create a Neural Network in JavaScript in only 30 lines of code
- Python: Optical Character Recognition (OCR)
- Python: A Neural Network in 11 lines of Python
- Python: Traffic signs classification with a convolutional network
Build your own Operating System
- Assembly: Writing a Tiny x86 Bootloader
- C: Operating Systems: From 0 to 1
- C: The little book about OS development
- C: Kernel 101 – Let’s write a Kernel
- C: Kernel 201 – Let’s write a Kernel with keyboard and screen support
- C: Build a minimal multi-tasking kernel for ARM from scratch
- C: How to create an OS from scratch
- C: Malloc tutorial
- C: Hack the virtual memory
- C++: Write your own Operating System [video]
- C++: Writing a Bootloader
- Rust: Writing an OS in Rust
Build your own Physics Engine
- C: Video Game Physics Tutorial
- C++: Game physics series by Allen Chou
- C++: How to Create a Custom Physics Engine
- C++: Game physics series by Glenn Fiedler
- C++: 3D Physics Engine Tutorial [video]
- C#: TowerFall Physics
- JavaScript: Build your own basic physics engine in JavaScript
- JavaScript: How Physics Engines Work
- JavaScript: Broad Phase Collision Detection Using Spatial Partitioning
- JavaScript: Build a simple 2D physics engine for JavaScript games
Build your own Programming Language
- (any): mal - Make a Lisp
- C: Baby's First Garbage Collector
- C: Build Your Own Lisp: Learn C and build your own programming language in 1000 lines of code
- C: Implement a minimal interpreter, Compiler (x86/Arm) and JIT compiler from scratch
- C: Writing a Simple Garbage Collector in C
- C++: Writing Your Own Toy Compiler Using Flex
- C++: How to Create a Compiler [video]
- C++: Kaleidoscope: Implementing a Language with LLVM
- F#: Understanding Parser Combinators
- Go: The Super Tiny Compiler
- Go: Lexical Scanning in Go [video]
- Haskell: Let's Build a Compiler
- Haskell: Write You a Haskell
- Java: Crafting interpreters: A handbook for making programming languages
- JavaScript: The Super Tiny Compiler
- OCaml: Writing a C Compiler
- Pascal: Let's Build a Compiler
- Python: A Python Interpreter Written in Python
- Python: lisp.py: Make your own Lisp interpreter
- Python: Simple Iterator-based Parsing
- Python: Simple Top-Down Parsing in Python
- Python: How to Write a Lisp Interpreter in Python
- Racket: Beautiful Racket: How to make your own programming languages with Racket
- Ruby: A Compiler From Scratch
- Ruby: Markdown compiler from scratch in Ruby
Build your own Regex Engine
- C: A Regular Expression Matcher
- C: Regular Expression Matching Can Be Simple And Fast
- JavaScript: Build a Regex Engine in Less than 40 Lines of Code
- JavaScript: How to implement regular expressions in functional javascript using derivatives
- Perl: How Regexes Work
- Scala: No Magic: Regular Expressions
Build your own Search Engine
- CSS: A search engine in CSS
- Python: Implementing a Search Engine with Ranking in Python
- Python: Building a search engine using Redis and redis-py
- Python: Building a Vector Space Indexing Engine in Python
- Python: Building A Python-Based Search Engine [video]
Build your own Shell
- C: Tutorial - Write a Shell in C
- C: Let's build a shell!
- C: Writing a UNIX Shell - Part I
- Ruby: A Unix Shell in Ruby
Build your own Template Engine
- JavaScript: JavaScript template engine in just 20 lines
- JavaScript: Understanding JavaScript Micro-Templating
- Python: Approach: Building a toy template engine in Python
- Python: A Template Engine
- Ruby: How to write a template engine in less than 30 lines of code
Build your own Text Editor
- Python: Create a Simple Python Text Editor!
- C: Build Your Own Text Editor
- C++: Designing a Simple Text Editor
- Python: Python Tutorial: Make Your Own Text Editor [video]
Build your own Web Search Engine
Build your own Web Server
- C#: Writing a Web Server from Scratch
- Node.js: Let's code a web server from scratch with NodeJS Streams
- PHP: Writing a webserver in pure PHP
- Python: A Simple Web Server
- Python: Let’s Build A Web Server.
- Python: Web application from scratch
- Python: Building a basic HTTP Server from scratch in Python
- Ruby: Building a simple websockets server from scratch in Ruby
Uncategorized
- (any): From NAND to Tetris: Building a Modern Computer From First Principles
- Alloy: The Same-Origin Policy
- C: Building a software and hardware stack for a simple computer from scratch [video]
- C: How to Write a Video Player in Less Than 1000 Lines
- C: Learn how to write a hash table in C
- C: Writing an SVG Library
- C: The very basics of a terminal emulator
- C++: Build your own VR headset for $100
- C++: How X Window Managers work and how to write one
- C++: Writing a Linux Debugger
- C++: How a 64k intro is made
- C#: C# Networking: Create a TCP chater server, TCP games, UDP Pong and more
- Go: Build a web application in Go
- Java: Build a Flashlight App [video]
- JavaScript: Build Your Own Module Bunder - Minipack
- JavaScript: Learn JavaScript Promises by Building a Promise from Scratch
- JavaScript: Implementing promises from scratch (TDD way)
- Nim: Writing a DMIDecode Parser
- Nim: Writing a INI Parser
- Nim: Writing a Link Checker
- Nim: Writing a stow alternative to manage dotfiles
- Nim: Writing a URL Shortening Service
- Node.js: Build a static site generator in 40 lines with Node.js
- Python: How to Build a Kick-Ass Mobile Document Scanner in Just 5 Minutes
- Python: Continuous Integration System
- Python: Building a Facial Recognition Pipeline with Deep Learning in Tensorflow
- Python: Recommender Systems in Python: Beginner Tutorial
- Python: Write SMS-spam detector with Scikit-learn
- Python: A Simple Content-Based Recommendation Engine in Python
- Python: Developing a License Plate Recognition System with Machine Learning in Python
- Ruby: A Pedometer in the Real World
- Ruby: Writing a CI Server
- Ruby: Creating a Linux Desktop application with Ruby
- Rust: Let's build a browser engine
- Rust: Building a DNS server in Rust
- TypeScript: Make your own GraphQL metrics dashboard
How to contribute
Contributions are very welcome: Submit tutorial
License
To the extent possible under law, Daniel Stefanovic has waived all copyright and related or neighboring rights to this work.