I've been toying with the idea of a series of blog posts (or possibly even a separate site) that give a bottom-up explanation of all the stacks we work with - starting with electronics => circuits => computers => programming languages. It would be a way of teaching myself the material and provide a useful resource to others.
Using TECS to go from NAND gates to assembly is 4-6 evenings worth of work and totally worthwhile. I have a rough idea how compilers and operating systems work but until TECS everything below that was run by little laptop pixies.
Haha I love "little laptop pixies" :) That's exactly what I was talking about.
I think I'm going to have to get this TECS book (no pun intended) - it sounds just what I'm after. Need to finish SICP first though :P Not enough hours in the day.
Along those lines, I think that Rubyists would really benefit from a "Fundamentals of Unix for Rubyists" book (well, not just Rubyists, but you know what I mean). I'm thinking a book at the same level as The Well-Grounded Rubyist--essentially a translation of CSAPP into Ruby. What are the fundamental abstractions that the OS provides you?
I know that for me personally, having gotten into programming via Ruby rather than an academic CS background, practically everything having to do with Unix felt like magic. What's a process again? How do pipes work? Wtf is TCP? Everything is a file?
Interesting. Yes, I came a similar route - no CS background. I read ESR's TAOUT [0], which assumes quite a high level of Unix knowledge - I'd love a book at that level!
I've been toying with the idea of a series of blog posts (or possibly even a separate site) that give a bottom-up explanation of all the stacks we work with - starting with electronics => circuits => computers => programming languages. It would be a way of teaching myself the material and provide a useful resource to others.
Feels like a lot of work though :P