notes-computer-programming-programmingLinks

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:

https://hitch-tls.org/

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].

[0] https://github.com/markerikson/react-redux-links/blob/master/react-implementation.md#miniature-react-implementations

[1] https://github.com/markerikson/react-redux-links/blob/master/redux-tutorials.md#redux-implementation-walkthroughs

[2] https://engineering.hexacta.com/didact-learning-how-react-works-by-building-it-from-scratch-51007984e5c5

[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.

https://github.com/kanaka/mal

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

---