Difference between revision 1 and current revision
No diff available.http://gorban.org/post/32873465932/software-architecture-cheat-sheet
---
https://news.ycombinator.com/item?id=16591918
" Ask HN: “Write your own” or “Build your own” software projects 435 points by n_t 15 hours ago
flag | hide | past | web | favorite | 77 comments |
I am looking for writings/tutorials/videos which describe a specific technology or feature by implementing them, ideally in no more than few thousands lines of code (and not just 10-20 line code snippets). Idea is to teach about underlying technology by a hands-on project, which is not overwhelming like trying to implement full-feature game engine and yet captures the essence of technology. Some examples are -
I'm sure there are great such projects/tutorials in domains like networking, filesystem, databases, compiler, web design, messaging, game design, fintech, etc. If you have come across such writings/projects, kindly share.
tarmstrong 11 hours ago [-]
"500 Lines or Less" is an entire book of articles just like this. Each chapter guides you through a small (500 loc or less) implementation of a common component (eg a web server). http://aosabook.org/en/index.html
reply
e12e 8 hours ago [-]
Came here to say this. Also; the other books in the series are interesting.
reply
e12e 8 hours ago [-]
On a related note, I just became aware of hitch, 2nd generation stud(?) - a real-world, modern, high performance proxy server:
reply
teej 6 hours ago [-]
This is the first generation stud project - https://github.com/bumptech/stud
reply
herbstein 13 hours ago [-]
It's still very early days, but Bitwise is interesting (https://github.com/pervognsen/bitwise)
There's also Handmade Hero (https://handmadehero.org/)
The Raytracing books by Peter Shirley are also very interesting, starting with "Raytracing in one weekend" (https://www.amazon.com/Ray-Tracing-Weekend-Minibooks-Book-eb...)
And lastly there's Crafting Interpreters (http://www.craftinginterpreters.com/)
reply "
badosu 10 hours ago [-]
I've programmed my own simple synthesizer [1] by following along "The Audio Programming Book" [0].
It gives a concise explanation for the techniques and theories for signal processing while showing practical code examples.
[0]: https://mitpress.mit.edu/books/audio-programming-book
[1]: https://github.com/badosu/sine_synth.lv2
reply
n_t 10 hours ago [-]
This looks like much more involved and longer project. But still I'll get your book, looks very interesting :)
reply
k2052 10 hours ago [-]
Build Your Own React https://github.com/hexacta/didact
Create Your Own Programming Language http://createyourproglang.com/
Build Your Own Sinatra: https://getgood.at/build-your-own/sinatra (disclaimer: I'm the author of this)
Vanilla JS series https://javascript30.com/
Super Tiny Compiler https://github.com/jamiebuilds/the-super-tiny-compiler
reply
acemarke 11 hours ago [-]
I've got a bunch of "Build a mini React" [0] and "Build a mini Redux" [1] articles referenced in my React/Redux links list. I particularly recommend the "Didact: a DIY guide to build your own React" post series [2] and "Build Yourself a Redux" [3].
[3] https://zapier.com/engineering/how-to-build-redux/
reply
otras 14 hours ago [-]
I worked through most of this tutorial on building a simple text editor in C and greatly enjoyed it. Highly recommend it!
https://viewsourcecode.org/snaptoken/kilo/
reply
_sdegutis 7 hours ago [-]
Not just a basic one either, it had syntax highlighting! I always thought that was a pretty involved and complex feature, but it's simplified and demystified here.
reply
n_t 14 hours ago [-]
Good one!
reply
pootsbook 12 hours ago [-]
This describes the purpose of the (paid) resource available at “The Great Code Club” [1].
Marc-André Cournoyer has put together several different projects: - 2D/3D Game - Database Engine - Virtual Machine - Backend + Frontend Framework - Neural Network - Language - Server - Real-Time Web Engine
Full Disclosure: I am a happy customer of Marc Andre’s “Owning Rails” [2] workshop. No other affiliation.
[1] http://www.greatcodeclub.com [2] http://owningrails.com
reply
n_t 10 hours ago [-]
Very nice! These days think of something and someone somewhere has not just thought about it already but also making money out of it :)
reply
jventura 6 hours ago [-]
Lots of good stuff already in the comments! Here are some examples/tutorials I wrote on my blog:
reply
doughj3 11 hours ago [-]
The "Getting Started with Redux" course on egghead.io, from Dan Abramov, developer of Redux, basically has you write Redux from scratch to learn how it works:
https://egghead.io/courses/getting-started-with-redux
reply
perlgeek 12 hours ago [-]
"Let's Build a Compiler" by Crenshaw: https://compilers.iecc.com/crenshaw/
It's an old classic, using somewhat outdated technologies, but there are more moderns versions floating around, for example a C + x86 one: https://github.com/lotabout/Let-s-build-a-compiler
reply
jonjacky 7 hours ago [-]
Here is a Javascript program that implements the basics of the git version control system. It is a literate program with a prose explanation in side-by-side format:
http://gitlet.maryrosecook.com/docs/gitlet.html
Here is another side-by-side example. It is a Python program that implements a very simple interpreter for the Lisp programming language.
http://khamidou.com/compilers/lisp.py/
reply
runevault 13 hours ago [-]
MAL (Make a Lisp) is a good one around building a lisp.
Lots of examples across 72 languages.
reply
zaarn 12 hours ago [-]
I recommend the interpreter book [1], which isn't entirely free of charge however.
On the other hand, it was enough to get me off the ground for my lexer and write a parser that wasn't entirely dumb.
reply
misternugget 11 hours ago [-]
As the author of the mentioned book I just want to add that I specifically wrote it because I'm also a huge fan of the technical writings the author is looking for: from the ground up, all code shown, no toys and shortcuts, capturing the essence in a few thousand lines.
And just FYI, the interpreter we build in the book ends up with ~3900 lines, including the full test suite.
reply
---