what are some other tutorials for implementing a toy version of a hard thing in a short amount of time? Like https://implement-dns.wizardzines.com or https://raytracing.github.io

I’m especially interested in the “in a short amount of time” aspect, I think nand2tetris is extremely cool but you definitely can’t do it in 3 days.

If possible I'd love to hear about a project you personally did and how long it took you.

Implement DNS in a weekend

@b0rk "Software Design by Example" (in JavaScript) is free to read online at https://third-bit.com/sdxjs/, and I hope to have the Python version up for beta readers by August.
Software Design by Example

@b0rk What I'd _really_ like is not more examples, but a volume of commentary and critique. Pauline Kael and Siskel & Ebert helped two generations of actors, writers, and directors be better tomorrow by taking apart what had been created yesterday and explaining how things worked (or didn't). We definitely need more model implementations, but I think we also need people to analyze the ones we have so that we can make the next ones better.
This is one of my dissatisfactions with both software engineering and computing education: neither thinks that criticism in the sense of literary, music, or film criticism is something they should do or reward. Twenty years on, most books and courses on software architecture & software design still don't describe actual, specific systems in pedagogically-useful detail https://third-bit.com/sdxjs/introduction/#introduction-history
Software Design by Example: Introduction

@gvwilson Gosh, this is so daunting because there's so much noise and the signal takes great effort to generalize. It takes a lot of expertise to critique effectively. Devs and users often praise the design they know while criticizing others and maintainers yearn for a hypothetical second system that surely would be cleaner before encountering the messy constraints. The best lessons may be when informed teams make high-stakes decisions, but it's rare and often for hyper-localized reasons.
@jedbrown and yet it's considered _normal_ in design-intensive disciplines like architecture and industrial design. Their students are explicitly taught, over and over, how to analyze the work of their predecessors and peers, and given a rich intellectual vocabulary with which to do that. No idea how one would prove this claim, but I firmly believe this tradition makes those fields stronger and leads to better designs.
@gvwilson How much do you think this is related to the way software evolves, so much of the critique ends up in seemingly-arcane rationale for new APIs? Well resourced projects can get a long way with brittle bones and even the most elegant collapse without resources.
@jedbrown more than half of the contributors to the first two volumes of https://aosabook.org/ explained design by recapitulating history. One of the reasons I lost interest in design notations like UML is that none of them (that I know of) even try to capture this…
The Architecture of Open Source Applications

@gvwilson One could write a book (and teach a course) on "a brief history of the Rust standard library", putting design decisions in context of prior art (especially C and C++), discussing alternatives that were considered, and reflecting on impact. It's different from modularity of large applications, but the lessons could be more stand-alone and I think they generalize.
@gvwilson @jedbrown Early on, I quickly realized I had a better design sense than my students (possibly from more experience) and I sought out works on design in CS so I could teach it. Here are some I found:

Blauww and Brooks: Computer Architecture: Concepts and Evolution

Brooks would later write on design in CS itself in "The Design of Design".

For software, Winograd edited a book on "Bringing Design to Software", available online at https://hci.stanford.edu/publications/bds/
Bringing Design to Software

@sree thanks - I know there are scattered examples, but as far as I can tell they are very much the exception
@gvwilson @jedbrown TOCE now welcomes such submissions. Kayla DesPortes, Betsy DiSalvo, and I have an upcoming CACM Viewpoints piece about this.