“This is also one of the most bizarrely delayed technical book releases I can recall. The majority of the book was about detailed optimization for the 8088 and 8086…”
I’m starting work on the (tentatively titled) “The Second Book of KIM.”
Software Design for Flexibility (2021)
This book left the deepest impression on me.
I was fascinated by the concept of additive programming. Personally, I spent a good while thinking about and studying the idea of "evolvability."
True, the overuse of flexibility can obscure control flow, and opinions on the book are divided but I learned many concepts from it. Since I often work on maintaining and modifying legacy code, this book was a great help.
My impression was the opinions on SDF aren't divided so much as most of the scant reviewers were unprepared to grok this book. As much as people like to cite SICP, "Advanced SICP" flew totally under the radar.
The people who build all the solid, crucial parts of the infrastructure and tools that the vibe coders depend on. People who are pushing forward with no ideas. People who are building solid, snappy, delightful software. People who take joy in understanding the logic and creating solid, novel abstractions.
It is such a big category error to say "we're building simple apps without looking at code, therefore no one reads code anymore."
I'm not sure if this comment is meant as a little joke or observation, but I keep on seeing serious comments like this. It is serious anti-intellectualism to scoff at people reading programming books or understanding things.
well written. i also feel that the generation of code becoming possible/simple means that our theoretical fundamentals ought to become that much more secure.
I still think the return-on-time from a good book is greater than a lecture or video or discussion. There is just so much refinement and information density, plus the ability to skip around to find interesting content is hard to match. (there is also something to be said for reinforcement of memory via spatial awareness while reading a physical book that is lost on a screen).
An interactive portal to a digital book could rival or surpass the experience, but I haven't encountered that yet.
Over the last few weeks, I've been eliciting a compiler for an experimental programming language called 5emel from Claude Opus 5.5. To give you the flavor, here's a randomly selected function from its compiler:
# The table of the program's own functions, by their descriptors, which
# the runtime searches for --memo-every and --memo-all.
def function_data(:defs) =
:rows = loop :next(:r = defs, :acc = []) (
| [] = r; acc
| [Def { :fname, _, _, _ }, ...:more] = r;
next(more, [acc, " .quad d_", fname, "\n"])
);
[" .balign 8\n .globl rt_functions, rt_nfunctions\n",
"rt_nfunctions: .quad ", show(length(defs)), "\n",
"rt_functions:\n", rows]
There's a lot of code in 5emel I haven't read; there's something like 15000 lines of TypeScript and JavaScript and 3000 lines of C. I've read almost none of any of that. I haven't even read all of the compiler, which is only about 1600 lines of code.
Despite that, I think I've been putting my extensive past reading of programming books to pretty good use in this process. 5emel is directed at finding a workable, though not optimal, general solution to one of the famously most difficult problems in computer science, and if it is successful, I think it'll be a real advance — and one that LLMs can use as well as humans. Better, maybe.
I confess this is above my pay grade, but very intersting and I would like to probe the machine with this data.
I enjoy your choice of phrase: 'to elicit' code from Claude. Like wishes from the Djinn. I imagine a guiding light through the Library of Babel ..or a trail of bread crumbs.
Over several months I watched over a friend's shoulder, with heavy lifting from Cluade, as he designed and verified a PCB for an IoT SoC with custom drivers for components, even hacking a video encoder to be a partial GPU such that it can playably run Quake (and more planned). And another friend designing a RISC-V core in an FPGA with aid from AI. I feel like quoting Roy Batty in Bladerunner.
> The majority of the book was about detailed optimization for the 8088 and 8086, yet it was published when the 80486 was showing up in high-end desktop PCs.
The book goes all the way up to discussing the 386. It's just that the foundations is rooted in 8086, which is a large chunk of the book.
My favorite books (or the ones I have spend most time with) and that have been most formative for me are:
Mastering Turbo Assembler by Tom Swan
Zen of Graphics Programming by Michael Abrash
The Zen Of Assembly Language by Michael Abrash
Programmer's Guide to the EGA, VGA, and Super VGA Cards by Richard F. Ferraro
The Indispensable PC Hardware Book by Hans-Peter Messmer
Do you have an amazing idea for a NES game you’ve been itching to turn into reality? Classic Game Programming on the NES will show you how. This all-practical beginner's guide is full of step-by-step guidance on everything from graphics and music, to enemy AI, to the 6502 Assembler language you need to get the most out of the NES.
The Sweetman book on MIPS is one of the best to learn OS internals from and how exactly it interfaces to the hardware.
Complementing that is the excellent Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers by Curt Schimmel.
Complementing the Furber book is the excellent Computer System Design: System-on-Chip by Michael Flynn and Wayne Luk.
And of course the classic ARM System Developer's Guide: Designing and Optimizing System Software by Andrew Sloss et al. is also a must read.
The Abrash books are these days just for nostalgia, and wouldn’t recommend them to a junior dev wanting to level up (except the chapter on using timers).. instead I’d recommend:
Programmers at work: I bought a used copy of it - probably after reading this the first time it was posted. Great book, if you can find it.
Code, by Charles Petzold should be on any programmer’s list - and the list of anyone with curiosity about how the modern world works. It somehow manages the amazing trick of being readable for the novice, but also containing nuggets of insight for the expert all at the same time. Such a well written book.
It was probably the first book on data structures and algorithms I came to possess (likely from a library book sale as a teen), so I would say I learned a lot from it, but don't remember the particulars. I remember it being clear and to the point with good diagrams and printing, even though I didn't use Pascal -- I read it as pseudocode.
And a memorable title.
Also it was a very compact hardcover edition that I could carry around easily.
For me, the blue Smalltalk book by Adele Goldberg was deeply formative. It was computing done right and from first principles.
The other two formative experiences for me were using Cincom’s Mantis on the 3278 and Dataflex 2. Both made it obvious how quickly one could go from screen to persisted data, CRUD, application logic, and reporting with the right level of abstraction. Much later I described Dataflex as “Rails for the VT100”. Sadly, Cincom will not provide a hobby license to run it on an emulated 4381, and won’t even give away free manuals, and the company behind Dataflex (I don’t remember their name right now) seems to not even have any versions from that time. When I read Paul Graham’s Beating the Averages, it all clicked perfectly.
The only technical book I own is Designing Data-Intensive Applications and I think everyone should read the first part of it.
I prefer learning as I go and have never enjoyed technical books, but I think everything is basically a database and understanding those fundamentals is very helpful.
I'm a huge fan of Kernighan and Pike's 'The Practice of Programming'. An incredibly clearly written book that manages to show how to write great code without falling into any cargo cult acronym nonsense.
> but I'd like to highlight some of the more esoteric books which affected my thinking
In the same vein, James Hagues's whole blog is wonderful; well-informed, witty, funny, incisive, insightful, with personality... I learned much from avidly reading it, while he was actively publishing. Thanks, James!
Also, I am cracking up at the construction of the site subtitle... It's not just tongue-in-cheek. It's also funny and with the times. :p :)
77 comments
[ 3.9 ms ] story [ 12.1 ms ] threadThat happened to me when I read The Little Schemer.
https://mitpress.mit.edu/9780262560993/the-little-schemer/
(The other time was when I saw a Hasui)
https://ukiyo-e.org/artist/kawase-hasui
The Seasoned Schemer
https://mitpress.mit.edu/9780262561006/the-seasoned-schemer/
One happy Little family.
https://openlibrary.org/works/OL21569615W/Little_Prover
https://openlibrary.org/works/OL20186830W/The_Little_Typer
https://openlibrary.org/works/OL28874136W/Little_Learner
And Grandpa, The Little LISPer
https://openlibrary.org/works/OL2938932W/The_little_LISPer
and cousins, The Little MLer
https://openlibrary.org/works/OL2729083W/The_little_MLer
and A Little Java, a Few Patterns
https://openlibrary.org/works/OL2729082W/A_little_Java_a_few...
The New Turing Omnibus: Sixty-Six Excursions in Computer Science
by A.K. Dewdney
https://openlibrary.org/works/OL1950479W/The_%28new%29_turin...
Show HN: The rarest tech books and docs you've probably never read(https://readrare.com/) 191 points|miletus|29 days ago|67 comments
https://news.ycombinator.com/item?id=50024055
I’m starting work on the (tentatively titled) “The Second Book of KIM.”
https://archive.org/details/software-design-for-flexibility_...
https://en.wikipedia.org/wiki/Creative_Commons_license#BY-SA
Land of Lisp: Learn to Program in Lisp, One Game at a Time!
by Conrad Barski
https://openlibrary.org/works/OL16807102W/Land_of_Lisp
Though, I've seen some comments that some of the code isn't idiomatic or something; probably not a great book to learn Lisp from.
https://www.goodreads.com/en/book/show/6905041-land-of-lisp
-- Not an easy book to get ahold of these days (like most of these)
http://landoflisp.com/
comment from pg: "Turns out the border between genius and insanity is a pretty cheery place"
Five Memorable Books About Programming - https://news.ycombinator.com/item?id=3917165 - May 2012 (1 comment)
Five Memorable Books About Programming - https://news.ycombinator.com/item?id=128054 - March 2008 (14 comments)
https://hop.perl.plover.com/
Some other great low flying titles:
The Computational Beauty of Nature by Gary William Flake
https://mitpress.mit.edu/9780262561273/the-computational-bea...
The Nature of Computation by Cristopher Moore and Stephan Mertens.
https://nature-of-computation.org/
Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani
https://cseweb.ucsd.edu/~dasgupta/book/index.html
and On Lisp, of course:
https://www.paulgraham.com/onlisp.html
It is such a big category error to say "we're building simple apps without looking at code, therefore no one reads code anymore."
I'm not sure if this comment is meant as a little joke or observation, but I keep on seeing serious comments like this. It is serious anti-intellectualism to scoff at people reading programming books or understanding things.
s/no/new ideas?
The people pushing forward with no ideas are likely not reading much either.
An interactive portal to a digital book could rival or surpass the experience, but I haven't encountered that yet.
Once if the great things about books is that the author was required to plan out a path to take you along. Most shorter content skips that.
Also love physical books and the spatial reinforcement.
(I'm probably biased as a book author because books sales are definitely in a slump.)
https://www.reddit.com/r/vintagecomputing/comments/1amon8p/d...
Despite that, I think I've been putting my extensive past reading of programming books to pretty good use in this process. 5emel is directed at finding a workable, though not optimal, general solution to one of the famously most difficult problems in computer science, and if it is successful, I think it'll be a real advance — and one that LLMs can use as well as humans. Better, maybe.
I enjoy your choice of phrase: 'to elicit' code from Claude. Like wishes from the Djinn. I imagine a guiding light through the Library of Babel ..or a trail of bread crumbs.
Over several months I watched over a friend's shoulder, with heavy lifting from Cluade, as he designed and verified a PCB for an IoT SoC with custom drivers for components, even hacking a video encoder to be a partial GPU such that it can playably run Quake (and more planned). And another friend designing a RISC-V core in an FPGA with aid from AI. I feel like quoting Roy Batty in Bladerunner.
Anyway.. mate?
I'm going to try to write 5emel up properly this weekend.
The book goes all the way up to discussing the 386. It's just that the foundations is rooted in 8086, which is a large chunk of the book.
My favorite books (or the ones I have spend most time with) and that have been most formative for me are:
Mastering Turbo Assembler by Tom Swan
Zen of Graphics Programming by Michael Abrash
The Zen Of Assembly Language by Michael Abrash
Programmer's Guide to the EGA, VGA, and Super VGA Cards by Richard F. Ferraro
The Indispensable PC Hardware Book by Hans-Peter Messmer
This one is really good.
Another from the same publisher is
Assembly Language Magic: Programming for the 8088-80386 by William H. Murray
https://openlibrary.org/books/OL2192212M/Assembly_language_m...
I really enjoyed my intro to RISC assembly:
SPARC Architecture, Assembly Language Programming, and C by Richard P. Paul
https://openlibrary.org/books/OL9285324M/SPARC_Architecture_...
Any recommendations for VAX or 68k or 6502 assembly (or ARM)?
Classic Game Programming on the NES: Make your own retro video game
by Tony Cruise
https://www.manning.com/books/classic-game-programming-on-th...
Do you have an amazing idea for a NES game you’ve been itching to turn into reality? Classic Game Programming on the NES will show you how. This all-practical beginner's guide is full of step-by-step guidance on everything from graphics and music, to enemy AI, to the 6502 Assembler language you need to get the most out of the NES.
https://www.amazon.com/dp/1633438015
See MIPS Run: Second Edition by Dominic Sweetman
ARM System-on-Chip Architecture by Steve Furber
I love both of these books.
Why not go straight to Patterson & Hennessey?
Computer Architecture: A Quantitative Approach
https://openlibrary.org/works/OL2664271W/Computer_architectu...
Computer Organization and Design: The Hardware/Software Interface
https://openlibrary.org/works/OL2956523W/Computer_organizati...
Blue Fox: Arm Assembly Internals and Reverse Engineering
by Maria Markstedter
https://www.wiley.com/en-au/shop/general-introductory-comput...
Complementing that is the excellent Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers by Curt Schimmel.
Complementing the Furber book is the excellent Computer System Design: System-on-Chip by Michael Flynn and Wayne Luk.
And of course the classic ARM System Developer's Guide: Designing and Optimizing System Software by Andrew Sloss et al. is also a must read.
- Latency by Pekka Enberg
- Rust Atomics and Locks by Mara Bos
- Code Optimisation by Kris Kaspersky
The Art of the Metaobject Protocol by Gregor Kiczales et al
https://openlibrary.org/works/OL4088774W/The_art_of_the_meta...
https://en.wikipedia.org/wiki/The_Art_of_the_Metaobject_Prot...
Code, by Charles Petzold should be on any programmer’s list - and the list of anyone with curiosity about how the modern world works. It somehow manages the amazing trick of being readable for the novice, but also containing nuggets of insight for the expert all at the same time. Such a well written book.
The Elements of Computing Systems: Building a Modern Computer from First Principles
by Noam Nisan and Shimon Schocken
https://openlibrary.org/works/OL21015000W/Elements_of_Comput...
The book is great - I love how Gary (IIRC) describes the centrality of data structures and how code kind of emerges from there.
The 2nd part reminds me of another classic in my library:
Algorithms + Data Structures = Programs
by Wirth
https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures...
Wirth writes fast but well.
And a memorable title.
Also it was a very compact hardcover edition that I could carry around easily.
Data Structures and Algorithms
by Aho, Hopcroft, and Ullman
https://openlibrary.org/books/OL3491774M/Data_structures_and...
but I own copies of both.
Agreed that Code is great! I'll pick up the second edition some day if I ever see it on a bookshelf.
The other two formative experiences for me were using Cincom’s Mantis on the 3278 and Dataflex 2. Both made it obvious how quickly one could go from screen to persisted data, CRUD, application logic, and reporting with the right level of abstraction. Much later I described Dataflex as “Rails for the VT100”. Sadly, Cincom will not provide a hobby license to run it on an emulated 4381, and won’t even give away free manuals, and the company behind Dataflex (I don’t remember their name right now) seems to not even have any versions from that time. When I read Paul Graham’s Beating the Averages, it all clicked perfectly.
I prefer learning as I go and have never enjoyed technical books, but I think everything is basically a database and understanding those fundamentals is very helpful.
https://www.oreilly.com/library/view/designing-data-intensiv...
and another memorable book with Martin Kleppmann:
Secret Colors: A Gentle Introduction to Cryptography
https://openlibrary.org/works/OL29241370W/Secret_Colors
Another regret was not getting my copy signed at a certain USENIX ATC.
..tho, actually Dennis was there with Ken and Rob, not Brian.
https://www.goodreads.com/book/show/39996759-a-philosophy-of...
Another I got them to purchase is
Exercises in Programming Style
by Cristina Videira Lopes
https://openlibrary.org/works/OL20754451W/Exercises_in_Progr...
Functional Design and Architecture: Examples in Haskell
by Alexander Granin
https://www.manning.com/books/functional-design-and-architec...
The Haskell School of Expression: Learning Functional Programming through Multimedia
by Paul Hudak
https://openlibrary.org/works/OL8325694W/The_Haskell_School_...
https://www.cs.yale.edu/homes/hudak/SOE/
and related,
The Haskell School of Music
https://www.cs.yale.edu/homes/hudak/Papers/HSoM.pdf
https://www.reddit.com/r/RetroFuturism/comments/13fq9xy/atar...
Likewise, (take/TA?) HtDP at UBC.
> but I'd like to highlight some of the more esoteric books which affected my thinking
In the same vein, James Hagues's whole blog is wonderful; well-informed, witty, funny, incisive, insightful, with personality... I learned much from avidly reading it, while he was actively publishing. Thanks, James!
Also, I am cracking up at the construction of the site subtitle... It's not just tongue-in-cheek. It's also funny and with the times. :p :)
Uncle Bob's Clean Code and
Denis Ritchie's C programming language