2023-10-13 10:06:00 +02:00
[![Banner ](https://codecrafters.io/images/byox-banner.png )](https://codecrafters.io/github-banner)
2018-05-09 14:07:35 +02:00
2022-11-24 11:41:51 +01:00
## Table of Contents: Build your own X
This repository is a compilation of well-written, step-by-step guides for re-creating our favorite technologies from scratch.
2018-05-13 10:55:10 +02:00
2022-05-16 01:49:12 +02:00
> *What I cannot create, I do not understand — Richard Feynman.*
2018-05-13 10:55:10 +02:00
2022-11-24 11:41:51 +01:00
It's a great way to learn.
2018-05-13 19:53:42 +02:00
2018-05-17 23:42:18 +02:00
* [3D Renderer ](#build-your-own-3d-renderer )
2018-05-21 12:09:44 +02:00
* [Augmented Reality ](#build-your-own-augmented-reality )
2018-05-25 16:20:18 +02:00
* [BitTorrent Client ](#build-your-own-bittorrent-client )
2018-05-17 23:42:18 +02:00
* [Blockchain / Cryptocurrency ](#build-your-own-blockchain--cryptocurrency )
* [Bot ](#build-your-own-bot )
2018-07-07 18:03:52 +02:00
* [Command-Line Tool ](#build-your-own-command-line-tool )
2018-05-17 23:42:18 +02:00
* [Database ](#build-your-own-database )
* [Docker ](#build-your-own-docker )
2018-12-27 11:43:20 +01:00
* [Emulator / Virtual Machine ](#build-your-own-emulator--virtual-machine )
2018-05-17 23:42:18 +02:00
* [Front-end Framework / Library ](#build-your-own-front-end-framework--library )
* [Game ](#build-your-own-game )
* [Git ](#build-your-own-git )
* [Network Stack ](#build-your-own-network-stack )
* [Neural Network ](#build-your-own-neural-network )
* [Operating System ](#build-your-own-operating-system )
* [Physics Engine ](#build-your-own-physics-engine )
* [Programming Language ](#build-your-own-programming-language )
* [Regex Engine ](#build-your-own-regex-engine )
* [Search Engine ](#build-your-own-search-engine )
* [Shell ](#build-your-own-shell )
* [Template Engine ](#build-your-own-template-engine )
2018-05-24 07:47:51 +02:00
* [Text Editor ](#build-your-own-text-editor )
2018-06-04 16:38:58 +02:00
* [Visual Recognition System ](#build-your-own-visual-recognition-system )
2018-07-07 18:45:38 +02:00
* [Voxel Engine ](#build-your-own-voxel-engine )
2022-11-10 17:56:48 +01:00
* [Web Browser ](#build-your-own-web-browser )
2018-05-17 23:42:18 +02:00
* [Web Server ](#build-your-own-web-server )
* [Uncategorized ](#uncategorized )
2018-05-13 19:53:42 +02:00
2018-05-13 22:47:27 +02:00
## Tutorials
2018-05-13 10:55:10 +02:00
#### Build your own `3D Renderer`
2018-05-17 23:42:18 +02:00
* [**C++**: _Introduction to Ray Tracing: a Simple Method for Creating 3D Images_ ](https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work )
* [**C++**: _How OpenGL works: software rendering in 500 lines of code_ ](https://github.com/ssloy/tinyrenderer/wiki )
* [**C++**: _Raycasting engine of Wolfenstein 3D_ ](http://lodev.org/cgtutor/raycasting.html )
2018-11-16 23:12:27 +01:00
* [**C++**: _Physically Based Rendering:From Theory To Implementation_ ](http://www.pbr-book.org/ )
2023-01-31 08:44:24 +01:00
* [**C++**: _Ray Tracing in One Weekend_ ](https://raytracing.github.io/books/RayTracingInOneWeekend.html )
2019-01-13 11:29:35 +01:00
* [**C++**: _Rasterization: a Practical Implementation_ ](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/overview-rasterization-algorithm )
2018-05-17 23:42:18 +02:00
* [**C# / TypeScript / JavaScript**: _Learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript_ ](https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/ )
* [**Java / JavaScript**: _Build your own 3D renderer_ ](https://avik-das.github.io/build-your-own-raytracer/ )
* [**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 )
2018-05-20 10:25:13 +02:00
* [**JavaScript / Pseudocode**: _Computer Graphics from scratch_ ](http://www.gabrielgambetta.com/computer-graphics-from-scratch/introduction.html )
2018-05-20 10:40:54 +02:00
* [**Python**: _A 3D Modeller_ ](http://aosabook.org/en/500L/a-3d-modeller.html )
2018-05-13 10:55:10 +02:00
2018-05-21 12:09:44 +02:00
#### Build your own `Augmented Reality`
* [**C#**: _How To: Augmented Reality App Tutorial for Beginners with Vuforia and Unity 3D_ ](https://www.youtube.com/watch?v=uXNjNcqW4kY ) [video]
* [**C#**: _How To Unity ARCore_ ](https://www.youtube.com/playlist?list=PLKIKuXdn4ZMjuUAtdQfK1vwTZPQn_rgSv ) [video]
* [**C#**: _AR Portal Tutorial with Unity_ ](https://www.youtube.com/playlist?list=PLPCqNOwwN794Gz5fzUSi1p4OqLU0HTmvn ) [video]
2021-03-13 11:35:49 +01:00
* [**C#**: _How to create a Dragon in Augmented Reality in Unity ARCore_ ](https://www.youtube.com/watch?v=qTSDPkPyPqs ) [video]
2018-05-21 12:11:01 +02:00
* [**C#**: _How to Augmented Reality AR Tutorial: ARKit Portal to the Upside Down_ ](https://www.youtube.com/watch?v=Z5AmqMuNi08 ) [video]
2018-10-20 11:19:30 +02:00
* [**Python**: _Augmented Reality with Python and OpenCV_ ](https://bitesofcode.wordpress.com/2017/09/12/augmented-reality-with-python-and-opencv-part-1/ )
2018-05-21 12:09:44 +02:00
2018-05-25 16:20:18 +02:00
#### Build your own `BitTorrent Client`
* [**C#**: _Building a BitTorrent client from scratch in C#_ ](https://www.seanjoflynn.com/research/bittorrent.html )
2020-04-19 18:32:27 +02:00
* [**Go**: _Building a BitTorrent client from the ground up in Go_ ](https://blog.jse.li/posts/torrent/ )
2018-09-09 12:32:12 +02:00
* [**Nim**: _Writing a Bencode Parser_ ](https://xmonader.github.io/nimdays/day02_bencode.html )
2018-05-25 16:20:18 +02:00
* [**Node.js**: _Write your own bittorrent client_ ](https://allenkim67.github.io/programming/2016/05/04/how-to-make-your-own-bittorrent-client.html )
2018-05-28 09:59:20 +02:00
* [**Python**: _A BitTorrent client in Python 3.5_ ](http://markuseliasson.se/article/bittorrent-in-python/ )
2018-05-25 16:20:18 +02:00
2018-05-13 10:55:10 +02:00
#### Build your own `Blockchain / Cryptocurrency`
2018-05-17 23:42:18 +02:00
* [**ATS**: _Functional Blockchain_ ](https://beta.observablehq.com/@galletti94/functional-blockchain )
2018-05-20 10:37:51 +02:00
* [**C#**: _Programming The Blockchain in C#_ ](https://programmingblockchain.gitbooks.io/programmingblockchain/ )
2018-06-13 09:04:05 +02:00
* [**Crystal**: _Write your own blockchain and PoW algorithm using Crystal_ ](https://medium.com/@bradford_hamilton/write-your-own-blockchain-and-pow-algorithm-using-crystal-d53d5d9d0c52 )
2021-03-13 11:35:49 +01:00
* [**Go**: _Building Blockchain in Go_ ](https://jeiwan.net/posts/building-blockchain-in-go-part-1/ )
2018-05-17 23:42:18 +02:00
* [**Go**: _Code your own blockchain in less than 200 lines of Go_ ](https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc )
* [**Java**: _Creating Your First Blockchain with Java_ ](https://medium.com/programmers-blockchain/create-simple-blockchain-java-tutorial-from-scratch-6eeed3cb03fa )
* [**JavaScript**: _A cryptocurrency implementation in less than 1500 lines of code_ ](https://github.com/conradoqg/naivecoin )
* [**JavaScript**: _Build your own Blockchain in JavaScript_ ](https://github.com/nambrot/blockchain-in-js )
* [**JavaScript**: _Learn & Build a JavaScript Blockchain_ ](https://medium.com/digital-alchemy-holdings/learn-build-a-javascript-blockchain-part-1-ca61c285821e )
2019-08-31 09:28:51 +02:00
* [**JavaScript**: _Creating a blockchain with JavaScript_ ](https://github.com/SavjeeTutorials/SavjeeCoin )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _How To Launch Your Own Production-Ready Cryptocurrency_ ](https://hackernoon.com/how-to-launch-your-own-production-ready-cryptocurrency-ab97cb773371 )
2020-12-07 13:31:19 +01:00
* [**JavaScript**: _Writing a Blockchain in Node.js_ ](https://www.hackdoor.io/articles/writing-a-blockchain-in-nodejs-6512fec33307 )
2018-07-07 17:04:07 +02:00
* [**Kotlin**: _Let’ s implement a cryptocurrency in Kotlin_ ](https://medium.com/@vasilyf/lets-implement-a-cryptocurrency-in-kotlin-part-1-blockchain-8704069f8580 )
2018-05-17 23:42:18 +02:00
* [**Python**: _Learn Blockchains by Building One_ ](https://hackernoon.com/learn-blockchains-by-building-one-117428612f46 )
* [**Python**: _Build your own blockchain: a Python tutorial_ ](http://ecomunsing.com/build-your-own-blockchain )
2018-05-20 18:48:28 +02:00
* [**Python**: _A Practical Introduction to Blockchain with Python_ ](http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/ )
2018-05-23 20:39:33 +02:00
* [**Python**: _Let’ s Build the Tiniest Blockchain_ ](https://medium.com/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b )
2018-05-17 23:42:18 +02:00
* [**Ruby**: _Programming Blockchains Step-by-Step (Manuscripts Book Edition)_ ](https://github.com/yukimotopress/programming-blockchains-step-by-step )
2018-11-16 23:04:25 +01:00
* [**Scala**: _How to build a simple actor-based blockchain_ ](https://medium.freecodecamp.org/how-to-build-a-simple-actor-based-blockchain-aac1e996c177 )
2018-05-17 23:42:18 +02:00
* [**TypeScript**: _Naivecoin: a tutorial for building a cryptocurrency_ ](https://lhartikk.github.io/ )
2018-08-18 11:00:19 +02:00
* [**TypeScript**: _NaivecoinStake: a tutorial for building a cryptocurrency with the Proof of Stake consensus_ ](https://naivecoinstake.learn.uno/ )
2018-05-13 10:55:10 +02:00
#### Build your own `Bot`
2018-05-17 23:42:18 +02:00
* [**Haskell**: _Roll your own IRC bot_ ](https://wiki.haskell.org/Roll_your_own_IRC_bot )
* [**Node.js**: _Creating a Simple Facebook Messenger AI Bot with API.ai in Node.js_ ](https://tutorials.botsfloor.com/creating-a-simple-facebook-messenger-ai-bot-with-api-ai-in-node-js-50ae2fa5c80d )
* [**Node.js**: _How to make a responsive telegram bot_ ](https://www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/ )
* [**Node.js**: _Create a Discord bot_ ](https://discordjs.guide/ )
2018-05-25 16:28:23 +02:00
* [**Node.js**: _gifbot - Building a GitHub App_ ](https://blog.scottlogic.com/2017/05/22/gifbot-github-integration.html )
2018-07-09 23:11:20 +02:00
* [**Node.js**: _Building A Simple AI Chatbot With Web Speech API And Node.js_ ](https://www.smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js/ )
2018-05-17 23:42:18 +02:00
* [**Python**: _How to Build Your First Slack Bot with Python_ ](https://www.fullstackpython.com/blog/build-first-slack-bot-python.html )
2018-07-31 16:54:07 +02:00
* [**Python**: _How to build a Slack Bot with Python using Slack Events API & Django under 20 minute_ ](https://medium.com/freehunch/how-to-build-a-slack-bot-with-python-using-slack-events-api-django-under-20-minute-code-included-269c3a9bf64e )
2018-05-17 23:42:18 +02:00
* [**Python**: _Build a Reddit Bot_ ](http://pythonforengineers.com/build-a-reddit-bot-part-1/ )
* [**Python**: _How To Make A Reddit Bot_ ](https://www.youtube.com/watch?v=krTUf7BpTc0 ) [video]
* [**Python**: _How To Create a Telegram Bot Using Python_ ](https://khashtamov.com/en/how-to-create-a-telegram-bot-using-python/ )
* [**Python**: _Create a Twitter Bot in Python Using Tweepy_ ](https://medium.freecodecamp.org/creating-a-twitter-bot-in-python-with-tweepy-ac524157a607 )
* [**Python**: _Creating Reddit Bot with Python & PRAW_ ](https://www.youtube.com/playlist?list=PLIFBTFgFpoJ9vmYYlfxRFV6U_XhG-4fpP ) [video]
* [**R**: _Build A Cryptocurrency Trading Bot with R_ ](https://towardsdatascience.com/build-a-cryptocurrency-trading-bot-with-r-1445c429e1b1 )
2019-03-10 12:50:07 +01:00
* [**Rust**: _A bot for Starcraft in Rust, C or any other language_ ](https://habr.com/en/post/436254/ )
2018-05-13 10:55:10 +02:00
2018-07-07 18:03:52 +02:00
#### Build your own `Command-Line Tool`
* [**Go**: _Visualize your local git contributions with Go_ ](https://flaviocopes.com/go-git-contributions/ )
2018-07-07 18:15:08 +02:00
* [**Go**: _Build a command line app with Go: lolcat_ ](https://flaviocopes.com/go-tutorial-lolcat/ )
2018-07-07 18:16:46 +02:00
* [**Go**: _Building a cli command with Go: cowsay_ ](https://flaviocopes.com/go-tutorial-cowsay/ )
2018-07-07 18:18:14 +02:00
* [**Go**: _Go CLI tutorial: fortune clone_ ](https://flaviocopes.com/go-tutorial-fortune/ )
2018-09-09 12:32:12 +02:00
* [**Nim**: _Writing a stow alternative to manage dotfiles_ ](https://xmonader.github.io/nimdays/day06_nistow.html )
2022-10-05 19:55:05 +02:00
* [**Node.js**: _Create a CLI tool in Javascript_ ](https://citw.dev/tutorial/create-your-own-cli-tool )
2023-02-02 10:11:47 +01:00
* [**Rust**: _Command line apps in Rust_ ](https://rust-cli.github.io/book/index.html )
* [**Rust**: _Writing a Command Line Tool in Rust_ ](https://mattgathu.github.io/2017/08/29/writing-cli-app-rust.html )
2018-07-07 18:03:52 +02:00
2018-05-13 10:55:10 +02:00
#### Build your own `Database`
2018-05-17 23:42:18 +02:00
* [**C**: _Let's Build a Simple Database_ ](https://cstack.github.io/db_tutorial/ )
2023-10-10 17:25:49 +02:00
* [**C++**: _Build Your Own Redis from Scratch_ ](https://build-your-own.org/redis )
2018-05-17 23:42:18 +02:00
* [**C#**: _Build Your Own Database_ ](https://www.codeproject.com/Articles/1029838/Build-Your-Own-Database )
* [**Clojure**: _An Archaeology-Inspired Database_ ](http://aosabook.org/en/500L/an-archaeology-inspired-database.html )
* [**Crystal**: _Why you should build your own NoSQL Database_ ](https://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5 )
2023-10-10 17:25:49 +02:00
* [**Go**: _Build Your Own Database from Scratch: Persistence, Indexing, Concurrency_ ](https://build-your-own.org/database/ )
* [**Go**: _Build Your Own Redis from Scratch ](https://www.build-redis-from-scratch.dev/ )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _Dagoba: an in-memory graph database_ ](http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html )
* [**Python**: _DBDB: Dog Bed Database_ ](http://aosabook.org/en/500L/dbdb-dog-bed-database.html )
2018-05-20 10:15:33 +02:00
* [**Python**: _Write your own miniature Redis with Python_ ](http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/ )
2023-02-14 22:07:15 +01:00
* [**Ruby**: _Build your own fast, persistent KV store in Ruby_ ](https://dinesh.wiki/posts/build-your-own-persistent-kv-store/ )
2023-10-10 17:25:49 +02:00
2018-05-13 17:49:15 +02:00
#### Build your own `Docker`
2018-05-17 23:42:18 +02:00
* [**C**: _Linux containers in 500 lines of code_ ](https://blog.lizzie.io/linux-containers-in-500-loc.html )
2019-04-23 22:04:12 +02:00
* [**Go**: _Build Your Own Container Using Less than 100 Lines of Go_ ](https://www.infoq.com/articles/build-a-container-golang )
2020-04-25 20:06:23 +02:00
* [**Go**: _Building a container from scratch in Go_ ](https://www.youtube.com/watch?v=8fi7uSYlOdc ) [video]
2018-05-17 23:42:18 +02:00
* [**Python**: _A workshop on Linux containers: Rebuild Docker from Scratch_ ](https://github.com/Fewbytes/rubber-docker )
* [**Python**: _A proof-of-concept imitation of Docker, written in 100% Python_ ](https://github.com/tonybaloney/mocker )
* [**Shell**: _Docker implemented in around 100 lines of bash_ ](https://github.com/p8952/bocker )
2018-05-13 10:55:10 +02:00
2018-12-27 11:43:20 +01:00
#### Build your own `Emulator / Virtual Machine`
2018-05-14 12:39:32 +02:00
2022-12-11 09:34:18 +01:00
* [**C**: _Home-grown bytecode interpreters_ ](https://medium.com/bumble-tech/home-grown-bytecode-interpreters-51e12d59b25c )
* [**C**: _Virtual machine in C_ ](http://web.archive.org/web/20200121100942/https://blog.felixangell.com/virtual-machine-in-c/ )
2018-12-27 11:43:20 +01:00
* [**C**: _Write your Own Virtual Machine_ ](https://justinmeiners.github.io/lc3-vm/ )
2018-07-14 12:58:22 +02:00
* [**C**: _Writing a Game Boy emulator, Cinoop_ ](https://cturt.github.io/cinoop.html )
2018-05-17 23:42:18 +02:00
* [**C++**: _How to write an emulator (CHIP-8 interpreter)_ ](http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/ )
* [**C++**: _Emulation tutorial (CHIP-8 interpreter)_ ](http://www.codeslinger.co.uk/pages/projects/chip8.html )
* [**C++**: _Emulation tutorial (GameBoy emulator)_ ](http://www.codeslinger.co.uk/pages/projects/gameboy.html )
* [**C++**: _Emulation tutorial (Master System emulator)_ ](http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html )
2020-06-08 11:58:41 +02:00
* [**C++**: _NES Emulator From Scratch_ ](https://www.youtube.com/playlist?list=PLrOv9FMX8xJHqMvSGB_9G9nZZ_4IgteYf ) [video]
2018-08-29 08:47:06 +02:00
* [**Common Lisp**: _CHIP-8 in Common Lisp_ ](http://stevelosh.com/blog/2016/12/chip8-cpu/ )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _GameBoy Emulation in JavaScript_ ](http://imrannazar.com/GameBoy-Emulation-in-JavaScript )
* [**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 )
2023-02-02 10:15:50 +01:00
* [**Rust**: _0dmg: Learning Rust by building a partial Game Boy emulator_ ](https://jeremybanks.github.io/0dmg/ )
2018-05-14 12:39:32 +02:00
2018-05-13 10:55:10 +02:00
#### Build your own `Front-end Framework / Library`
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _WTF is JSX (Let's Build a JSX Renderer)_ ](https://jasonformat.com/wtf-is-jsx/ )
* [**JavaScript**: _A DIY guide to build your own React_ ](https://github.com/hexacta/didact )
* [**JavaScript**: _Building React From Scratch_ ](https://www.youtube.com/watch?v=_MAD4Oly9yg ) [video]
* [**JavaScript**: _Gooact: React in 160 lines of JavaScript_ ](https://medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f )
2018-06-06 23:34:00 +02:00
* [**JavaScript**: _React Internals_ ](http://www.mattgreer.org/articles/react-internals-part-one-basic-rendering/ )
2018-07-19 00:58:38 +02:00
* [**JavaScript**: _Learn how React Reconciler package works by building your own lightweight React DOM_ ](https://hackernoon.com/learn-you-some-custom-react-renderers-aed7164a4199 )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _Build Yourself a Redux_ ](https://zapier.com/engineering/how-to-build-redux/ )
* [**JavaScript**: _Let’ s Write Redux!_ ](https://www.jamasoftware.com/blog/lets-write-redux/ )
2018-07-14 13:02:25 +02:00
* [**JavaScript**: _Redux: Implementing Store from Scratch_ ](https://egghead.io/lessons/react-redux-implementing-store-from-scratch ) [video]
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _Build Your own Simplified AngularJS in 200 Lines of JavaScript_ ](https://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/ )
2018-05-27 03:19:46 +02:00
* [**JavaScript**: _Make Your Own AngularJS_ ](http://teropa.info/blog/2013/11/03/make-your-own-angular-part-1-scopes-and-digest.html )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _How to write your own Virtual DOM_ ](https://medium.com/@deathmood/how-to-write-your-own-virtual-dom-ee74acc13060 )
2018-08-10 15:20:17 +02:00
* [**JavaScript**: _Building a frontend framework, from scratch, with components (templating, state, VDOM)_ ](https://mfrachet.github.io/create-frontend-framework/ )
2019-11-21 22:31:35 +01:00
* [**JavaScript**: _Build your own React_ ](https://pomb.us/build-your-own-react/ )
2020-07-17 09:36:58 +02:00
* [**JavaScript**: _Building a Custom React Renderer_ ](https://youtu.be/CGpMlWVcHok ) [video]
2018-05-13 10:55:10 +02:00
#### Build your own `Game`
2018-05-14 20:29:57 +02:00
2018-05-17 23:42:18 +02:00
* [**C**: _Handmade Hero_ ](https://handmadehero.org/ )
* [**C**: _How to Program an NES game in C_ ](https://nesdoug.com/ )
* [**C**: _Chess Engine In C_ ](https://www.youtube.com/playlist?list=PLZ1QII7yudbc-Ky058TEaOstZHVbT-2hg ) [video]
* [**C**: _Let's Make: Dangerous Dave_ ](https://www.youtube.com/playlist?list=PLSkJey49cOgTSj465v2KbLZ7LMn10bCF9 ) [video]
* [**C**: _Learn Video Game Programming in C_ ](https://www.youtube.com/playlist?list=PLT6WFYYZE6uLMcPGS3qfpYm7T_gViYMMt )
[video]
* [**C**: _Coding A Sudoku Solver in C_ ](https://www.youtube.com/playlist?list=PLkTXsX7igf8edTYU92nU-f5Ntzuf-RKvW ) [video]
* [**C**: _Coding a Rogue/Nethack RPG in C_ ](https://www.youtube.com/playlist?list=PLkTXsX7igf8erbWGYT4iSAhpnJLJ0Nk5G ) [video]
2018-06-21 23:03:43 +02:00
* [**C**: _On Tetris and Reimplementation_ ](https://brennan.io/2015/06/12/tetris-reimplementation/ )
2018-05-17 23:42:18 +02:00
* [**C++**: _Breakout_ ](https://learnopengl.com/In-Practice/2D-Game/Breakout )
* [**C++**: _Beginning Game Programming v2.0_ ](http://lazyfoo.net/tutorials/SDL/ )
2018-05-22 09:27:21 +02:00
* [**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/ )
2018-07-07 17:12:55 +02:00
* [**C++**: _Remaking Cavestory in C++_ ](https://www.youtube.com/watch?v=ETvApbD5xRo&list=PLNOBk_id22bw6LXhrGfhVwqQIa-M2MsLa ) [video]
* [**C++**: _Reconstructing Cave Story_ ](https://www.youtube.com/playlist?list=PL006xsVEsbKjSKBmLu1clo85yLrwjY67X ) [video]
2018-06-29 11:55:35 +02:00
* [**C++**: _Space Invaders from Scratch_ ](http://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html )
2018-05-17 23:42:18 +02:00
* [**C#**: _Learn C# by Building a Simple RPG_ ](http://scottlilly.com/learn-c-by-building-a-simple-rpg-index/ )
* [**C#**: _Creating a Roguelike Game in C#_ ](https://roguesharp.wordpress.com/ )
2019-01-13 11:24:48 +01:00
* [**C#**: _Build a C#/WPF RPG_ ](https://scottlilly.com/build-a-cwpf-rpg/ )
2022-07-16 13:42:45 +02:00
* [**Go**: _Games With Go_ ](https://www.youtube.com/playlist?list=PLDZujg-VgQlZUy1iCqBbe5faZLMkA3g2x ) [video]
2022-09-04 05:00:17 +02:00
* [**Java**: _Code a 2D Game Engine using Java - Full Course for Beginners_ ](https://www.youtube.com/watch?v=025QFeZfeyM ) [video]
2018-05-20 10:32:50 +02:00
* [**Java**: _3D Game Development with LWJGL 3_ ](https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/ )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _2D breakout game using Phaser_ ](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser )
* [**JavaScript**: _How to Make Flappy Bird in HTML5 With Phaser_ ](http://www.lessmilk.com/tutorial/flappy-bird-phaser-1 )
* [**JavaScript**: _Developing Games with React, Redux, and SVG_ ](https://auth0.com/blog/developing-games-with-react-redux-and-svg-part-1/ )
* [**JavaScript**: _Build your own 8-Ball Pool game from scratch_ ](https://www.youtube.com/watch?v=aXwCrtAo4Wc ) [video]
2018-05-24 11:39:13 +02:00
* [**JavaScript**: _How to Make Your First Roguelike_ ](https://gamedevelopment.tutsplus.com/tutorials/how-to-make-your-first-roguelike--gamedev-13677 )
2018-07-14 13:05:42 +02:00
* [**JavaScript**: _Think like a programmer: How to build Snake using only JavaScript, HTML & CSS_ ](https://medium.freecodecamp.org/think-like-a-programmer-how-to-build-snake-using-only-javascript-html-and-css-7b1479c3339e )
2018-05-17 23:42:18 +02:00
* [**Lua**: _BYTEPATH_ ](https://github.com/SSYGEN/blog/issues/30 )
* [**Python**: _Developing Games With PyGame_ ](https://pythonprogramming.net/pygame-python-3-part-1-intro/ )
* [**Python**: _Making Games with Python & Pygame_ ](https://inventwithpython.com/makinggames.pdf ) [pdf]
2019-07-09 12:19:50 +02:00
* [**Python**: _Roguelike Tutorial Revised_ ](http://rogueliketutorials.com/ )
2018-05-17 23:42:18 +02:00
* [**Ruby**: _Developing Games With Ruby_ ](https://leanpub.com/developing-games-with-ruby/read )
2018-09-07 09:18:34 +02:00
* [**Ruby**: _Ruby Snake_ ](https://www.diatomenterprises.com/gamedev-on-ruby-why-not/ )
2020-02-11 12:46:19 +01:00
* [**Rust**: _Adventures in Rust: A Basic 2D Game_ ](https://a5huynh.github.io/posts/2018/adventures-in-rust/ )
2019-03-10 13:10:50 +01:00
* [**Rust**: _Roguelike Tutorial in Rust + tcod_ ](https://tomassedovic.github.io/roguelike-tutorial/ )
2018-05-13 10:55:10 +02:00
#### Build your own `Git`
2018-05-17 23:42:18 +02:00
* [**Haskell**: _Reimplementing “git clone” in Haskell from the bottom up_ ](http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/ )
* [**JavaScript**: _Gitlet_ ](http://gitlet.maryrosecook.com/docs/gitlet.html )
2021-03-13 11:37:40 +01:00
* [**JavaScript**: _Build GIT - Learn GIT_ ](https://kushagra.dev/blog/build-git-learn-git/ )
2018-05-17 23:42:18 +02:00
* [**Python**: _Just enough of a Git client to create a repo, commit, and push itself to GitHub_ ](https://benhoyt.com/writings/pygit/ )
2019-03-15 06:39:30 +01:00
* [**Python**: _Write yourself a Git!_ ](https://wyag.thb.lt/ )
2020-10-11 13:27:30 +02:00
* [**Python**: _ugit: Learn Git Internals by Building Git Yourself_ ](https://www.leshenko.net/p/ugit/ )
2018-05-17 23:42:18 +02:00
* [**Ruby**: _Rebuilding Git in Ruby_ ](https://robots.thoughtbot.com/rebuilding-git-in-ruby )
2018-05-13 10:55:10 +02:00
2018-05-13 17:49:15 +02:00
#### Build your own `Network Stack`
2018-05-17 23:42:18 +02:00
2019-10-25 09:45:37 +02:00
* [**C**: _Beej's Guide to Network Programming_ ](http://beej.us/guide/bgnet/ )
2018-05-17 23:42:18 +02:00
* [**C**: _Let's code a TCP/IP stack_ ](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/ )
2023-05-08 22:11:22 +02:00
* [**C / Python**: _Build your own VPN/Virtual Switch_ ](https://github.com/peiyuanix/build-your-own-zerotier )
2018-05-17 23:42:18 +02:00
* [**Ruby**: _How to build a network stack in Ruby_ ](https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b )
2018-05-13 17:49:15 +02:00
2018-05-13 10:55:10 +02:00
#### Build your own `Neural Network`
2018-05-17 23:42:18 +02:00
* [**C#**: _Neural Network OCR_ ](https://www.codeproject.com/Articles/11285/Neural-Network-OCR )
2018-07-08 18:21:57 +02:00
* [**F#**: _Building Neural Networks in F#_ ](https://towardsdatascience.com/building-neural-networks-in-f-part-1-a2832ae972e6 )
2018-05-17 23:42:18 +02:00
* [**Go**: _Build a multilayer perceptron with Golang_ ](https://made2591.github.io/posts/neuralnetwork )
* [**Go**: _How to build a simple artificial neural network with Go_ ](https://sausheong.github.io/posts/how-to-build-a-simple-artificial-neural-network-with-go/ )
2020-04-06 00:37:40 +02:00
* [**Go**: _Building a Neural Net from Scratch in Go_ ](https://datadan.io/blog/neural-net-with-go )
2018-09-07 09:27:38 +02:00
* [**JavaScript / Java**: _Neural Networks - The Nature of Code_ ](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh ) [video]
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _Neural networks from scratch for JavaScript linguists (Part1 — The Perceptron)_ ](https://hackernoon.com/neural-networks-from-scratch-for-javascript-linguists-part1-the-perceptron-632a4d1fbad2 )
* [**Python**: _A Neural Network in 11 lines of Python_ ](https://iamtrask.github.io/2015/07/12/basic-python-network/ )
2019-03-11 18:19:42 +01:00
* [**Python**: _Implement a Neural Network from Scratch_ ](https://victorzhou.com/blog/intro-to-neural-networks/ )
2018-06-10 19:45:08 +02:00
* [**Python**: _Optical Character Recognition (OCR)_ ](http://aosabook.org/en/500L/optical-character-recognition-ocr.html )
2018-05-26 15:53:54 +02:00
* [**Python**: _Traffic signs classification with a convolutional network_ ](https://navoshta.com/traffic-signs-classification/ )
2018-06-10 19:45:08 +02:00
* [**Python**: _Generate Music using LSTM Neural Network in Keras_ ](https://towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5 )
2019-11-20 05:42:10 +01:00
* [**Python**: _An Introduction to Convolutional Neural Networks_ ](https://victorzhou.com/blog/intro-to-cnns-part-1/ )
2023-01-31 08:30:25 +01:00
* [**Python**: _Neural Networks: Zero to Hero_ ](https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ )
2018-05-13 10:55:10 +02:00
#### Build your own `Operating System`
2018-05-17 23:42:18 +02:00
* [**Assembly**: _Writing a Tiny x86 Bootloader_ ](http://joebergeron.io/posts/post_two.html )
2018-05-30 21:39:36 +02:00
* [**Assembly**: _Baking Pi – Operating Systems Development_ ](http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html )
2018-06-03 10:46:00 +02:00
* [**C**: _Building a software and hardware stack for a simple computer from scratch_ ](https://www.youtube.com/watch?v=ZjwvMcP3Nf0&list=PLU94OURih-CiP4WxKSMt3UcwMSDM3aTtX ) [video]
2018-05-17 23:42:18 +02:00
* [**C**: _Operating Systems: From 0 to 1_ ](https://tuhdo.github.io/os01/ )
* [**C**: _The little book about OS development_ ](https://littleosbook.github.io/ )
2018-11-16 23:07:18 +01:00
* [**C**: _Roll your own toy UNIX-clone OS_ ](http://jamesmolloy.co.uk/tutorial_html/ )
2018-05-18 11:43:49 +02:00
* [**C**: _Kernel 101 – Let’ s write a Kernel_ ](https://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel )
* [**C**: _Kernel 201 – Let’ s write a Kernel with keyboard and screen support_ ](https://arjunsreedharan.org/post/99370248137/kernel-201-lets-write-a-kernel-with-keyboard )
2018-05-17 23:42:18 +02:00
* [**C**: _Build a minimal multi-tasking kernel for ARM from scratch_ ](https://github.com/jserv/mini-arm-os )
* [**C**: _How to create an OS from scratch_ ](https://github.com/cfenollosa/os-tutorial )
* [**C**: _Malloc tutorial_ ](https://danluu.com/malloc-tutorial/ )
* [**C**: _Hack the virtual memory_ ](https://blog.holbertonschool.com/hack-the-virtual-memory-c-strings-proc/ )
2018-06-08 10:47:24 +02:00
* [**C**: _Learning operating system development using Linux kernel and Raspberry Pi_ ](https://github.com/s-matyukevich/raspberry-pi-os )
2018-12-27 11:52:16 +01:00
* [**C**: _Operating systems development for Dummies_ ](https://medium.com/@lduck11007/operating-systems-development-for-dummies-3d4d786e8ac )
2018-05-22 17:52:08 +02:00
* [**C++**: _Write your own Operating System_ ](https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M ) [video]
2018-05-17 23:42:18 +02:00
* [**C++**: _Writing a Bootloader_ ](http://3zanders.co.uk/2017/10/13/writing-a-bootloader/ )
2019-03-01 11:42:42 +01:00
* [**Rust**: _Writing an OS in Rust_ ](https://os.phil-opp.com/ )
2023-01-31 08:42:00 +01:00
* [**Rust**: _Add RISC-V Rust Operating System Tutorial_ ](https://osblog.stephenmarz.com/ )
2022-12-19 11:20:01 +01:00
* [**(any)**: Linux from scratch ](https://linuxfromscratch.org/lfs )
2018-05-13 10:55:10 +02:00
2018-05-16 19:32:13 +02:00
#### Build your own `Physics Engine`
2018-05-17 23:42:18 +02:00
* [**C**: _Video Game Physics Tutorial_ ](https://www.toptal.com/game/video-game-physics-part-i-an-introduction-to-rigid-body-dynamics )
2018-05-25 20:56:13 +02:00
* [**C++**: _Game physics series by Allen Chou_ ](http://allenchou.net/game-physics-series/ )
2018-05-17 23:42:18 +02:00
* [**C++**: _How to Create a Custom Physics Engine_ ](https://gamedevelopment.tutsplus.com/series/how-to-create-a-custom-physics-engine--gamedev-12715 )
* [**C++**: _3D Physics Engine Tutorial_ ](https://www.youtube.com/playlist?list=PLEETnX-uPtBXm1KEr_2zQ6K_0hoGH6JJ0 ) [video]
* [**JavaScript**: _How Physics Engines Work_ ](http://buildnewgames.com/gamephysics/ )
* [**JavaScript**: _Broad Phase Collision Detection Using Spatial Partitioning_ ](http://buildnewgames.com/broad-phase-collision-detection/ )
* [**JavaScript**: _Build a simple 2D physics engine for JavaScript games_ ](https://www.ibm.com/developerworks/library/wa-build2dphysicsengine/index.html )
2018-05-16 19:32:13 +02:00
2018-05-13 10:55:10 +02:00
#### Build your own `Programming Language`
2018-05-17 23:42:18 +02:00
2018-05-21 10:48:19 +02:00
* [**(any)**: _mal - Make a Lisp_ ](https://github.com/kanaka/mal#mal---make-a-lisp )
2018-12-27 11:49:08 +01:00
* [**Assembly**: _Jonesforth_ ](https://github.com/nornagon/jonesforth/blob/master/jonesforth.S )
2018-05-17 23:42:18 +02:00
* [**C**: _Baby's First Garbage Collector_ ](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/ )
* [**C**: _Build Your Own Lisp: Learn C and build your own programming language in 1000 lines of code_ ](http://www.buildyourownlisp.com/ )
* [**C**: _Writing a Simple Garbage Collector in C_ ](http://maplant.com/gc.html )
2019-02-20 03:12:23 +01:00
* [**C**: _C interpreter that interprets itself._ ](https://github.com/lotabout/write-a-C-interpreter )
2019-03-10 13:02:12 +01:00
* [**C**: _A C & x86 version of the "Let's Build a Compiler" by Jack Crenshaw_ ](https://github.com/lotabout/Let-s-build-a-compiler )
2020-06-18 18:37:09 +02:00
* [**C**: _A journey explaining how to build a compiler from scratch_ ](https://github.com/DoctorWkt/acwj )
2018-05-17 23:42:18 +02:00
* [**C++**: _Writing Your Own Toy Compiler Using Flex_ ](https://gnuu.org/2009/09/18/writing-your-own-toy-compiler/ )
* [**C++**: _How to Create a Compiler_ ](https://www.youtube.com/watch?v=eF9qWbuQLuw ) [video]
2019-08-31 09:28:51 +02:00
* [**C++**: _Kaleidoscope: Implementing a Language with LLVM_ ](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html )
2018-05-17 23:42:18 +02:00
* [**F#**: _Understanding Parser Combinators_ ](https://fsharpforfunandprofit.com/posts/understanding-parser-combinators/ )
2018-11-25 11:33:53 +01:00
* [**Elixir**: _Demystifying compilers by writing your own_ ](https://www.youtube.com/watch?v=zMJYoYwOCd4 ) [video]
2018-05-21 12:14:49 +02:00
* [**Go**: _The Super Tiny Compiler_ ](https://github.com/hazbo/the-super-tiny-compiler )
2018-05-17 23:42:18 +02:00
* [**Go**: _Lexical Scanning in Go_ ](https://www.youtube.com/watch?v=HxaD_trXwRE ) [video]
2020-02-10 13:28:54 +01:00
* [**Haskell**: _Let's Build a Compiler_ ](https://g-ford.github.io/cradle/ )
2018-05-17 23:42:18 +02:00
* [**Haskell**: _Write You a Haskell_ ](http://dev.stephendiehl.com/fun/ )
2018-06-08 10:54:41 +02:00
* [**Haskell**: _Write Yourself a Scheme in 48 Hours_ ](https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours )
2018-06-08 10:56:41 +02:00
* [**Haskell**: _Write You A Scheme_ ](https://www.wespiser.com/writings/wyas/home.html )
2018-05-17 23:42:18 +02:00
* [**Java**: _Crafting interpreters: A handbook for making programming languages_ ](http://www.craftinginterpreters.com/ )
2018-06-11 21:30:19 +02:00
* [**Java**: _Creating JVM Language_ ](http://jakubdziworski.github.io/categories.html#Enkel-ref )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _The Super Tiny Compiler_ ](https://github.com/jamiebuilds/the-super-tiny-compiler )
2018-06-03 10:09:40 +02:00
* [**JavaScript**: _The Super Tiny Interpreter_ ](https://github.com/keyanzhang/the-super-tiny-interpreter )
2018-07-24 11:42:23 +02:00
* [**JavaScript**: _Little Lisp interpreter_ ](https://maryrosecook.com/blog/post/little-lisp-interpreter )
2018-07-24 11:44:35 +02:00
* [**JavaScript**: _How to implement a programming language in JavaScript_ ](http://lisperator.net/pltut/ )
2023-02-02 10:19:31 +01:00
* [**JavaScript**: _Let’ s go write a Lisp_ ](https://idiocy.org/lets-go-write-a-lisp/part-1.html )
2018-05-17 23:42:18 +02:00
* [**OCaml**: _Writing a C Compiler_ ](https://norasandler.com/2017/11/29/Write-a-Compiler.html )
2018-08-29 08:41:10 +02:00
* [**OCaml**: _Writing a Lisp, the series_ ](https://bernsteinbear.com/blog/lisp/ )
2018-05-23 20:29:34 +02:00
* [**Pascal**: _Let's Build a Compiler_ ](https://compilers.iecc.com/crenshaw/ )
2018-05-17 23:42:18 +02:00
* [**Python**: _A Python Interpreter Written in Python_ ](http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html )
* [**Python**: _lisp.py: Make your own Lisp interpreter_ ](http://khamidou.com/compilers/lisp.py/ )
2018-05-20 10:29:28 +02:00
* [**Python**: _How to Write a Lisp Interpreter in Python_ ](http://norvig.com/lispy.html )
2018-05-30 21:09:45 +02:00
* [**Python**: _Let’ s Build A Simple Interpreter_ ](https://ruslanspivak.com/lsbasi-part1/ )
2018-07-19 01:23:08 +02:00
* [**Python**: _Make Your Own Simple Interpreted Programming Language_ ](https://www.youtube.com/watch?v=dj9CBS3ikGA&list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD&index=1 ) [video]
2023-05-22 12:50:58 +02:00
* [**Python**: _From Source Code To Machine Code: Build Your Own Compiler From Scratch_ ](https://build-your-own.org/compiler/ )
2018-05-17 23:42:18 +02:00
* [**Racket**: _Beautiful Racket: How to make your own programming languages with Racket_ ](https://beautifulracket.com/ )
* [**Ruby**: _A Compiler From Scratch_ ](https://www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch )
* [**Ruby**: _Markdown compiler from scratch in Ruby_ ](https://blog.beezwax.net/2017/07/07/writing-a-markdown-compiler/ )
2018-08-29 08:36:29 +02:00
* [**Rust**: _So You Want to Build a Language VM_ ](https://blog.subnetzero.io/post/building-language-vm-part-00/ )
2019-09-05 18:36:03 +02:00
* [**Rust**: _Learning Parser Combinators With Rust_ ](https://bodil.lol/parser-combinators/ )
2018-07-24 11:47:59 +02:00
* [**Swift**: _Building a LISP from scratch with Swift_ ](https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/ )
2019-10-07 13:34:24 +02:00
* [**TypeScript**: _Build your own WebAssembly Compiler_ ](https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html )
2018-05-13 10:55:10 +02:00
#### Build your own `Regex Engine`
2018-05-17 23:42:18 +02:00
* [**C**: _A Regular Expression Matcher_ ](https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html )
* [**C**: _Regular Expression Matching Can Be Simple And Fast_ ](https://swtch.com/~rsc/regexp/regexp1.html )
2023-10-07 10:59:10 +02:00
* [**Go**: _How to build a regex engine from scratch_ ](https://rhaeguard.github.io/posts/regex )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _Build a Regex Engine in Less than 40 Lines of Code_ ](https://nickdrane.com/build-your-own-regex/ )
2018-05-22 09:42:15 +02:00
* [**JavaScript**: _How to implement regular expressions in functional javascript using derivatives_ ](http://dpk.io/dregs/toydregs )
2022-02-13 18:56:49 +01:00
* [**JavaScript**: _Implementing a Regular Expression Engine_ ](https://deniskyashif.com/2019/02/17/implementing-a-regular-expression-engine/ )
2018-05-17 23:42:18 +02:00
* [**Perl**: _How Regexes Work_ ](https://perl.plover.com/Regex/article.html )
2023-02-27 18:29:53 +01:00
* [**Python**: _Build Your Own Regular Expression Engines: Backtracking, NFA, DFA_ ](https://build-your-own.org/b2a/r0_intro )
2018-05-17 23:42:18 +02:00
* [**Scala**: _No Magic: Regular Expressions_ ](https://rcoh.svbtle.com/no-magic-regular-expressions )
2018-05-13 10:55:10 +02:00
2018-05-17 14:47:49 +02:00
#### Build your own `Search Engine`
2018-05-17 23:42:18 +02:00
* [**CSS**: _A search engine in CSS_ ](https://stories.algolia.com/a-search-engine-in-css-b5ec4e902e97 )
* [**Python**: _Building a search engine using Redis and redis-py_ ](http://www.dr-josiah.com/2010/07/building-search-engine-using-redis-and.html )
* [**Python**: _Building a Vector Space Indexing Engine in Python_ ](https://boyter.org/2010/08/build-vector-space-search-engine-python/ )
* [**Python**: _Building A Python-Based Search Engine_ ](https://www.youtube.com/watch?v=cY7pE7vX6MU ) [video]
2018-06-04 11:23:15 +02:00
* [**Python**: _Making text search learn from feedback_ ](https://medium.com/filament-ai/making-text-search-learn-from-feedback-4fe210fd87b0 )
2018-06-18 14:55:29 +02:00
* [**Python**: _Finding Important Words in Text Using TF-IDF_ ](https://stevenloria.com/tf-idf/ )
2018-05-17 14:47:49 +02:00
2018-05-13 10:55:10 +02:00
#### Build your own `Shell`
2018-05-17 23:42:18 +02:00
* [**C**: _Tutorial - Write a Shell in C_ ](https://brennan.io/2015/01/16/write-a-shell-in-c/ )
* [**C**: _Let's build a shell!_ ](https://github.com/kamalmarhubi/shell-workshop )
2018-05-30 21:42:09 +02:00
* [**C**: _Writing a UNIX Shell_ ](https://indradhanush.github.io/blog/writing-a-unix-shell-part-1/ )
2018-06-04 16:06:34 +02:00
* [**C**: _Build Your Own Shell_ ](https://github.com/tokenrove/build-your-own-shell )
2023-05-20 19:31:31 +02:00
* [**C**: Write a shell in C ](https://danishpraka.sh/posts/write-a-shell/ )
2018-07-07 16:59:37 +02:00
* [**Go**: _Writing a simple shell in Go_ ](https://sj14.gitlab.io/post/2018-07-01-go-unix-shell/ )
2018-11-19 12:15:15 +01:00
* [**Rust**: _Build Your Own Shell using Rust_ ](https://www.joshmcguigan.com/blog/build-your-own-shell-rust/ )
2018-05-13 10:55:10 +02:00
#### Build your own `Template Engine`
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _JavaScript template engine in just 20 lines_ ](http://krasimirtsonev.com/blog/article/Javascript-template-engine-in-just-20-line )
2018-05-23 20:53:52 +02:00
* [**JavaScript**: _Understanding JavaScript Micro-Templating_ ](https://medium.com/wdstack/understanding-javascript-micro-templating-f37a37b3b40e )
2018-05-17 23:42:18 +02:00
* [**Python**: _Approach: Building a toy template engine in Python_ ](http://alexmic.net/building-a-template-engine/ )
* [**Python**: _A Template Engine_ ](http://aosabook.org/en/500L/a-template-engine.html )
* [**Ruby**: _How to write a template engine in less than 30 lines of code_ ](http://bits.citrusbyte.com/how-to-write-a-template-library/ )
2018-05-13 10:55:10 +02:00
2018-05-24 07:47:51 +02:00
#### Build your own `Text Editor`
* [**C**: _Build Your Own Text Editor_ ](https://viewsourcecode.org/snaptoken/kilo/ )
* [**C++**: _Designing a Simple Text Editor_ ](http://www.fltk.org/doc-1.1/editor.html )
2018-05-24 11:19:33 +02:00
* [**Python**: _Python Tutorial: Make Your Own Text Editor_ ](https://www.youtube.com/watch?v=xqDonHEYPgA ) [video]
2018-06-14 19:44:00 +02:00
* [**Python**: _Create a Simple Python Text Editor!_ ](http://www.instructables.com/id/Create-a-Simple-Python-Text-Editor/ )
2018-10-05 23:30:44 +02:00
* [**Ruby**: _Build a Collaborative Text Editor Using Rails_ ](https://blog.aha.io/text-editor/ )
2023-01-20 02:31:56 +01:00
* [**Rust**: _Hecto: Build your own text editor in Rust_ ](https://www.flenker.blog/hecto/ )
2018-05-24 07:47:51 +02:00
2018-06-04 16:39:42 +02:00
#### Build your own `Visual Recognition System`
2018-06-04 16:38:58 +02:00
* [**Python**: _Developing a License Plate Recognition System with Machine Learning in Python_ ](https://blog.devcenter.co/developing-a-license-plate-recognition-system-with-machine-learning-in-python-787833569ccd )
* [**Python**: _Building a Facial Recognition Pipeline with Deep Learning in Tensorflow_ ](https://hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8 )
2018-07-07 18:45:38 +02:00
#### Build your own `Voxel Engine`
2018-07-07 18:47:15 +02:00
* [**C++**: _Let's Make a Voxel Engine_ ](https://sites.google.com/site/letsmakeavoxelengine/home )
2018-07-07 18:45:38 +02:00
* [**Java**: _Java Voxel Engine Tutorial_ ](https://www.youtube.com/watch?v=QZ4Vk2PkPZk&list=PL80Zqpd23vJfyWQi-8FKDbeO_ZQamLKJL ) [video]
2022-11-10 17:56:48 +01:00
#### Build your own `Web Browser`
* [**Rust**: _Let's build a browser engine_ ](https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html )
* [**Python**: _Browser Engineering_ ](https://browser.engineering )
2018-05-13 10:55:10 +02:00
#### Build your own `Web Server`
2018-05-17 23:42:18 +02:00
* [**C#**: _Writing a Web Server from Scratch_ ](https://www.codeproject.com/Articles/859108/Writing-a-Web-Server-from-Scratch )
* [**Node.js**: _Let's code a web server from scratch with NodeJS Streams_ ](https://www.codementor.io/ziad-saab/let-s-code-a-web-server-from-scratch-with-nodejs-streams-h4uc9utji )
2018-06-18 14:30:51 +02:00
* [**Node.js**: _lets-build-express_ ](https://github.com/antoaravinth/lets-build-express )
2018-05-17 23:42:18 +02:00
* [**PHP**: _Writing a webserver in pure PHP_ ](http://station.clancats.com/writing-a-webserver-in-pure-php/ )
* [**Python**: _A Simple Web Server_ ](http://aosabook.org/en/500L/a-simple-web-server.html )
* [**Python**: _Let’ s Build A Web Server._ ](https://ruslanspivak.com/lsbaws-part1/ )
* [**Python**: _Web application from scratch_ ](https://defn.io/2018/02/25/web-app-from-scratch-01/ )
* [**Python**: _Building a basic HTTP Server from scratch in Python_ ](http://joaoventura.net/blog/2017/python-webserver/ )
2018-10-12 04:12:24 +02:00
* [**Python**: _Implementing a RESTful Web API with Python & Flask_ ](http://blog.luisrei.com/articles/flaskrest.html )
2018-05-17 23:42:18 +02:00
* [**Ruby**: _Building a simple websockets server from scratch in Ruby_ ](http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/ )
2018-05-13 10:55:10 +02:00
#### Uncategorized
2018-05-17 23:42:18 +02:00
* [**(any)**: _From NAND to Tetris: Building a Modern Computer From First Principles_ ](http://nand2tetris.org/ )
* [**Alloy**: _The Same-Origin Policy_ ](http://aosabook.org/en/500L/the-same-origin-policy.html )
* [**C**: _How to Write a Video Player in Less Than 1000 Lines_ ](http://dranger.com/ffmpeg/ffmpeg.html )
* [**C**: _Learn how to write a hash table in C_ ](https://github.com/jamesroutley/write-a-hash-table )
* [**C**: _The very basics of a terminal emulator_ ](https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html )
2018-06-21 23:07:25 +02:00
* [**C**: _Write a System Call_ ](https://brennan.io/2016/11/14/kernel-dev-ep3/ )
2019-03-10 12:58:16 +01:00
* [**C**: _Sol - An MQTT broker from scratch_ ](https://codepr.github.io/posts/sol-mqtt-broker )
2021-06-28 07:42:47 +02:00
* [**C++**: _Build your own VR headset for $200_ ](https://github.com/relativty/Relativ )
2018-05-17 23:42:18 +02:00
* [**C++**: _How X Window Managers work and how to write one_ ](https://seasonofcode.com/posts/how-x-window-managers-work-and-how-to-write-one-part-i.html )
* [**C++**: _Writing a Linux Debugger_ ](https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ )
* [**C++**: _How a 64k intro is made_ ](http://www.lofibucket.com/articles/64k_intro.html )
2023-03-07 08:02:37 +01:00
* [**C++**: _Make your own Game Engine_ ](https://www.youtube.com/playlist?list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT )
2018-05-17 23:42:18 +02:00
* [**C#**: _C# Networking: Create a TCP chater server, TCP games, UDP Pong and more_ ](https://16bpp.net/tutorials/csharp-networking )
2018-08-29 08:52:49 +02:00
* [**C#**: _Loading and rendering 3D skeletal animations from scratch in C# and GLSL_ ](https://www.seanjoflynn.com/research/skeletal-animation.html )
2018-06-22 23:13:26 +02:00
* [**Clojure**: _Building a spell-checker_ ](https://bernhardwenzel.com/articles/clojure-spellchecker/ )
2022-11-29 15:04:38 +01:00
* [**Go**: _Build A Simple Terminal Emulator In 100 Lines of Golang_ ](https://ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/ )
2023-05-28 15:56:01 +02:00
* [**Go**: _Let's Create a Simple Load Balancer_ ](https://kasvith.me/posts/lets-create-a-simple-lb-go/ )
2022-12-03 05:52:58 +01:00
* [**Go**: _Video Encoding from Scratch_ ](https://github.com/kevmo314/codec-from-scratch )
2018-05-30 21:06:42 +02:00
* [**Java**: _How to Build an Android Reddit App_ ](https://www.youtube.com/playlist?list=PLgCYzUzKIBE9HUJU-upNvl3TRVAo9W47y ) [video]
2018-05-29 00:01:29 +02:00
* [**JavaScript**: _Build Your Own Module Bundler - Minipack_ ](https://github.com/ronami/minipack )
2018-05-17 23:42:18 +02:00
* [**JavaScript**: _Learn JavaScript Promises by Building a Promise from Scratch_ ](https://levelup.gitconnected.com/understand-javascript-promises-by-building-a-promise-from-scratch-84c0fd855720 )
* [**JavaScript**: _Implementing promises from scratch (TDD way)_ ](https://www.mauriciopoppe.com/notes/computer-science/computation/promises/ )
2018-06-21 23:14:01 +02:00
* [**JavaScript**: _Implement your own — call(), apply() and bind() method in JavaScript_ ](https://blog.usejournal.com/implement-your-own-call-apply-and-bind-method-in-javascript-42cc85dba1b )
2018-06-29 12:24:04 +02:00
* [**JavaScript**: _JavaScript Algorithms and Data Structures_ ](https://github.com/trekhleb/javascript-algorithms )
2018-10-12 10:46:40 +02:00
* [**JavaScript**: _Build a ride hailing app with React Native_ ](https://pusher.com/tutorials/ride-hailing-react-native )
2023-05-09 03:18:18 +02:00
* [**JavaScript**: _Build Your Own AdBlocker in (Literally) 10 Minutes_ ](https://levelup.gitconnected.com/building-your-own-adblocker-in-literally-10-minutes-1eec093b04cd )
2019-02-04 04:59:15 +01:00
* [**Kotlin**: _Build Your Own Cache_ ](https://github.com/kezhenxu94/cache-lite )
2023-01-30 07:38:17 +01:00
* [**Lua**: Building a CDN from Scratch to Learn about CDN ](https://github.com/leandromoreira/cdn-up-and-running )
2018-09-09 12:32:12 +02:00
* [**Nim**: _Writing a Redis Protocol Parser_ ](https://xmonader.github.io/nimdays/day12_resp.html )
* [**Nim**: _Writing a Build system_ ](https://xmonader.github.io/nimdays/day11_buildsystem.html )
* [**Nim**: _Writing a MiniTest Framework_ ](https://xmonader.github.io/nimdays/day08_minitest.html )
* [**Nim**: _Writing a DMIDecode Parser_ ](https://xmonader.github.io/nimdays/day01_dmidecode.html )
* [**Nim**: _Writing a INI Parser_ ](https://xmonader.github.io/nimdays/day05_iniparser.html )
* [**Nim**: _Writing a Link Checker_ ](https://xmonader.github.io/nimdays/day04_asynclinkschecker.html )
* [**Nim**: _Writing a URL Shortening Service_ ](https://xmonader.github.io/nimdays/day07_shorturl.html )
2021-03-13 11:35:49 +01:00
* [**Node.js**: _Build a static site generator in 40 lines with Node.js_ ](https://www.webdevdrops.com/en/build-static-site-generator-nodejs-8969ebe34b22/ )
2018-09-07 09:32:40 +02:00
* [**Node.js**: _Building A Simple Single Sign On(SSO) Server And Solution From Scratch In Node.js._ ](https://codeburst.io/building-a-simple-single-sign-on-sso-server-and-solution-from-scratch-in-node-js-ea6ee5fdf340 )
2018-10-13 05:35:31 +02:00
* [**Node.js**: _How to create a real-world Node CLI app with Node_ ](https://medium.freecodecamp.org/how-to-create-a-real-world-node-cli-app-with-node-391b727bbed3 )
2022-09-28 15:08:42 +02:00
* [**Node.js**: _Build a DNS Server in Node.js_ ](https://engineerhead.github.io/dns-server/ )
2018-06-01 09:49:50 +02:00
* [**PHP**: _Write your own MVC from scratch in PHP_ ](https://chaitya62.github.io/2018/04/29/Writing-your-own-MVC-from-Scratch-in-PHP.html )
2018-06-29 12:01:20 +02:00
* [**PHP**: _Make your own blog_ ](https://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog )
2018-10-05 12:00:13 +02:00
* [**PHP**: _Modern PHP Without a Framework_ ](https://kevinsmith.io/modern-php-without-a-framework )
2022-06-05 01:30:44 +02:00
* [**PHP**: _Code a Web Search Engine in PHP_ ](https://boyter.org/2013/01/code-for-a-search-engine-in-php-part-1/ )
2018-08-18 02:33:17 +02:00
* [**Python**: _Build a Deep Learning Library_ ](https://www.youtube.com/watch?v=o64FV-ez6Gw ) [video]
2018-05-17 23:42:18 +02:00
* [**Python**: _How to Build a Kick-Ass Mobile Document Scanner in Just 5 Minutes_ ](https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/ )
* [**Python**: _Continuous Integration System_ ](http://aosabook.org/en/500L/a-continuous-integration-system.html )
* [**Python**: _Recommender Systems in Python: Beginner Tutorial_ ](https://www.datacamp.com/community/tutorials/recommender-systems-python )
* [**Python**: _Write SMS-spam detector with Scikit-learn_ ](https://medium.com/@kopilov.vlad/detect-sms-spam-in-kaggle-with-scikit-learn-5f6afa7a3ca2 )
* [**Python**: _A Simple Content-Based Recommendation Engine in Python_ ](http://blog.untrod.com/2016/06/simple-similar-products-recommendation-engine-in-python.html )
2018-05-30 21:48:43 +02:00
* [**Python**: _Stock Market Predictions with LSTM in Python_ ](https://www.datacamp.com/community/tutorials/lstm-python-stock-market )
2018-06-29 12:05:57 +02:00
* [**Python**: _Build your own error-correction fountain code with Luby Transform Codes_ ](https://franpapers.com/en/algorithmic/2018-introduction-to-fountain-codes-lt-codes-with-python/ )
2023-07-12 04:42:29 +02:00
* [**Python**: _Building a simple Generative Adversarial Network (GAN) using Tensorflow_ ](https://blog.paperspace.com/implementing-gans-in-tensorflow/ )
2018-08-29 08:26:34 +02:00
* [**Python**: _Learn ML Algorithms by coding: Decision Trees_ ](https://lethalbrains.com/learn-ml-algorithms-by-coding-decision-trees-439ac503c9a4 )
2018-08-20 13:50:39 +02:00
* [**Python**: _JSON Decoding Algorithm_ ](https://github.com/cheery/json-algorithm )
2022-11-27 07:55:46 +01:00
* [**Python**: _Build your own Git plugin with python_ ](https://www.joshburns.xyz/posts/byo_git_plugin_tutorial )
2018-05-17 23:42:18 +02:00
* [**Ruby**: _A Pedometer in the Real World_ ](http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html )
2018-05-19 10:07:33 +02:00
* [**Ruby**: _Creating a Linux Desktop application with Ruby_ ](https://iridakos.com/tutorials/2018/01/25/creating-a-gtk-todo-application-with-ruby )
2018-05-17 23:42:18 +02:00
* [**Rust**: _Building a DNS server in Rust_ ](https://github.com/EmilHernvall/dnsguide/blob/master/README.md )
2018-11-16 23:15:10 +01:00
* [**Rust**: _Writing Scalable Chat Service from Scratch_ ](https://nbaksalyar.github.io/2015/07/10/writing-chat-in-rust.html )
2023-01-31 08:27:58 +01:00
* [**Rust**: _WebGL + Rust: Basic Water Tutorial_ ](https://www.chinedufn.com/3d-webgl-basic-water-tutorial/ )
2018-08-29 08:38:36 +02:00
* [**TypeScript**: _Tiny Package Manager: Learns how npm or Yarn works_ ](https://github.com/g-plane/tiny-package-manager )
2018-06-01 09:49:50 +02:00
2022-05-16 01:42:58 +02:00
## Contribute
2022-05-16 02:27:17 +02:00
* Submissions welcome, just send a PR, or [create an issue ](https://github.com/codecrafters-io/build-your-own-x/issues/new )
2022-05-16 01:10:39 +02:00
* Help us review [pending submissions ](https://github.com/codecrafters-io/build-your-own-x/issues ) by leaving comments and "reactions"
2018-05-13 11:24:39 +02:00
2022-05-16 01:15:35 +02:00
## Origins & License
2018-05-13 11:24:39 +02:00
[![CC0 ](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg )](https://creativecommons.org/publicdomain/zero/1.0/)
2022-05-16 01:16:25 +02:00
This repository is the work of [many contributors ](https://github.com/codecrafters-io/build-your-own-x/graphs/contributors ). It was started by [Daniel Stefanovic ](https://github.com/danistefanovic ), and is now maintained by [CodeCrafters, Inc. ](https://codecrafters.io ) To the extent possible under law, [CodeCrafters, Inc. ](https://codecrafters.io ) has waived all copyright and related or neighboring rights to this work.