├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Projects-from-Scratch 2 | A curated list for projects building from scratch. 3 | 4 | ## Motivation 5 | Thanks to this [thread](https://news.ycombinator.com/item?id=13660086) in HN. 6 | 7 | ## Topics 8 | 9 | * Compilers and Interpreters 10 | * [Build You Own Lisp](http://www.buildyourownlisp.com/), Mr Daniel Holden 11 | * [Crafting Interpreters](http://www.craftinginterpreters.com/), Bob Nystrom 12 | * [A Retargetable C Compiler: Design and Implementation](https://www.amazon.com/Retargetable-Compiler-Design-Implementation/dp/0805316701), David R. Hanson 13 | * [Compiler Construction Using Java, JavaCC, and Yacc](https://www.amazon.com/Compiler-Construction-Using-Java-JavaCC/dp/0470949597), Anthony J. Dos Reis 14 | * [Writing An Interpreter In Go](https://interpreterbook.com/), Thorsten Ball 15 | * [Write Yourself a Scheme in 48 Hours](https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours) 16 | * [Let's Build a Compiler](http://compilers.iecc.com/crenshaw/), Jack Crenshaw 17 | * [Modern Compiler Implementation](https://www.cs.princeton.edu/~appel/modern/), Andrew Appel 18 | * [Exploring Programming Language Architecture in Perl](http://www.billhails.net/Book/front.html), Bill Hails 19 | * [compiler construction and Scheme books](http://t3x.org/index.html), Nils M Holm 20 | * [The Art of the Metaobject Protocol](https://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczales/dp/0262610744), Daniel G. Bobrow and Gregor Kiczales 21 | * [Writing Compilers and Interpreters: A Software Engineering Approach](https://www.amazon.com/Writing-Compilers-Interpreters-Software-Engineering/dp/0470177071), Ronald Mak 22 | * [Building an Optimizing Compiler](https://www.amazon.com/Building-Optimizing-Compiler-Bob-Morgan/dp/155558179X), Bob Morgan 23 | * [Implementing Lisp in Python](http://fogus.me/fun/lithp/), Michael Fogus 24 | * [Let’s Build A Simple Interpreter](https://ruslanspivak.com/lsbasi-part1/), Ruslan Spivak 25 | 26 | * Distributed Systems 27 | * [Distributed Systems for System Architects](http://www.springer.com/us/book/9780792372660), Paulo Veríssimo and Luís Rodrigues 28 | 29 | * Electronics 30 | * [Make: Analog Synthesizers: Make Electronic Sounds the Synth-DIY Way](https://www.amazon.com/Make-Analog-Synthesizers-Electronic-Synth-DIY/dp/1449345220), Ray Wilson 31 | 32 | * Games and graphics 33 | * [Realistic Ray Tracing](https://www.amazon.com/Realistic-Tracing-Second-Peter-Shirley/dp/1568814615), Peter Shirley 34 | * [Creating Interactive Fiction with Inform 7](http://inform7.textories.com/), Aaron A. Reed 35 | * [Handmade Hero](https://handmadehero.org/), Casey Muratori 36 | * [Build Your Own Flight Sim in C++: Programming a 3d Flight Simulator Using Oop](https://www.amazon.com/Build-Your-Own-Flight-Sim/dp/1571690220), Michael Radtke 37 | * [Flights of Fantasy: Programming 3d Video Games in C++/Book and Disk](https://www.amazon.com/Flights-Fantasy-Programming-Video-Games/dp/1878739182/), Christopher Lampton 38 | * [Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization](https://www.amazon.com/Tricks-Programming-Gurus-Advanced-Graphics-Rasterization/dp/0672318350), André LaMothe 39 | * [Radiosity: A Programmer's Perspective](http://www.helios32.com/resources.htm), Ian Ashdown 40 | * [Game Scripting Mastery](https://books.google.ca/books/about/Game_Scripting_Mastery.html?id=q5jdl_LLreMC), Alex Varanese 41 | * [Developing Games With Ruby](https://leanpub.com/developing-games-with-ruby/read), Tomas Varaneckas 42 | * [How to Make an RPG](https://howtomakeanrpg.com/), Daniel Schuller 43 | * [Programming an RTS Game with Direct3D](https://books.google.com.com/books/about/Programming_an_RTS_Game_with_Direct3D.html?id=jVkmAQAACAAJ&redir_esc=y), Carl Granberg 44 | * [How to Make a Game Like Candy Crush](https://www.raywenderlich.com/66877/how-to-make-a-game-like-candy-crush-part-1), Ray Wenderlich 45 | * [3D Game Engine Architecture: Engineering Real-Time Applications with Wild Magic](https://www.amazon.com/Game-Engine-Architecture-Engineering-Applications/dp/012229064X), David H. Eberly 46 | 47 | * Mobile Apps 48 | * [Learning Swift Building Apps for OS X and iOS](http://shop.oreilly.com/product/0636920045946.do), Paris Buttfield-Addison, Jon Manning, Tim Nugent 49 | 50 | * Networking 51 | * [Unix Network Programming, Volume 1: The Sockets Networking API](https://www.amazon.com/Unix-Network-Programming-Sockets-Networking/dp/0131411551), W. Richard Stevens 52 | * [Let’s Build A Web Server](https://ruslanspivak.com/lsbaws-part1/), Ruslan Spivak 53 | 54 | * Reverse Engineering 55 | * [Hacking the Xbox](http://hackingthexbox.com/), Andrew 'bunnie' Huang 56 | 57 | * Systems and utilities 58 | * [Code: The Hidden Language of Computer Hardware and Software](http://www.charlespetzold.com/code/), Charles Petzold 59 | * [The Elements of Computing Systems](http://www.nand2tetris.org/), Noam Nisan and Shimon Schocken 60 | * [Linux From Scratch](http://www.linuxfromscratch.org/) 61 | * [Peter Norton's Assembly Language Book for the IBM PC](https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/dp/0136619010), Peter Norton 62 | * [gitlet](https://github.com/maryrosecook/gitlet), Mary Rose Cook 63 | * [Redo implementation in Haskell](https://github.com/jekor/redo), Chris Forno 64 | * [The Unix Programming Environment](https://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X), Brian W. Kernighan 65 | * [Programming from the Ground Up](https://www.amazon.com/Programming-Ground-Up-Jonathan-Bartlett/dp/0975283847), Jonathan Bartlett 66 | * [Operating Systems Design and Implementation (3rd Edition)](https://www.amazon.com/Operating-Systems-Design-Implementation-3rd/dp/0131429388), Andrew S. Tanenbaum 67 | * [Type and Learn C++](https://www.amazon.co.uk/Type-Learn-learn-programming/dp/1568843100), Martin L. Rinehart 68 | * [The Craft of Text Editing](https://www.finseth.com/craft/), Craig A. Finseth 69 | * [Linux Application Development](http://www.danlj.org/lad/), Michael K. Johnson and Erik W. Troan 70 | 71 | * Web 72 | * [Ruby on Rails Tutorial](https://www.railstutorial.org/), Michael Hartl 73 | * [Web Development with Go](https://www.usegolang.com), Jonathan Calhoun 74 | * [Flask Web Development](https://flaskbook.com/), Miguel Grinberg 75 | * [Test-Driven Development with Python](http://www.obeythetestinggoat.com/), Harry J.W. Percival 76 | * [Django Unleashed](https://django-unleashed.com/), Andrew Pinkham 77 | * [Eloquent Javascript](http://eloquentjavascript.net/), Marijn Haverbeke 78 | * [Webapps in Go](https://github.com/thewhitetulip/web-dev-golang-anti-textbook/), Suraj Patil 79 | * [Programming Phoenix Productive |> Reliable |> Fast](https://pragprog.com/book/phoenix/programming-phoenix), Chris McCord, Bruce Tate, and José Valim 80 | * [F# Applied](http://products.tamizhvendan.in/fsharp-applied/), Tamizhvendan S 81 | * [Build Your Own AngularJS](https://teropa.info/build-your-own-angular/), Tero Parviainen 82 | * [Rebuilding Rails](http://rebuilding-rails.com/), Noah Gibbs 83 | * [Elixir in Action](https://www.amazon.com/Elixir-Action-scaron-Juri-cacute/dp/161729201X), Saša Jurić 84 | * [SurviveJS - Webpack](https://survivejs.com/), Juho Vepsäläinen 85 | * [Ember 2 Tutorial](http://yoember.com/), Zoltan 86 | * [Erlang and OTP in Action](https://www.manning.com/books/erlang-and-otp-in-action), Martin Logan, Eric Merritt, and Richard Carlsson 87 | * [Learn to Code HTML & CSS](http://learn.shayhowe.com/html-css/), Shay Howe 88 | * [Robin Wieruch](https://github.com/rwieruch/the-road-to-learn-react), Robin Wieruch 89 | * [Learning Flask Framework](https://www.packtpub.com/web-development/learning-flask-framework), Matt Copperwaite, Charles Leifer 90 | * [MEAN Web Development](https://www.amazon.de/MEAN-Web-Development-Amos-Haviv/dp/1783983280), Amos Q. Haviv 91 | * [Django's official tutorial](https://docs.djangoproject.com/en/1.10/intro/tutorial01/), Django Software Foundation 92 | * [Discover Meteor](https://www.discovermeteor.com/), Tom Coleman and Sacha Greif 93 | * [Professional Java for Web Applications](https://www.amazon.com/Professional-Java-Applications-Nicholas-Williams/dp/1118656466), Nicholas S. Williams 94 | * [Serverless Single Page Apps](https://pragprog.com/book/brapps/serverless-single-page-apps), Ben Rady 95 | * [PHP and MySQL by Example](https://www.amazon.com/PHP-MySQL-Example-Ellie-Quigley/dp/0131875086), Ellie Quigley and Marko Gargenta 96 | * [Flexible Rails](https://www.manning.com/books/flexible-rails), Peter Armstrong 97 | * [Tango with Django](http://www.tangowithdjango.com/), Leif Azzopardi 98 | * [Learning Flex 4: Getting Up to Speed with Rich Internet Application Design and Development](https://www.amazon.com/d/0596805632), Alaric Cole and Elijah Robison 99 | * [Bandit Algorithms for Website Optimization: Developing, Deploying, and Debugging](https://www.amazon.com/Bandit-Algorithms-Website-Optimization-Developing/dp/1449341330), John Myles White 100 | 101 | * Mics 102 | * [Practical Common Lisp](http://www.gigamonkeys.com/book/), Peter Seibel 103 | * [The Art of Monitoring](https://www.artofmonitoring.com/), James Turnbull 104 | * [The Little Schemer](https://mitpress.mit.edu/books/little-schemer), Daniel P. Friedman and Matthias Felleisen 105 | * [The Reasoned Schemer](https://mitpress.mit.edu/books/reasoned-schemer), Daniel P. Friedman, William E. Byrd and Oleg Kiselyov 106 | * [Nim in Action](https://www.manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81), Dominik Picheta 107 | * [C++ Design Patterns and Derivatives Pricing](https://www.amazon.com/Patterns-Derivatives-Pricing-Mathematics-Finance/dp/0521721628), M. S. Joshi 108 | * [Take Off With Elixir](https://bigmachine.io/products/take-off-with-elixir/), Rob Conery 109 | * [Big Nerd Ranch books](https://www.bignerdranch.com/books/) 110 | * [Automate the boring stuff](https://automatetheboringstuff.com/), Al Sweigart 111 | * [Think Stats 2e](http://greenteapress.com/wp/think-stats-2e/), Allen B. Downey 112 | * [The AWK Programming Language](https://www.amazon.com/AWK-Programming-Language-Alfred-Aho/dp/020107981X), Alfred V. Aho, Brian W. Kernighan and Peter J. Weinberger 113 | 114 | ## To do 115 | Database and Cryptographics 116 | 117 | ## Contributions 118 | Pull requests and Issues are welcomed! 119 | 120 | ## License 121 | MIT 122 | --------------------------------------------------------------------------------