├── .github └── FUNDING.yml ├── .gitattributes ├── codecrafters-banner.png ├── ISSUE_TEMPLATE.md └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: Correia-jpv -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.md linguist-detectable=true 2 | *.md linguist-documentation=false 3 | -------------------------------------------------------------------------------- /codecrafters-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Correia-jpv/fucking-build-your-own-x/HEAD/codecrafters-banner.png -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | ### Main programming language 6 | 7 | 8 | ### Tutorial title 9 | 10 | 11 | ### Tutorial URL 12 | 13 | ### Category 14 | * [ ] 3D Renderer 15 | * [ ] Augmented Reality 16 | * [ ] BitTorrent Client 17 | * [ ] Blockchain / Cryptocurrency 18 | * [ ] Bot 19 | * [ ] Command-Line Tool 20 | * [ ] Database 21 | * [ ] Docker 22 | * [ ] Emulator / Virtual Machine 23 | * [ ] Front-end Framework / Library 24 | * [ ] Game 25 | * [ ] Git 26 | * [ ] Network Stack 27 | * [ ] Neural Network 28 | * [ ] Operating System 29 | * [ ] Physics Engine 30 | * [ ] Programming Language 31 | * [ ] Regex Engine 32 | * [ ] Search Engine 33 | * [ ] Shell 34 | * [ ] Template Engine 35 | * [ ] Visual Recognition System 36 | * [ ] Voxel Engine 37 | * [ ] Web Search Engine 38 | * [ ] Web Server 39 | * [ ] Uncategorized 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Banner](https://codecrafters.io/images/updated-byox-banner.gif)](https://codecrafters.io/github-banner) 2 | 3 | ## Build your own <insert-technology-here> 4 | 5 | This repository is a compilation of well-written, step-by-step guides for re-creating our favorite technologies from scratch. 6 | 7 | > *What I cannot create, I do not understand — Richard Feynman.* 8 | 9 | It's a great way to learn. 10 | 11 | * [3D Renderer](#build-your-own-3d-renderer) 12 | * [Augmented Reality](#build-your-own-augmented-reality) 13 | * [BitTorrent Client](#build-your-own-bittorrent-client) 14 | * [Blockchain / Cryptocurrency](#build-your-own-blockchain--cryptocurrency) 15 | * [Bot](#build-your-own-bot) 16 | * [Command-Line Tool](#build-your-own-command-line-tool) 17 | * [Database](#build-your-own-database) 18 | * [Docker](#build-your-own-docker) 19 | * [Emulator / Virtual Machine](#build-your-own-emulator--virtual-machine) 20 | * [Front-end Framework / Library](#build-your-own-front-end-framework--library) 21 | * [Game](#build-your-own-game) 22 | * [Git](#build-your-own-git) 23 | * [Network Stack](#build-your-own-network-stack) 24 | * [Neural Network](#build-your-own-neural-network) 25 | * [Operating System](#build-your-own-operating-system) 26 | * [Physics Engine](#build-your-own-physics-engine) 27 | * [Programming Language](#build-your-own-programming-language) 28 | * [Regex Engine](#build-your-own-regex-engine) 29 | * [Search Engine](#build-your-own-search-engine) 30 | * [Shell](#build-your-own-shell) 31 | * [Template Engine](#build-your-own-template-engine) 32 | * [Text Editor](#build-your-own-text-editor) 33 | * [Visual Recognition System](#build-your-own-visual-recognition-system) 34 | * [Voxel Engine](#build-your-own-voxel-engine) 35 | * [Web Browser](#build-your-own-web-browser) 36 | * [Web Server](#build-your-own-web-server) 37 | * [Uncategorized](#uncategorized) 38 | 39 | ## Tutorials 40 | 41 | #### Build your own `3D Renderer` 42 | 43 | * 🌎 [**C++**: _Introduction to Ray Tracing: a Simple Method for Creating 3D Images_](www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work) 44 | *      ?⭐      ?🍴 [**C++**: _How OpenGL works: software rendering in 500 lines of code_](https://github.com/ssloy/tinyrenderer/wiki)) 45 | * [**C++**: _Raycasting engine of Wolfenstein 3D_](http://lodev.org/cgtutor/raycasting.html) 46 | * [**C++**: _Physically Based Rendering:From Theory To Implementation_](http://www.pbr-book.org/) 47 | * 🌎 [**C++**: _Ray Tracing in One Weekend_](raytracing.github.io/books/RayTracingInOneWeekend.html) 48 | * 🌎 [**C++**: _Rasterization: a Practical Implementation_](www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/overview-rasterization-algorithm) 49 | * 🌎 [**C# / TypeScript / JavaScript**: _Learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript_](www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/) 50 | * 🌎 [**Java / JavaScript**: _Build your own 3D renderer_](avik-das.github.io/build-your-own-raytracer/) 51 | * [**Java**: _How to create your own simple 3D render engine in pure Java_](http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html) 52 | * [**JavaScript / Pseudocode**: _Computer Graphics from scratch_](http://www.gabrielgambetta.com/computer-graphics-from-scratch/introduction.html) 53 | * [**Python**: _A 3D Modeller_](http://aosabook.org/en/500L/a-3d-modeller.html) 54 | 55 | #### Build your own `Augmented Reality` 56 | 57 | * 🌎 [**C#**: _How To: Augmented Reality App Tutorial for Beginners with Vuforia and Unity 3D_](www.youtube.com/watch?v=uXNjNcqW4kY) [video] 58 | * 🌎 [**C#**: _How To Unity ARCore_](www.youtube.com/playlist?list=PLKIKuXdn4ZMjuUAtdQfK1vwTZPQn_rgSv) [video] 59 | * 🌎 [**C#**: _AR Portal Tutorial with Unity_](www.youtube.com/playlist?list=PLPCqNOwwN794Gz5fzUSi1p4OqLU0HTmvn) [video] 60 | * 🌎 [**C#**: _How to create a Dragon in Augmented Reality in Unity ARCore_](www.youtube.com/watch?v=qTSDPkPyPqs) [video] 61 | * 🌎 [**C#**: _How to Augmented Reality AR Tutorial: ARKit Portal to the Upside Down_](www.youtube.com/watch?v=Z5AmqMuNi08) [video] 62 | * 🌎 [**Python**: _Augmented Reality with Python and OpenCV_](bitesofcode.wordpress.com/2017/09/12/augmented-reality-with-python-and-opencv-part-1/) 63 | 64 | #### Build your own `BitTorrent Client` 65 | 66 | * 🌎 [**C#**: _Building a BitTorrent client from scratch in C#_](www.seanjoflynn.com/research/bittorrent.html) 67 | * 🌎 [**Go**: _Building a BitTorrent client from the ground up in Go_](blog.jse.li/posts/torrent/) 68 | * 🌎 [**Nim**: _Writing a Bencode Parser_](xmonader.github.io/nimdays/day02_bencode.html) 69 | * 🌎 [**Node.js**: _Write your own bittorrent client_](allenkim67.github.io/programming/2016/05/04/how-to-make-your-own-bittorrent-client.html) 70 | * [**Python**: _A BitTorrent client in Python 3.5_](http://markuseliasson.se/article/bittorrent-in-python/) 71 | 72 | #### Build your own `Blockchain / Cryptocurrency` 73 | 74 | * 🌎 [**ATS**: _Functional Blockchain_](beta.observablehq.com/@galletti94/functional-blockchain) 75 | * 🌎 [**C#**: _Programming The Blockchain in C#_](programmingblockchain.gitbooks.io/programmingblockchain/) 76 | * 🌎 [**Crystal**: _Write your own blockchain and PoW algorithm using Crystal_](medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52) 77 | * 🌎 [**Go**: _Building Blockchain in Go_](jeiwan.net/posts/building-blockchain-in-go-part-1/) 78 | * 🌎 [**Go**: _Code your own blockchain in less than 200 lines of Go_](medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc) 79 | * 🌎 [**Java**: _Creating Your First Blockchain with Java_](medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa) 80 | *   1283⭐    327🍴 [**JavaScript**: _A cryptocurrency implementation in less than 1500 lines of code_](https://github.com/conradoqg/naivecoin)) 81 | *   1126⭐    208🍴 [**JavaScript**: _Build your own Blockchain in JavaScript_](https://github.com/nambrot/blockchain-in-js)) 82 | * 🌎 [**JavaScript**: _Learn & Build a JavaScript Blockchain_](medium.com/digital-alchemy-holdings/learn-build-a-javascript-blockchain-part-1-ca61c285821e) 83 | *   1770⭐    753🍴 [**JavaScript**: _Creating a blockchain with JavaScript_](https://github.com/SavjeeTutorials/SavjeeCoin)) 84 | * 🌎 [**JavaScript**: _How To Launch Your Own Production-Ready Cryptocurrency_](hackernoon.com/how-to-launch-your-own-production-ready-cryptocurrency-ab97cb773371) 85 | * 🌎 [**JavaScript**: _Writing a Blockchain in Node.js_](www.smashingmagazine.com/2020/02/cryptocurrency-blockchain-node-js/) 86 | * 🌎 [**Kotlin**: _Let’s implement a cryptocurrency in Kotlin_](medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580) 87 | * 🌎 [**Python**: _Learn Blockchains by Building One_](hackernoon.com/learn-blockchains-by-building-one-117428612f46) 88 | * [**Python**: _Build your own blockchain: a Python tutorial_](http://ecomunsing.com/build-your-own-blockchain) 89 | * [**Python**: _A Practical Introduction to Blockchain with Python_](http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/) 90 | * 🌎 [**Python**: _Let’s Build the Tiniest Blockchain_](medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b) 91 | *    677⭐     72🍴 [**Ruby**: _Programming Blockchains Step-by-Step (Manuscripts Book Edition)_](https://github.com/yukimotopress/programming-blockchains-step-by-step)) 92 | * 🌎 [**Scala**: _How to build a simple actor-based blockchain_](medium.freecodecamp.org/how-to-build-a-simple-actor-based-blockchain-aac1e996c177) 93 | * 🌎 [**TypeScript**: _Naivecoin: a tutorial for building a cryptocurrency_](lhartikk.github.io/) 94 | * 🌎 [**TypeScript**: _NaivecoinStake: a tutorial for building a cryptocurrency with the Proof of Stake consensus_](naivecoinstake.learn.uno/) 95 | * 🌎 [**Rust**: _Building A Blockchain in Rust & Substrate_](hackernoon.com/building-a-blockchain-in-rust-and-substrate-a-step-by-step-guide-for-developers-kc223ybp) 96 | 97 | 98 | #### Build your own `Bot` 99 | 100 | * 🌎 [**Haskell**: _Roll your own IRC bot_](wiki.haskell.org/Roll_your_own_IRC_bot) 101 | * 🌎 [**Node.js**: _Creating a Simple Facebook Messenger AI Bot with API.ai in Node.js_](tutorials.botsfloor.com/creating-a-simple-facebook-messenger-ai-bot-with-api-ai-in-node-js-50ae2fa5c80d) 102 | * 🌎 [**Node.js**: _How to make a responsive telegram bot_](www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/) 103 | * 🌎 [**Node.js**: _Create a Discord bot_](discordjs.guide/) 104 | * 🌎 [**Node.js**: _gifbot - Building a GitHub App_](blog.scottlogic.com/2017/05/22/gifbot-github-integration.html) 105 | * 🌎 [**Node.js**: _Building A Simple AI Chatbot With Web Speech API And Node.js_](www.smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js/) 106 | * 🌎 [**Python**: _How to Build Your First Slack Bot with Python_](www.fullstackpython.com/blog/build-first-slack-bot-python.html) 107 | * 🌎 [**Python**: _How to build a Slack Bot with Python using Slack Events API & Django under 20 minute_](medium.com/freehunch/how-to-build-a-slack-bot-with-python-using-slack-events-api-django-under-20-minute-code-included-269c3a9bf64e) 108 | * [**Python**: _Build a Reddit Bot_](http://pythonforengineers.com/build-a-reddit-bot-part-1/) 109 | * 🌎 [**Python**: _How To Make A Reddit Bot_](www.youtube.com/watch?v=krTUf7BpTc0) [video] 110 | * 🌎 [**Python**: _How To Create a Telegram Bot Using Python_](www.freecodecamp.org/news/how-to-create-a-telegram-bot-using-python/) 111 | * 🌎 [**Python**: _Create a Twitter Bot in Python Using Tweepy_](medium.freecodecamp.org/creating-a-twitter-bot-in-python-with-tweepy-ac524157a607) 112 | * 🌎 [**Python**: _Creating Reddit Bot with Python & PRAW_](www.youtube.com/playlist?list=PLIFBTFgFpoJ9vmYYlfxRFV6U_XhG-4fpP) [video] 113 | * 🌎 [**R**: _Build A Cryptocurrency Trading Bot with R_](towardsdatascience.com/build-a-cryptocurrency-trading-bot-with-r-1445c429e1b1) 114 | * 🌎 [**Rust**: _A bot for Starcraft in Rust, C or any other language_](habr.com/en/post/436254/) 115 | 116 | #### Build your own `Command-Line Tool` 117 | 118 | * 🌎 [**Go**: _Visualize your local git contributions with Go_](flaviocopes.com/go-git-contributions/) 119 | * 🌎 [**Go**: _Build a command line app with Go: lolcat_](flaviocopes.com/go-tutorial-lolcat/) 120 | * 🌎 [**Go**: _Building a cli command with Go: cowsay_](flaviocopes.com/go-tutorial-cowsay/) 121 | * 🌎 [**Go**: _Go CLI tutorial: fortune clone_](flaviocopes.com/go-tutorial-fortune/) 122 | * 🌎 [**Nim**: _Writing a stow alternative to manage dotfiles_](xmonader.github.io/nimdays/day06_nistow.html) 123 | * 🌎 [**Node.js**: _Create a CLI tool in Javascript_](citw.dev/tutorial/create-your-own-cli-tool) 124 | * 🌎 [**Rust**: _Command line apps in Rust_](rust-cli.github.io/book/index.html) 125 | * 🌎 [**Rust**: _Writing a Command Line Tool in Rust_](mattgathu.dev/2017/08/29/writing-cli-app-rust.html) 126 | * 🌎 [**Zig**: _Build Your Own CLI App in Zig from Scratch_](rebuild-x.github.io/docs/#/./zig/terminal/cli) 127 | 128 | 129 | #### Build your own `Database` 130 | 131 | * 🌎 [**C**: _Let's Build a Simple Database_](cstack.github.io/db_tutorial/) 132 | * 🌎 [**C++**: _Build Your Own Redis from Scratch_](build-your-own.org/redis) 133 | * 🌎 [**C#**: _Build Your Own Database_](www.codeproject.com/Articles/1029838/Build-Your-Own-Database) 134 | * [**Clojure**: _An Archaeology-Inspired Database_](http://aosabook.org/en/500L/an-archaeology-inspired-database.html) 135 | * 🌎 [**Crystal**: _Why you should build your own NoSQL Database_](medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5) 136 | * 🌎 [**Go**: _Build Your Own Database from Scratch: Persistence, Indexing, Concurrency_](build-your-own.org/database/) 137 | * 🌎 [**Go**: _Build Your Own Redis from Scratch_](www.build-redis-from-scratch.dev/) 138 | * [**JavaScript**: _Dagoba: an in-memory graph database_](http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html) 139 | * [**Python**: _DBDB: Dog Bed Database_](http://aosabook.org/en/500L/dbdb-dog-bed-database.html) 140 | * [**Python**: _Write your own miniature Redis with Python_](http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/) 141 | * 🌎 [**Ruby**: _Build your own fast, persistent KV store in Ruby_](dineshgowda.com/posts/build-your-own-persistent-kv-store/) 142 | * 🌎 [**Rust**: _Build your own Redis client and server_](tokio.rs/tokio/tutorial/setup) 143 | 144 | #### Build your own `Docker` 145 | 146 | * 🌎 [**C**: _Linux containers in 500 lines of code_](blog.lizzie.io/linux-containers-in-500-loc.html) 147 | * 🌎 [**Go**: _Build Your Own Container Using Less than 100 Lines of Go_](www.infoq.com/articles/build-a-container-golang) 148 | * 🌎 [**Go**: _Building a container from scratch in Go_](www.youtube.com/watch?v=8fi7uSYlOdc) [video] 149 | *   3157⭐    247🍴 [**Python**: _A workshop on Linux containers: Rebuild Docker from Scratch_](https://github.com/Fewbytes/rubber-docker)) 150 | *    922⭐     64🍴 [**Python**: _A proof-of-concept imitation of Docker, written in 100% Python_](https://github.com/tonybaloney/mocker)) 151 | *  12592⭐    750🍴 [**Shell**: _Docker implemented in around 100 lines of bash_](https://github.com/p8952/bocker)) 152 | 153 | #### Build your own `Emulator / Virtual Machine` 154 | 155 | * 🌎 [**C**: _Home-grown bytecode interpreters_](medium.com/bumble-tech/home-grown-bytecode-interpreters-51e12d59b25c) 156 | * [**C**: _Virtual machine in C_](http://web.archive.org/web/20200121100942/https://blog.felixangell.com/virtual-machine-in-c/) 157 | * 🌎 [**C**: _Write your Own Virtual Machine_](justinmeiners.github.io/lc3-vm/) 158 | * 🌎 [**C**: _Writing a Game Boy emulator, Cinoop_](cturt.github.io/cinoop.html) 159 | * [**C++**: _How to write an emulator (CHIP-8 interpreter)_](http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/) 160 | * [**C++**: _Emulation tutorial (CHIP-8 interpreter)_](http://www.codeslinger.co.uk/pages/projects/chip8.html) 161 | * [**C++**: _Emulation tutorial (GameBoy emulator)_](http://www.codeslinger.co.uk/pages/projects/gameboy.html) 162 | * [**C++**: _Emulation tutorial (Master System emulator)_](http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html) 163 | * 🌎 [**C++**: _NES Emulator From Scratch_](www.youtube.com/playlist?list=PLrOv9FMX8xJHqMvSGB_9G9nZZ_4IgteYf) [video] 164 | * [**Common Lisp**: _CHIP-8 in Common Lisp_](http://stevelosh.com/blog/2016/12/chip8-cpu/) 165 | * [**JavaScript**: _GameBoy Emulation in JavaScript_](http://imrannazar.com/GameBoy-Emulation-in-JavaScript) 166 | * [**Python**: _Emulation Basics: Write your own Chip 8 Emulator/Interpreter_](http://omokute.blogspot.com.br/2012/06/emulation-basics-write-your-own-chip-8.html) 167 | * 🌎 [**Rust**: _0dmg: Learning Rust by building a partial Game Boy emulator_](jeremybanks.github.io/0dmg/) 168 | 169 | #### Build your own `Front-end Framework / Library` 170 | 171 | * 🌎 [**JavaScript**: _WTF is JSX (Let's Build a JSX Renderer)_](jasonformat.com/wtf-is-jsx/) 172 | *   6655⭐    548🍴 [**JavaScript**: _A DIY guide to build your own React_](https://github.com/hexacta/didact)) 173 | * 🌎 [**JavaScript**: _Building React From Scratch_](www.youtube.com/watch?v=_MAD4Oly9yg) [video] 174 | * 🌎 [**JavaScript**: _Gooact: React in 160 lines of JavaScript_](medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f) 175 | * 🌎 [**JavaScript**: _Learn how React Reconciler package works by building your own lightweight React DOM_](hackernoon.com/learn-you-some-custom-react-renderers-aed7164a4199) 176 | * 🌎 [**JavaScript**: _Build Yourself a Redux_](zapier.com/engineering/how-to-build-redux/) 177 | * 🌎 [**JavaScript**: _Let’s Write Redux!_](www.jamasoftware.com/blog/lets-write-redux/) 178 | * 🌎 [**JavaScript**: _Redux: Implementing Store from Scratch_](egghead.io/lessons/react-redux-implementing-store-from-scratch) [video] 179 | * 🌎 [**JavaScript**: _Build Your own Simplified AngularJS in 200 Lines of JavaScript_](blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/) 180 | * [**JavaScript**: _Make Your Own AngularJS_](http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html) 181 | * 🌎 [**JavaScript**: _How to write your own Virtual DOM_](medium.com/@deathmood/how-to-write-your-own-virtual-dom-ee74acc13060) 182 | * 🌎 [**JavaScript**: _Building a frontend framework, from scratch, with components (templating, state, VDOM)_](mfrachet.github.io/create-frontend-framework/) 183 | * 🌎 [**JavaScript**: _Build your own React_](pomb.us/build-your-own-react/) 184 | * 🌎 [**JavaScript**: _Building a Custom React Renderer_](youtu.be/CGpMlWVcHok) [video] 185 | 186 | #### Build your own `Game` 187 | 188 | * 🌎 [**C**: _Handmade Hero_](handmadehero.org/) 189 | * 🌎 [**C**: _How to Program an NES game in C_](nesdoug.com/) 190 | * 🌎 [**C**: _Chess Engine In C_](www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg) [video] 191 | * 🌎 [**C**: _Let's Make: Dangerous Dave_](www.youtube.com/playlist?list=PLSkJey49cOgTSj465v2KbLZ7LMn10bCF9) [video] 192 | * 🌎 [**C**: _Learn Video Game Programming in C_](www.youtube.com/playlist?list=PLT6WFYYZE6uLMcPGS3qfpYm7T_gViYMMt) 193 | [video] 194 | * 🌎 [**C**: _Coding A Sudoku Solver in C_](www.youtube.com/playlist?list=PLkTXsX7igf8edTYU92nU-f5Ntzuf-RKvW) [video] 195 | * 🌎 [**C**: _Coding a Rogue/Nethack RPG in C_](www.youtube.com/playlist?list=PLkTXsX7igf8erbWGYT4iSAhpnJLJ0Nk5G) [video] 196 | * 🌎 [**C**: _On Tetris and Reimplementation_](brennan.io/2015/06/12/tetris-reimplementation/) 197 | * 🌎 [**C++**: _Breakout_](learnopengl.com/In-Practice/2D-Game/Breakout) 198 | * [**C++**: _Beginning Game Programming v2.0_](http://lazyfoo.net/tutorials/SDL/) 199 | * [**C++**: _Tetris tutorial in C++ platform independent focused in game logic for beginners_](http://javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/) 200 | * 🌎 [**C++**: _Remaking Cavestory in C++_](www.youtube.com/watch?v=ETvApbD5xRo&list=PLNOBk_id22bw6LXhrGfhVwqQIa-M2MsLa) [video] 201 | * 🌎 [**C++**: _Reconstructing Cave Story_](www.youtube.com/playlist?list=PL006xsVEsbKjSKBmLu1clo85yLrwjY67X) [video] 202 | * [**C++**: _Space Invaders from Scratch_](http://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html) 203 | * [**C#**: _Learn C# by Building a Simple RPG_](http://scottlilly.com/learn-c-by-building-a-simple-rpg-index/) 204 | * 🌎 [**C#**: _Creating a Roguelike Game in C#_](roguesharp.wordpress.com/) 205 | * 🌎 [**C#**: _Build a C#/WPF RPG_](scottlilly.com/build-a-cwpf-rpg/) 206 | * 🌎 [**Go**: _Games With Go_](www.youtube.com/playlist?list=PLDZujg-VgQlZUy1iCqBbe5faZLMkA3g2x) [video] 207 | * 🌎 [**Java**: _Code a 2D Game Engine using Java - Full Course for Beginners_](www.youtube.com/watch?v=025QFeZfeyM) [video] 208 | * 🌎 [**Java**: _3D Game Development with LWJGL 3_](lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/) 209 | * 🌎 [**JavaScript**: _2D breakout game using Phaser_](developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser) 210 | * [**JavaScript**: _How to Make Flappy Bird in HTML5 With Phaser_](http://www.lessmilk.com/tutorial/flappy-bird-phaser-1) 211 | * 🌎 [**JavaScript**: _Developing Games with React, Redux, and SVG_](auth0.com/blog/developing-games-with-react-redux-and-svg-part-1/) 212 | * 🌎 [**JavaScript**: _Build your own 8-Ball Pool game from scratch_](www.youtube.com/watch?v=aXwCrtAo4Wc) [video] 213 | * 🌎 [**JavaScript**: _How to Make Your First Roguelike_](gamedevelopment.tutsplus.com/tutorials/how-to-make-your-first-roguelike--gamedev-13677) 214 | * 🌎 [**JavaScript**: _Think like a programmer: How to build Snake using only JavaScript, HTML & CSS_](medium.freecodecamp.org/think-like-a-programmer-how-to-build-snake-using-only-javascript-html-and-css-7b1479c3339e) 215 | *      ?⭐      ?🍴 [**Lua**: _BYTEPATH_](https://github.com/SSYGEN/blog/issues/30)) 216 | * 🌎 [**Python**: _Developing Games With PyGame_](pythonprogramming.net/pygame-python-3-part-1-intro/) 217 | * 🌎 [**Python**: _Making Games with Python & Pygame_](inventwithpython.com/makinggames.pdf) [pdf] 218 | * [**Python**: _Roguelike Tutorial Revised_](http://rogueliketutorials.com/) 219 | * 🌎 [**Ruby**: _Developing Games With Ruby_](leanpub.com/developing-games-with-ruby/read) 220 | * 🌎 [**Ruby**: _Ruby Snake_](www.diatomenterprises.com/gamedev-on-ruby-why-not/) 221 | * 🌎 [**Rust**: _Adventures in Rust: A Basic 2D Game_](a5huynh.github.io/posts/2018/adventures-in-rust/) 222 | * 🌎 [**Rust**: _Roguelike Tutorial in Rust + tcod_](tomassedovic.github.io/roguelike-tutorial/) 223 | 224 | #### Build your own `Git` 225 | 226 | * [**Haskell**: _Reimplementing “git clone” in Haskell from the bottom up_](http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/) 227 | * [**JavaScript**: _Gitlet_](http://gitlet.maryrosecook.com/docs/gitlet.html) 228 | * 🌎 [**JavaScript**: _Build GIT - Learn GIT_](kushagra.dev/blog/build-git-learn-git/) 229 | * 🌎 [**Python**: _Just enough of a Git client to create a repo, commit, and push itself to GitHub_](benhoyt.com/writings/pygit/) 230 | * 🌎 [**Python**: _Write yourself a Git!_](wyag.thb.lt/) 231 | * 🌎 [**Python**: _ugit: Learn Git Internals by Building Git Yourself_](www.leshenko.net/p/ugit/) 232 | * 🌎 [**Ruby**: _Rebuilding Git in Ruby_](robots.thoughtbot.com/rebuilding-git-in-ruby) 233 | 234 | #### Build your own `Network Stack` 235 | 236 | * [**C**: _Beej's Guide to Network Programming_](http://beej.us/guide/bgnet/) 237 | * [**C**: _Let's code a TCP/IP stack_](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/) 238 | *    550⭐     41🍴 [**C / Python**: _Build your own VPN/Virtual Switch_](https://github.com/peiyuanix/build-your-own-zerotier)) 239 | * 🌎 [**Ruby**: _How to build a network stack in Ruby_](medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b) 240 | 241 | #### Build your own `Neural Network` 242 | 243 | * 🌎 [**C#**: _Neural Network OCR_](www.codeproject.com/Articles/11285/Neural-Network-OCR) 244 | * 🌎 [**F#**: _Building Neural Networks in F#_](towardsdatascience.com/building-neural-networks-in-f-part-1-a2832ae972e6) 245 | * 🌎 [**Go**: _Build a multilayer perceptron with Golang_](made2591.github.io/posts/neuralnetwork) 246 | * 🌎 [**Go**: _How to build a simple artificial neural network with Go_](sausheong.github.io/posts/how-to-build-a-simple-artificial-neural-network-with-go/) 247 | * 🌎 [**Go**: _Building a Neural Net from Scratch in Go_](datadan.io/blog/neural-net-with-go) 248 | * 🌎 [**JavaScript / Java**: _Neural Networks - The Nature of Code_](www.youtube.com/playlist?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh) [video] 249 | * 🌎 [**JavaScript**: _Neural networks from scratch for JavaScript linguists (Part1 — The Perceptron)_](hackernoon.com/neural-networks-from-scratch-for-javascript-linguists-part1-the-perceptron-632a4d1fbad2) 250 | * 🌎 [**Python**: _A Neural Network in 11 lines of Python_](iamtrask.github.io/2015/07/12/basic-python-network/) 251 | * 🌎 [**Python**: _Implement a Neural Network from Scratch_](victorzhou.com/blog/intro-to-neural-networks/) 252 | * [**Python**: _Optical Character Recognition (OCR)_](http://aosabook.org/en/500L/optical-character-recognition-ocr.html) 253 | * 🌎 [**Python**: _Traffic signs classification with a convolutional network_](navoshta.com/traffic-signs-classification/) 254 | * 🌎 [**Python**: _Generate Music using LSTM Neural Network in Keras_](towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5) 255 | * 🌎 [**Python**: _An Introduction to Convolutional Neural Networks_](victorzhou.com/blog/intro-to-cnns-part-1/) 256 | * 🌎 [**Python**: _Neural Networks: Zero to Hero_](www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ) 257 | 258 | #### Build your own `Operating System` 259 | 260 | * [**Assembly**: _Writing a Tiny x86 Bootloader_](http://joebergeron.io/posts/post_two.html) 261 | * [**Assembly**: _Baking Pi – Operating Systems Development_](http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html) 262 | * 🌎 [**C**: _Building a software and hardware stack for a simple computer from scratch_](www.youtube.com/watch?v=ZjwvMcP3Nf0&list=PLU94OURih-CiP4WxKSMt3UcwMSDM3aTtX) [video] 263 | * 🌎 [**C**: _Operating Systems: From 0 to 1_](tuhdo.github.io/os01/) 264 | * 🌎 [**C**: _The little book about OS development_](littleosbook.github.io/) 265 | * [**C**: _Roll your own toy UNIX-clone OS_](http://jamesmolloy.co.uk/tutorial_html/) 266 | * 🌎 [**C**: _Kernel 101 – Let’s write a Kernel_](arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel) 267 | * 🌎 [**C**: _Kernel 201 – Let’s write a Kernel with keyboard and screen support_](arjunsreedharan.org/post/99370248137/kernel-201-lets-write-a-kernel-with-keyboard) 268 | *   1184⭐    255🍴 [**C**: _Build a minimal multi-tasking kernel for ARM from scratch_](https://github.com/jserv/mini-arm-os)) 269 | *  29932⭐   3504🍴 [**C**: _How to create an OS from scratch_](https://github.com/cfenollosa/os-tutorial)) 270 | * 🌎 [**C**: _Malloc tutorial_](danluu.com/malloc-tutorial/) 271 | * 🌎 [**C**: _Hack the virtual memory_](blog.holbertonschool.com/hack-the-virtual-memory-c-strings-proc/) 272 | *  13712⭐   1332🍴 [**C**: _Learning operating system development using Linux kernel and Raspberry Pi_](https://github.com/s-matyukevich/raspberry-pi-os)) 273 | * 🌎 [**C**: _Operating systems development for Dummies_](medium.com/@lduck11007/operating-systems-development-for-dummies-3d4d786e8ac) 274 | * 🌎 [**C++**: _Write your own Operating System_](www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M) [video] 275 | * [**C++**: _Writing a Bootloader_](http://3zanders.co.uk/2017/10/13/writing-a-bootloader/) 276 | * 🌎 [**Rust**: _Writing an OS in Rust_](os.phil-opp.com/) 277 | * 🌎 [**Rust**: _Add RISC-V Rust Operating System Tutorial_](osblog.stephenmarz.com/) 278 | * 🌎 [**(any)**: _Linux from scratch_](linuxfromscratch.org/lfs) 279 | 280 | #### Build your own `Physics Engine` 281 | 282 | * 🌎 [**C**: _Video Game Physics Tutorial_](www.toptal.com/game/video-game-physics-part-i-an-introduction-to-rigid-body-dynamics) 283 | * [**C++**: _Game physics series by Allen Chou_](http://allenchou.net/game-physics-series/) 284 | * 🌎 [**C++**: _How to Create a Custom Physics Engine_](gamedevelopment.tutsplus.com/series/how-to-create-a-custom-physics-engine--gamedev-12715) 285 | * 🌎 [**C++**: _3D Physics Engine Tutorial_](www.youtube.com/playlist?list=PLEETnX-uPtBXm1KEr_2zQ6K_0hoGH6JJ0) [video] 286 | * [**JavaScript**: _How Physics Engines Work_](http://buildnewgames.com/gamephysics/) 287 | * [**JavaScript**: _Broad Phase Collision Detection Using Spatial Partitioning_](http://buildnewgames.com/broad-phase-collision-detection/) 288 | * 🌎 [**JavaScript**: _Build a simple 2D physics engine for JavaScript games_](developer.ibm.com/tutorials/wa-build2dphysicsengine/?mhsrc=ibmsearch_a&mhq=2dphysic) 289 | 290 | #### Build your own `Programming Language` 291 | 292 | *  10530⭐   2667🍴 [**(any)**: _mal - Make a Lisp_](https://github.com/kanaka/mal#mal---make-a-lisp)) 293 | *   1089⭐    154🍴 [**Assembly**: _Jonesforth_](https://github.com/nornagon/jonesforth/blob/master/jonesforth.S)) 294 | * [**C**: _Baby's First Garbage Collector_](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/) 295 | * [**C**: _Build Your Own Lisp: Learn C and build your own programming language in 1000 lines of code_](http://www.buildyourownlisp.com/) 296 | * [**C**: _Writing a Simple Garbage Collector in C_](http://maplant.com/gc.html) 297 | *   4319⭐    761🍴 [**C**: _C interpreter that interprets itself._](https://github.com/lotabout/write-a-C-interpreter)) 298 | *    560⭐     74🍴 [**C**: _A C & x86 version of the "Let's Build a Compiler" by Jack Crenshaw_](https://github.com/lotabout/Let-s-build-a-compiler)) 299 | *  12654⭐   1157🍴 [**C**: _A journey explaining how to build a compiler from scratch_](https://github.com/DoctorWkt/acwj)) 300 | * 🌎 [**C++**: _Writing Your Own Toy Compiler Using Flex_](gnuu.org/2009/09/18/writing-your-own-toy-compiler/) 301 | * 🌎 [**C++**: _How to Create a Compiler_](www.youtube.com/watch?v=eF9qWbuQLuw) [video] 302 | * 🌎 [**C++**: _Kaleidoscope: Implementing a Language with LLVM_](llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html) 303 | * 🌎 [**F#**: _Understanding Parser Combinators_](fsharpforfunandprofit.com/posts/understanding-parser-combinators/) 304 | * 🌎 [**Elixir**: _Demystifying compilers by writing your own_](www.youtube.com/watch?v=zMJYoYwOCd4) [video] 305 | *    661⭐     51🍴 [**Go**: _The Super Tiny Compiler_](https://github.com/hazbo/the-super-tiny-compiler)) 306 | * 🌎 [**Go**: _Lexical Scanning in Go_](www.youtube.com/watch?v=HxaD_trXwRE) [video] 307 | * 🌎 [**Haskell**: _Let's Build a Compiler_](g-ford.github.io/cradle/) 308 | * [**Haskell**: _Write You a Haskell_](http://dev.stephendiehl.com/fun/) 309 | * 🌎 [**Haskell**: _Write Yourself a Scheme in 48 Hours_](en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours) 310 | * 🌎 [**Haskell**: _Write You A Scheme_](www.wespiser.com/writings/wyas/home.html) 311 | * [**Java**: _Crafting interpreters: A handbook for making programming languages_](http://www.craftinginterpreters.com/) 312 | * [**Java**: _Creating JVM Language_](http://jakubdziworski.github.io/categories.html#Enkel-ref) 313 | *  28436⭐   2885🍴 [**JavaScript**: _The Super Tiny Compiler_](https://github.com/jamiebuilds/the-super-tiny-compiler)) 314 | *    179⭐     13🍴 [**JavaScript**: _The Super Tiny Interpreter_](https://github.com/keyanzhang/the-super-tiny-interpreter)) 315 | * 🌎 [**JavaScript**: _Little Lisp interpreter_](maryrosecook.com/blog/post/little-lisp-interpreter) 316 | * [**JavaScript**: _How to implement a programming language in JavaScript_](http://lisperator.net/pltut/) 317 | * 🌎 [**JavaScript**: _Let’s go write a Lisp_](idiocy.org/lets-go-write-a-lisp/part-1.html) 318 | * 🌎 [**OCaml**: _Writing a C Compiler_](norasandler.com/2017/11/29/Write-a-Compiler.html) 319 | * 🌎 [**OCaml**: _Writing a Lisp, the series_](bernsteinbear.com/blog/lisp/) 320 | * 🌎 [**Pascal**: _Let's Build a Compiler_](compilers.iecc.com/crenshaw/) 321 | * [**Python**: _A Python Interpreter Written in Python_](http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html) 322 | * [**Python**: _lisp.py: Make your own Lisp interpreter_](http://khamidou.com/compilers/lisp.py/) 323 | * [**Python**: _How to Write a Lisp Interpreter in Python_](http://norvig.com/lispy.html) 324 | * 🌎 [**Python**: _Let’s Build A Simple Interpreter_](ruslanspivak.com/lsbasi-part1/) 325 | * 🌎 [**Python**: _Make Your Own Simple Interpreted Programming Language_](www.youtube.com/watch?v=dj9CBS3ikGA&list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD&index=1) [video] 326 | * 🌎 [**Python**: _From Source Code To Machine Code: Build Your Own Compiler From Scratch_](build-your-own.org/compiler/) 327 | * 🌎 [**Racket**: _Beautiful Racket: How to make your own programming languages with Racket_](beautifulracket.com/) 328 | * 🌎 [**Ruby**: _A Compiler From Scratch_](www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch) 329 | * 🌎 [**Ruby**: _Markdown compiler from scratch in Ruby_](blog.beezwax.net/2017/07/07/writing-a-markdown-compiler/) 330 | * 🌎 [**Rust**: _Learning Parser Combinators With Rust_](bodil.lol/parser-combinators/) 331 | * 🌎 [**Swift**: _Building a LISP from scratch with Swift_](www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/) 332 | * 🌎 [**TypeScript**: _Build your own WebAssembly Compiler_](blog.scottlogic.com/2019/05/17/webassembly-compiler.html) 333 | 334 | #### Build your own `Regex Engine` 335 | 336 | * 🌎 [**C**: _A Regular Expression Matcher_](www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html) 337 | * 🌎 [**C**: _Regular Expression Matching Can Be Simple And Fast_](swtch.com/~rsc/regexp/regexp1.html) 338 | * 🌎 [**Go**: _How to build a regex engine from scratch_](rhaeguard.github.io/posts/regex) 339 | * 🌎 [**JavaScript**: _Build a Regex Engine in Less than 40 Lines of Code_](nickdrane.com/build-your-own-regex/) 340 | * [**JavaScript**: _How to implement regular expressions in functional javascript using derivatives_](http://dpk.io/dregs/toydregs) 341 | * 🌎 [**JavaScript**: _Implementing a Regular Expression Engine_](deniskyashif.com/2019/02/17/implementing-a-regular-expression-engine/) 342 | * 🌎 [**Perl**: _How Regexes Work_](perl.plover.com/Regex/article.html) 343 | * 🌎 [**Python**: _Build Your Own Regular Expression Engines: Backtracking, NFA, DFA_](build-your-own.org/b2a/r0_intro) 344 | * 🌎 [**Scala**: _No Magic: Regular Expressions_](rcoh.svbtle.com/no-magic-regular-expressions) 345 | 346 | #### Build your own `Search Engine` 347 | 348 | * 🌎 [**CSS**: _A search engine in CSS_](stories.algolia.com/a-search-engine-in-css-b5ec4e902e97) 349 | * [**Python**: _Building a search engine using Redis and redis-py_](http://www.dr-josiah.com/2010/07/building-search-engine-using-redis-and.html) 350 | * 🌎 [**Python**: _Building a Vector Space Indexing Engine in Python_](boyter.org/2010/08/build-vector-space-search-engine-python/) 351 | * 🌎 [**Python**: _Building A Python-Based Search Engine_](www.youtube.com/watch?v=cY7pE7vX6MU) [video] 352 | * 🌎 [**Python**: _Making text search learn from feedback_](medium.com/filament-ai/making-text-search-learn-from-feedback-4fe210fd87b0) 353 | * 🌎 [**Python**: _Finding Important Words in Text Using TF-IDF_](stevenloria.com/tf-idf/) 354 | 355 | #### Build your own `Shell` 356 | 357 | * 🌎 [**C**: _Tutorial - Write a Shell in C_](brennan.io/2015/01/16/write-a-shell-in-c/) 358 | *    677⭐     93🍴 [**C**: _Let's build a shell!_](https://github.com/kamalmarhubi/shell-workshop)) 359 | * 🌎 [**C**: _Writing a UNIX Shell_](indradhanush.github.io/blog/writing-a-unix-shell-part-1/) 360 | *    475⭐     28🍴 [**C**: _Build Your Own Shell_](https://github.com/tokenrove/build-your-own-shell)) 361 | * 🌎 [**C**: Write a shell in C](danishpraka.sh/posts/write-a-shell/) 362 | * 🌎 [**Go**: _Writing a simple shell in Go_](sj14.gitlab.io/post/2018-07-01-go-unix-shell/) 363 | * 🌎 [**Rust**: _Build Your Own Shell using Rust_](www.joshmcguigan.com/blog/build-your-own-shell-rust/) 364 | 365 | #### Build your own `Template Engine` 366 | 367 | * [**JavaScript**: _JavaScript template engine in just 20 lines_](http://krasimirtsonev.com/blog/article/Javascript-template-engine-in-just-20-line) 368 | * 🌎 [**JavaScript**: _Understanding JavaScript Micro-Templating_](medium.com/wdstack/understanding-javascript-micro-templating-f37a37b3b40e) 369 | * [**Python**: _Approach: Building a toy template engine in Python_](http://alexmic.net/building-a-template-engine/) 370 | * [**Python**: _A Template Engine_](http://aosabook.org/en/500L/a-template-engine.html) 371 | * [**Ruby**: _How to write a template engine in less than 30 lines of code_](http://bits.citrusbyte.com/how-to-write-a-template-library/) 372 | 373 | #### Build your own `Text Editor` 374 | 375 | * 🌎 [**C**: _Build Your Own Text Editor_](viewsourcecode.org/snaptoken/kilo/) 376 | * [**C++**: _Designing a Simple Text Editor_](http://www.fltk.org/doc-1.1/editor.html) 377 | * 🌎 [**Python**: _Python Tutorial: Make Your Own Text Editor_](www.youtube.com/watch?v=xqDonHEYPgA) [video] 378 | * [**Python**: _Create a Simple Python Text Editor!_](http://www.instructables.com/id/Create-a-Simple-Python-Text-Editor/) 379 | * 🌎 [**Ruby**: _Build a Collaborative Text Editor Using Rails_](blog.aha.io/text-editor/) 380 | * 🌎 [**Rust**: _Hecto: Build your own text editor in Rust_ ](www.flenker.blog/hecto/) 381 | 382 | #### Build your own `Visual Recognition System` 383 | 384 | * 🌎 [**Python**: _Developing a License Plate Recognition System with Machine Learning in Python_](medium.com/devcenter/developing-a-license-plate-recognition-system-with-machine-learning-in-python-787833569ccd) 385 | * 🌎 [**Python**: _Building a Facial Recognition Pipeline with Deep Learning in Tensorflow_](hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8) 386 | 387 | #### Build your own `Voxel Engine` 388 | 389 | * 🌎 [**C++**: _Let's Make a Voxel Engine_](sites.google.com/site/letsmakeavoxelengine/home) 390 | 391 | #### Build your own `Web Browser` 392 | 393 | * 🌎 [**Rust**: _Let's build a browser engine_](limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html) 394 | * 🌎 [**Python**: _Browser Engineering_](browser.engineering) 395 | 396 | #### Build your own `Web Server` 397 | 398 | * 🌎 [**C#**: _Writing a Web Server from Scratch_](www.codeproject.com/Articles/859108/Writing-a-Web-Server-from-Scratch) 399 | * 🌎 [**Node.js**: _Build Your Own Web Server From Scratch In JavaScript_](build-your-own.org/webserver/) 400 | * 🌎 [**Node.js**: _Let's code a web server from scratch with NodeJS Streams_](www.codementor.io/@ziad-saab/let-s-code-a-web-server-from-scratch-with-nodejs-streams-h4uc9utji) 401 | *   1035⭐     59🍴 [**Node.js**: _lets-build-express_](https://github.com/antoaravinth/lets-build-express)) 402 | * [**PHP**: _Writing a webserver in pure PHP_](http://station.clancats.com/writing-a-webserver-in-pure-php/) 403 | * [**Python**: _A Simple Web Server_](http://aosabook.org/en/500L/a-simple-web-server.html) 404 | * 🌎 [**Python**: _Let’s Build A Web Server._](ruslanspivak.com/lsbaws-part1/) 405 | * 🌎 [**Python**: _Web application from scratch_](defn.io/2018/02/25/web-app-from-scratch-01/) 406 | * [**Python**: _Building a basic HTTP Server from scratch in Python_](http://joaoventura.net/blog/2017/python-webserver/) 407 | * [**Python**: _Implementing a RESTful Web API with Python & Flask_](http://blog.luisrei.com/articles/flaskrest.html) 408 | * [**Ruby**: _Building a simple websockets server from scratch in Ruby_](http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/) 409 | 410 | #### Uncategorized 411 | 412 | * [**(any)**: _From NAND to Tetris: Building a Modern Computer From First Principles_](http://nand2tetris.org/) 413 | *     42⭐      2🍴 [**(any)**: build-your-own-x-vibe-coding: BYOX-style tutorials adapted for vibe coding](https://github.com/inFaaa/build-your-own-x-vibe-coding)) 414 | * [**Alloy**: _The Same-Origin Policy_](http://aosabook.org/en/500L/the-same-origin-policy.html) 415 | * [**C**: _How to Write a Video Player in Less Than 1000 Lines_](http://dranger.com/ffmpeg/ffmpeg.html) 416 | *   4268⭐    326🍴 [**C**: _Learn how to write a hash table in C_](https://github.com/jamesroutley/write-a-hash-table)) 417 | * 🌎 [**C**: _The very basics of a terminal emulator_](www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html) 418 | * 🌎 [**C**: _Write a System Call_](brennan.io/2016/11/14/kernel-dev-ep3/) 419 | * 🌎 [**C**: _Sol - An MQTT broker from scratch_](codepr.github.io/posts/sol-mqtt-broker) 420 | *   7100⭐    372🍴 [**C++**: _Build your own VR headset for $200_](https://github.com/relativty/Relativ)) 421 | * 🌎 [**C++**: _How X Window Managers work and how to write one_](seasonofcode.com/posts/how-x-window-managers-work-and-how-to-write-one-part-i.html) 422 | * 🌎 [**C++**: _Writing a Linux Debugger_](blog.tartanllama.xyz/writing-a-linux-debugger-setup/) 423 | * [**C++**: _How a 64k intro is made_](http://www.lofibucket.com/articles/64k_intro.html) 424 | * 🌎 [**C++**: _Make your own Game Engine_](www.youtube.com/playlist?list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT) 425 | * 🌎 [**C#**: _C# Networking: Create a TCP chater server, TCP games, UDP Pong and more_](16bpp.net/tutorials/csharp-networking) 426 | * 🌎 [**C#**: _Loading and rendering 3D skeletal animations from scratch in C# and GLSL_](www.seanjoflynn.com/research/skeletal-animation.html) 427 | * 🌎 [**Clojure**: _Building a spell-checker_](bernhardwenzel.com/articles/clojure-spellchecker/) 428 | * 🌎 [**Go**: _Build A Simple Terminal Emulator In 100 Lines of Golang_](ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/) 429 | * 🌎 [**Go**: _Let's Create a Simple Load Balancer_](kasvith.me/posts/lets-create-a-simple-lb-go/) 430 | *    415⭐     23🍴 [**Go**: _Video Encoding from Scratch_](https://github.com/kevmo314/codec-from-scratch)) 431 | * 🌎 [**Java**: _How to Build an Android Reddit App_](www.youtube.com/playlist?list=PLgCYzUzKIBE9HUJU-upNvl3TRVAo9W47y) [video] 432 | *   3281⭐    325🍴 [**JavaScript**: _Build Your Own Module Bundler - Minipack_](https://github.com/ronami/minipack)) 433 | * 🌎 [**JavaScript**: _Learn JavaScript Promises by Building a Promise from Scratch_](levelup.gitconnected.com/understand-javascript-promises-by-building-a-promise-from-scratch-84c0fd855720) 434 | * 🌎 [**JavaScript**: _Implementing promises from scratch (TDD way)_](www.mauriciopoppe.com/notes/computer-science/computation/promises/) 435 | * 🌎 [**JavaScript**: _Implement your own — call(), apply() and bind() method in JavaScript_](blog.usejournal.com/implement-your-own-call-apply-and-bind-method-in-javascript-42cc85dba1b) 436 | * 195152⭐  31091🍴 [**JavaScript**: _JavaScript Algorithms and Data Structures_](https://github.com/trekhleb/javascript-algorithms)) 437 | * 🌎 [**JavaScript**: _Build a ride hailing app with React Native_](pusher.com/tutorials/ride-hailing-react-native) 438 | * 🌎 [**JavaScript**: _Build Your Own AdBlocker in (Literally) 10 Minutes_](levelup.gitconnected.com/building-your-own-adblocker-in-literally-10-minutes-1eec093b04cd) 439 | *    159⭐     12🍴 [**Kotlin**: _Build Your Own Cache_](https://github.com/kezhenxu94/cache-lite)) 440 | *   3584⭐    235🍴 [**Lua**: _Building a CDN from Scratch to Learn about CDN_](https://github.com/leandromoreira/cdn-up-and-running)) 441 | * 🌎 [**Nim**: _Writing a Redis Protocol Parser_](xmonader.github.io/nimdays/day12_resp.html) 442 | * 🌎 [**Nim**: _Writing a Build system_](xmonader.github.io/nimdays/day11_buildsystem.html) 443 | * 🌎 [**Nim**: _Writing a MiniTest Framework_](xmonader.github.io/nimdays/day08_minitest.html) 444 | * 🌎 [**Nim**: _Writing a DMIDecode Parser_](xmonader.github.io/nimdays/day01_dmidecode.html) 445 | * 🌎 [**Nim**: _Writing a INI Parser_](xmonader.github.io/nimdays/day05_iniparser.html) 446 | * 🌎 [**Nim**: _Writing a Link Checker_](xmonader.github.io/nimdays/day04_asynclinkschecker.html) 447 | * 🌎 [**Nim**: _Writing a URL Shortening Service_](xmonader.github.io/nimdays/day07_shorturl.html) 448 | * 🌎 [**Node.js**: _Build a static site generator in 40 lines with Node.js_](www.webdevdrops.com/en/build-static-site-generator-nodejs-8969ebe34b22/) 449 | * 🌎 [**Node.js**: _Building A Simple Single Sign On(SSO) Server And Solution From Scratch In Node.js._](codeburst.io/building-a-simple-single-sign-on-sso-server-and-solution-from-scratch-in-node-js-ea6ee5fdf340) 450 | * 🌎 [**Node.js**: _How to create a real-world Node CLI app with Node_](medium.freecodecamp.org/how-to-create-a-real-world-node-cli-app-with-node-391b727bbed3) 451 | * 🌎 [**Node.js**: _Build a DNS Server in Node.js_](engineerhead.github.io/dns-server/) 452 | * 🌎 [**PHP**: _Write your own MVC from scratch in PHP_ ](chaitya62.github.io/2018/04/29/Writing-your-own-MVC-from-Scratch-in-PHP.html) 453 | * 🌎 [**PHP**: _Make your own blog_](ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog) 454 | * 🌎 [**PHP**: _Modern PHP Without a Framework_](kevinsmith.io/modern-php-without-a-framework) 455 | * 🌎 [**PHP**: _Code a Web Search Engine in PHP_](boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/) 456 | * 🌎 [**Python**: _Build a Deep Learning Library_](www.youtube.com/watch?v=o64FV-ez6Gw) [video] 457 | * 🌎 [**Python**: _How to Build a Kick-Ass Mobile Document Scanner in Just 5 Minutes_](www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/) 458 | * [**Python**: _Continuous Integration System_](http://aosabook.org/en/500L/a-continuous-integration-system.html) 459 | * 🌎 [**Python**: _Recommender Systems in Python: Beginner Tutorial_](www.datacamp.com/community/tutorials/recommender-systems-python) 460 | * 🌎 [**Python**: _Write SMS-spam detector with Scikit-learn_](medium.com/@kopilov.vlad/detect-sms-spam-in-kaggle-with-scikit-learn-5f6afa7a3ca2) 461 | * [**Python**: _A Simple Content-Based Recommendation Engine in Python_](http://blog.untrod.com/2016/06/simple-similar-products-recommendation-engine-in-python.html) 462 | * 🌎 [**Python**: _Stock Market Predictions with LSTM in Python_](www.datacamp.com/community/tutorials/lstm-python-stock-market) 463 | * 🌎 [**Python**: _Building a simple Generative Adversarial Network (GAN) using Tensorflow_](blog.paperspace.com/implementing-gans-in-tensorflow/) 464 | * 🌎 [**Python**: _Learn ML Algorithms by coding: Decision Trees_](lethalbrains.com/learn-ml-algorithms-by-coding-decision-trees-439ac503c9a4) 465 | *    114⭐      8🍴 [**Python**: _JSON Decoding Algorithm_](https://github.com/cheery/json-algorithm)) 466 | * 🌎 [**Python**: _Build your own Git plugin with python_](joshburns-xyz.vercel.app/posts/build-your-own-git-plugin) 467 | * [**Ruby**: _A Pedometer in the Real World_](http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html) 468 | * 🌎 [**Ruby**: _Creating a Linux Desktop application with Ruby_](iridakos.com/tutorials/2018/01/25/creating-a-gtk-todo-application-with-ruby) 469 | *   4522⭐    282🍴 [**Rust**: _Building a DNS server in Rust_](https://github.com/EmilHernvall/dnsguide/blob/master/README.md)) 470 | * 🌎 [**Rust**: _Writing Scalable Chat Service from Scratch_](nbaksalyar.github.io/2015/07/10/writing-chat-in-rust.html) 471 | * 🌎 [**Rust**: _WebGL + Rust: Basic Water Tutorial_](www.chinedufn.com/3d-webgl-basic-water-tutorial/) 472 | *    444⭐     34🍴 [**TypeScript**: _Tiny Package Manager: Learns how npm or Yarn works_](https://github.com/g-plane/tiny-package-manager)) 473 | 474 | ## Contribute 475 | * Submissions welcome, just send a PR, or [create an issue](https://github.com/correia-jpv/fucking-build-your-own-x/issues/new) 476 | * Help us review [pending submissions](https://github.com/correia-jpv/fucking-build-your-own-x/issues) by leaving comments and "reactions" 477 | 478 | ## Origins & License 479 | 480 | [![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/) 481 | 482 | This repository is the work of [many contributors](https://github.com/correia-jpv/fucking-build-your-own-x/graphs/contributors). It was started by [Daniel Stefanovic](https://github.com/danistefanovic), and is now maintained by 🌎 [CodeCrafters, Inc.](codecrafters.io) To the extent possible under law, 🌎 [CodeCrafters, Inc.](codecrafters.io) has waived all copyright and related or neighboring rights to this work. 483 | 484 | ## Source 485 | 450255⭐  42224🍴 [codecrafters-io/build-your-own-x](https://github.com/codecrafters-io/build-your-own-x)) --------------------------------------------------------------------------------