Having just finished Charles Petzold's Code book, and reading all about relays and building up a fully working computer solely using relays, it's amazing to see a real physical working relay computer! Incredible work!
Code is a great book. I've also been supplementing it with the From Nand 2 Tetris course[1] in order to have some applied experience with the concepts.
[1]https://www.nand2tetris.org/.
Code is what got me as a teenager interested in tech. It is an awesome book.
I think the book shown with nand2tetris (maybe called the elements of computing) is pretty good going from logic gates to building Tetris. Also "CODE" and "Computer Architecture with the Raspberry Pi" are great.
Code by Charles Petzold is an in depth history of programming. Very good book.
Code Avengers
http://codeavengers.com is a free interactive online tutorial that will teach you Javascript. My brother created it and I think its the funnest and most effective way to learn.
I'd summarize this way: Code Might Suck, But It Still Works (better than your beautiful unlaunched stealth project).
Code is a brilliant book, but I am not sure if the "non-technical" people will enjoy it beyond a point. The part where starts talking about flip-flops can be pretty complicated for someone who is not too interested in technology.
I'm reading Code right now. It really is a fantastic read.
Code is a great, great book. Thank you Petzold.
A great follow on to Code Complete - indispensable once you start working on projects of any decent size & need to communicate to your stakeholders about project delivery dates, etc.
For a gentle introduction to algorithms and Big O, "Grokking Algorithms" is easy to read and fun. For more in depth and systematic study, Sedgwick's "Algorithms" is a very clear and beautiful book.
For computer architecture, Petzold's "Code" is wonderful.
Code Complete and MMM bookend that nicely
Code: The Hidden Language of Computer Hardware and SoftwareOne of my favorite books, it covers everything from braille to microprocessors. A great book for anyone interested in technology.
I recently read Code by Charles Petzold and it quickly become one of my favorite books, this seems like a great follow-up
Code by Charles Petzold is an awesome hacking book. It takes you from flipping a light switch, thru simple circuits up to assembly language. It's beautiful!
Code Igniter is a pretty good framework for php. Much better than Cake as it doesn't sport so much "magic" behind the scenes.
Why don't you try Code Igniter? Heard pretty good reviews about it. It's a framework for PHP.
FYI, Microsoft Press ebooks, which are also sold through O'Reilly, qualify for this deal too. For whatever reason, they are not listed on the parent link though.
http://microsoftpress.oreilly.com/
I've heard (many times) that Code Complete is very good-- I'm strongly considering purchasing it.
Code Podcast [1] is an outstanding in-depth podcast for devs, without the usual blabla. IMO the best I have found so far.
[1] https://codepodcast.com/
Just get them a copy of Code: The Hidden Language of Computer Hardware and Software by Charles Petzold and make them read it end to end without distractions in a week :-)
I have read somewhere: Code comments are like love letters to your future self :-)
The author's name is "Charles Petzold" and yes "The Annotated Turing" is a great book.
All of Petzold's books are excellent, in particular; "Code: The Hidden Language of Computer Hardware and Software" should be read by everybody to understand how Computers really work.
Code Contracts, the library, has always been free. The static checker, the really important piece, was only available in expensive editions for commercial use.
“ Code: The Hidden Language of Computer Hardware and Software” by Charles Petzold and “The Elements of Computing Systems” by Noam Nisan and Shimon Shocken are both a great introduction.
Code Wars is my favorite. The earlier ranks are pretty simple but there's a broad depth of challenging problems at the higher levels. Online editor and test runner verifies your solution and the community aspects are a big win.
https://www.codewars.com/
I would surely read "Code: The Hidden Language of Computer Hardware and Software"
haven't read a ton of nonfiction, but these were good
- Thinking fast, and slow
- 7 habits of highly effective people
- Code: The Hidden Language of Computer Hardware and Software
- Getting Things Done
- Choose Yourself
Along the same lines, I tend to recommend people that are interested in becoming a developer check out 'Code: The Hidden Language of Computer Hardware and Software', it does a great job of explaining how computers work from first principles in an engaging way.
A bit more pop-sci, but i found this book a great read about how we went from simple on/off relays to full blown microprocessors.
Code: The Hidden Language of Computer Hardware and Software
by Charles Petzold
Code By Charles Petzold. This book is taking me back to school. Law of conservation of energy. Brilliant text
Petzold's "Code" starts at pretty much nothing and ends up with a programmable computer made using transistors. It's far more primitive than what you want to end up with (that is, you intend to start with an OTS microprocessor and build around that) but it's certainly useful knowledge.
I organized
Code on the Sea 2015 (
http://www.codeonthesea.com/) back in Feb/March, and it was a very rewarding experience.
Best of luck with your cruise conference!
Code Bullet is entertaining and probably the accessible to the general public that I've seen.
Strange Loop has a page with a four year backlog of talks, many of which are pretty good.
Got any good literature on this because I haven't found any supporting what you said. Code of Hammurabi didn't standardize an existing practice in my understanding.
Not necessarily a programming book but Code: The Hidden Language of Computers Hardware and Software. It's really easy to digest and moves at a good pace. It may not change your world but it will make thinking about computer internals feel less mysterious and more fun.
This is great. If you enjoyed it, you'll probably really like the (oft recommended here) "
Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold.
http://www.charlespetzold.com/code/
Try Charles Petzold's book "Code: The Hidden Language of Computer Hardware and Software". It goes through the structure of a computer at the binary level in a gentle way that's aimed at non-specialists.
The book Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is pretty fun for kids. You can play along with almost everything in it if you buy some (cheap) hardware. Very "hands on" explanations.
There are a few amazing books out there:
Code by Charles Petzold, The Elements of Computing (Nand2Tetris course book), No Starch Press's Secret Life of Programs, Learning Computer Architecture with Raspberry Pi
If he produces something better than either Code or The Annotated Turing he'll be doing very well. I'm almost tempted to buy that ancient Windows book he wrote except that I have more than enough things I ought to read already.
* Pirates of Silicon Valley (1999)
* Revolution OS (2001)
* Code Rush (2000)
* The KGB, the Computer and Me (1990)
* Infinity (1996)
* Antitrust (2001) -- mildly entertaining and fun
Send him the book "Code: The Hidden Language of Computer Hardware and Software", by Charles Petzold. It's often available used on Amazon for cheap.
Code Avengers
http://codeavengers.com is a free interactive online tutorial that will help you get started on Javascript. There is obviously much much more but this will help beginners learn basic skills.
I wouldn't even say it is geared towards the CS student/CS grad, more like general nerd reading. If I knew a kid who was "interested in computers", but there was no one around to give them a helping hand I'd definitely give them a copy of CODE and The C Programming Language.
"The Code Book", by Simon Singh, would be a good companion read. It covers much of the above, and is both compelling and well-written.
Edit: Fixed from "Code" to "The Code Book". Although "Code" (Charles Petzold), on a different subject, is also excellent.
Code Rush, that documentary about Netscape right before it was sold to AOL. Thats a nice one.
While I like Petzold's "Code", it's really aimed at nontechnical audiences. Jon Stokes' "Inside the Machine" or Nisan and Schocken's textbook "The Elements of Computing Systems" are far better if you have a technical background.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. I love this book.
>
Code: The Hidden Language of Computer Hardware and Software" is solid introduction
Very good book indeed.
This is really awesome.. I too love the book Code by Petzold. I was wondering if I could help translate this into German? I have some work colleagues that could really benefit, but I think it would be easier if the explanatory text was German.
Code by Charles Petzold
Not so much programming, but very good if you're interested in how your computer actually works.
Code Complete is good stuff. The first volume changed the way I thought about code.
Code Combat (YC W14) is a game that teaches people to program. It's been entirely open sourced and the devs/community make it extremely simple for new comers to contribute. I strongly recommend you check them out!
https://github.com/codecombat/codecombat
You might also like the book
CODE: The Hidden Language of Computer Hardware and Software http://www.charlespetzold.com/code/index.htmlIt starts with sending signals using flashlights and follows the evolution of computers from the ground up (mostly hardware).
> bad tech book writer
You can't possibly mean his "Code: The Hidden Language of Computer Hardware and Software" or "The Annotated Turing: A Guided Tour through Alan Turing's Historic
Paper on Computability and the Turing Machine"? These books are great.
For Software Engineering I recommend anything by Steve McConnell such as 'Code Complete', 'Software Estimation', and 'Rapid Development'.
By "idiomatic C" I meant any of the following:
- Code that most C books/courses would teach you how to write
- Portable C code (arguably portability is one of C's biggest successes!)
- Code that you'd expect to find in the K&R book
Software Engineering doesn't change
that rapidly.
The idea of iterative software development - that we now call "agile" was first documented in 1957
The Mythical Man Month was published in 1975 and is just as relevant today as it was when it was written.
Code Complete came out in 1993 and is still relevant.
Even when you start talking about programming languages, both Java and C# have been popular in the enterprise since 2005.
Nothing right now, but have two unfinished books in my backlog. First is Spring Snow by Yukio Mishima and the other is Code: The Hidden Language of Computer Hardware and Software.
Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. The best book I've ever read.
I think it would depend on what you’re into, but these are my picks:
Quantum Electrodynamics (Feynman): A summary of how almost EVERYTHING works (albeit explained simplistically).
Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger (great insights / worldly wisdom from one of the world’s greatest investors).
The Vital Question: Energy, Evolution, and the Origins of Complex Life
The Princeton Companion to Mathematics (Great overview of mathematics).
Quantum Mechanics: Concepts and Applications (Great QM book).
Wooden on Leadership: How to Create a Winning Organization (Great leadership / management insights).
Why Does the World Exist?: An Existential Detective Story
Sapiens: A Brief History of Humankind (An extremely simplified historical overview of how we got here).
The Book of Disquiet (Serpent's Tail Classics) (Random journaling from one of the world’s greatest prose writers: Fernando Pessoa).
Code: The Hidden Language of Computer Hardware and Software (Excellent explanation on how computers work from bottom -> top).
The Machinery of Life (Includes excellent visuals in biology).
The Character of Physical Law (Great insights in physics by Feynman).
The Goal: A Process of Ongoing Improvement (Great book on business process improvement).
How to Win Friends & Influence People (Nothing groundbreaking, but still a worthy read).
Coders at Work: Reflections on the Craft of Programming (Great info and insights from some of the greatest software developers of all time).
The Periodic Table (Great read and some of the greatest prose writing you’ll ever encounter).
I knew a guy who ran a business which designed and sold PCBs. He'd make up different names to stamp on PCBs. Designed by Joe Bloggs, Code by Derek Smarts, Layout by Jamie Simple, etc. He wanted the business to seem bigger than it actually was.
Code Complete 2. I bought it... never read it.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
This one's for you if you want to learn or just recap principles of computers (and read on evolution as well). I just started reading it and found it suprisingly easy to follow. It's perfect if you like things explained step-by-step and in a simple way.
I would suggest the following book as a precursor to all of these books:
Code by Charles Petzold.
It is genuinely one of the best books I have ever read.
I like projects like this. I started reading Code a while back, and thought it would be fun to make a computer out of relays, light bulbs, tinker toys, or whatnot. Then I started reading The Elements of Computing Systems, and thought about building something in a FPGA. One of these days.
"
Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold does an excellent job of explaining everything (from logic gates to CPU architecture to graphics) to the layperson. If any nontechnical person (my dad, for example :p) asked me how computers worked, I would tell him/her to read this book.
Even for a technical reader it's still an enjoyable book. It inspired me to design and make a computer of my own.
Code: the hidden language of computer hardware and software, by Charles Petzold.
It's a modern classic (2000). It's less technical and more about the history behind the idea/theories of coding itself. It also explains some basic principles of how computers work, at a high level. Very well written.
Have you checked out
Code Igniter? It is a php framework that implements the MVC design pattern. Forcing the seperation of the different layers makes things much "prettier" in my opinion.
http://www.codeigniter.com/
"Code" by Charles Petzold is another book I'd recommend for this sort of thing. I usually keep a few copies on hand to give out to folks that show a genuine interest in learning more about code and how computers really work.
Code: The Hidden Language of Computer Hardware and Software by
Charles Petzold is an excellent book I have recently begun to read. It's even longer that the Bloomberg post, and also such much more detailed and in-depth (-;
In fact, I found the book very enjoyable. It gives a nice pedagogic twist on how information can processed with hardware.
It has been discussed on HN here:
https://news.ycombinator.com/item?id=1936474
Indeed. I'd also add Code (by Charles Petzold) and D is for Digital (which I desperately want to read but haven't yet).
One of my favorites not on the list:
Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold
https://www.amazon.com/dp/B00JDMPOK2/
Takes you from simple mechanical switches all the way to a CPU.
My tuppenceworth
Some high level language VB, C# or Java
then
the first half of Code by Charles Petzold
then
The elements of computing systems by Schocken and Nisan
followed by
the rest of Petzold's book
All the good things in Prag Prog have become commonplace in today's development world.
* Tests - check
* Version control - check
* Code generation - check
* Decoupling, refactoring, metaprogramming, power editing.
It's still worth reading but it needs a second edition...
I'd recommend being a bit more specific about the things you're after. But here's two of my favourites (one technical, one business):
"Code: The Hidden Language of Computer Hardware and Software", by Charles Petzold
"Rework", by Jason Fried and David Heinemeier Hansson
> The first is
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
> It’s easy to read, you can lie down on the couch and enjoy it
No, it isn’t. It’s an awesome book. But it presents diagram after diagram of CPU internals and it would require a huge amount of stamina to get through them. You cannot just turn the pages; the entire point of the book is understanding how these components work in detail. It might be a good book to keep in a nuclear bunker to help rebuild civilization though.
The Predatory Female: A Field Guide to Dating and the Marriage-divorce Industry by Lawrence Shannon
The Manipulated Man by Esther Villar.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
The Myth of Sisyphus by Albert Camus.
Slightly OT, but If you haven't heard about it before Charles book 'Code' is one of the best computing books I have ever read. I gave it to my engineer father and my MBA brother for Xmas years ago, as it is such a great introduction for anyone to understand how computers work. You will also need a copy if you ever were trying to build a computer from scratch :)
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
You will learn everything from logic gates/transistors to software.
Check out Code: The Hidden Language of Computer Hardware and Software by Charles Petzold for a slightly romantic take, or Malvino's Digital Computer Electronics for an undergraduate view of computer architecture.
Agree with all the CS Basics book (would add
the Code: The Hidden Language of Computer Hardware and Software, great book and if he has time, I'd go for it). I'd also consider giving him a couple of books, like: A) Clean Code by Bob Martin, B) Soft Skills by Jon Sonmez. Books that doesn't require a computer, yet teach the reader how a good developer should think while writing code and working in a team. It's also less likely he gets stuck while reading this kind of literature.
Would help if you shared the end goal. Get hired anywhere? Get hired by Top 4 Tech Company or Hot Startup of the Year? Start a business? Don't get bored? How long is he going to be incarcerated?
I would greatly appreciate if you shared your experience.
I read CODE before reading The Elements of Computing Systems. I felt like the former provides details that you actually implement in the latter. Highly recommend both and in that order.
> However, after making my way through But How Do It Know? by J. Clark Scott, a book which describes the bits of a simple 8-bit computer from the NAND gates, through to the registers, RAM, bits of the CPU, ALU and I/O, I got a hankering to implement it in code.
Speaking of code, another excellent book along these lines is Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
http://www.charlespetzold.com/code/
Wow, I wish I had been exposed to this stuff in high school - I had already gotten well into my professional career when I found "Code: the hidden language of computer hardware and software" by Charles Petzold and it was just eureka moment after eureka moment reading that and then building the gates, adders, memory, etc from the diagrams in the book via redstone. One of my favorite learning experiences of all time!
spend $12 at Amazon on a copy of Charles Petzold's book,
Code: The Hidden Language of Computer Hardware and Software.
It will all begin to make sense as you will have a thorough understanding of what is going on at the lowest level. You will never regret acquiring that knowledge.
I used to think the same way about the CPU, even after getting a masters in Computer Science! About a year ago I read the book Code by Charles Petzold and watched some lectures about Computer Science by Robert Sedgewick which really opened up my mind.
As a disclaimer I haven't read
CODE, even though it's been on my list for a while (sounds like I ought to prioritize it!).
From my understanding of the style I believe The Gene: An Intimate History by Siddhartha Mukherjee is a similar take on genetics.
It stays fairly high level as it doesn't require a molecular biology degree, but Mukherjee gives a fantastic primer on many of the concepts in genetics in a deeply interesting and human fashion. It's always refreshing when non-fiction books manage to weave a narrative throughout in a way that feels natural.
I find it shocking that out of eight million comments, the top book is only mentioned ~50 times, but the parent comment illustrates why -- many people mention title/author pairs without linking to the book itself.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
(http://amzn.com/B00JDMPOK2)
The Handmaid's Tale - Margaret Atwood
The 4-Hour Body - Tim Ferriss - Lot's of anecdotes from Ferriss' own experiments.
S. - by J.J. Abrams - Layers upon layers. Unlike anything I've read before and a true Abrams experience. Check it out if you haven't heard of it!
Code: The Hidden Language of Computer Hardware and Software -
Charles Petzold - Fascinating PopSci book on the origins of Computers and Code. Each chapter seems to build on the knowledge you've built from previous chapters. Interesting read for the programmer/computer engineer and VERY approachable.
I have to agree with him to some extent. It easy for the mind to wander, and yes, I think thats true for even good books. Having a distraction free environment is a good idea regardless of what you are reading, further, having the ability to write while reading is also important.
Having said that, I have no issues with electronic format of books (except they make my eyes hurt). Sitting at a computer reading a good book works just as well as reading a paper book. If you are that enticed by the web, unplug your ethernet cable.
On a side note, has anyone read "Code: The Hidden Language of Computer Hardware and Software" by the same author. I am halfway through it, and I think its a phenomenal book.
I'd recommend Charles Petzold's
Code:
http://www.charlespetzold.com/code/Which does a great job building up computing from bits all the way to a adders, CPUs, and assembly language (with the historical background around it too).
I think the easiest way to get an idea for Quantum Computing and what the difference is comes from watching a specific example, I thought this example of Shor's algorithm was pretty good: https://www.youtube.com/watch?v=wUwZZaI5u0c
Pragmatic Programmer is still a good book, not as revealing as before but still has lots of good advice.
Code Complete is a problematic book. It has some good ideas but also has some very bad ones (cone of uncertainty, 10 times productivity in good programmers, etc).
Design Patterns is mostly obsolete. Functional programming techniques made a lot of Object Oriented techniques irrelevant (e.g.: observer pattern vs callbacks with lambdas).
Art of Computer Programming is the book everyone mentions but no one reads. A classic that people actually read is Structure and Interpretation of Computer Programs.
My recommendations: "Code" by Charles Petzold,"Don't make me think" by Steve Krug, Working Effectivelly with Legacy Code, by Robert Feathers, Clean Code by uncle Bob,..
The two are not at all similar. Petzold's "Code" is good but is aimed at non-technical readers while "The Elements of Computing Systems" is more or less a textbook that encapsulates a longitudinal slice of a 4-year computer engineering program, complete with exercises. It's really quite impressive in what it manages to cover (although the massive amount of material glossed over or omitted does make me wince).
Any book written by Charles Petzold is an enjoyable read, though particularly the non-MS specific titles
Code and The Annotated Turing.
Java Concurrency in Practice (2006) is older but relevant and clearly describes concurrency on the JVM. A must read for any Java, Scala, Clojure, etc. software engineer; well-written, enjoyable, concise.
Practical Object Oriented Design in Ruby by Sandi Metz is a fun read packed with good principles for working in Ruby that are applicable in general to object oriented programming.
Smalltalk Best Practice Patterns by Kent Beck is worth a read because the general principles are applicable to any OOP language.
Clean Code by Robert Martin is excellent but a time commitment. (If you had to pick between SICP and Clean Code because time is at a premium I'd err on the side of Clean Code for practicality. Writing maintainable code is paramount.)
The Joy of Clojure (Fogus/Houser) is excellent and mentally digestable even if you have no Lisp or Clojure background.
If the reference manuals are overwhelming, I'd recommend to start by reading Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. It covers how computers work for a general audience, from logic gates and boolean algebra, up to assembly, opcodes on the Intel 8080 processor, and how operating systems work. It was one of the most consequential books I've read, and I'd recommend it to both professional programmers and anyone else who is intellectually curious.
Code Complete second edition
If you'd like a great non-technical tour of how computers really work conceptually, starting from simple morse-code switches through to assembler, Charles Petzold's "
Code" is awesome:
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Even having understood for years how computers work in principal, nothing quite put it together for me like this book.
There's a similarly great book on the history/methods of cryptography called "The Code Book" by Simon Singh that I recommend too - http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/...
It's great because it traces the history but also walks you through how the cyphers actually worked, and provides the best intros I've ever seen to public key and quantum cryptography.
I recommend
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold [1]. It is far more comprehensive than the OP, goes from pre-computer code, to electrical circuits, to an overview of assembly. No prior knowledge needed except how to read.
1. https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
I'm not particularly sensitive to it, it has to be fairly pronounced before I'd even notice. This is.
It's one thing to say, I'd do it different. I'd have this book, or that book, or my list would have more this focus or that focus. It's a whole different beast to claim this list is "poor." And it is stupid to do so without countering with a list of exactly 5 books. Yes stupid.
I have read all 5 books. All 5 are excellent books. All 5 are very highly regarded in the field of programming and computer science. The descriptions that are attached to the list in TFA are accurate and useful to anyone reading the list. If there's a book on that list you haven't read, I'd say read it. This list simply isn't in the same postcode as "poor" and the descriptions of it as poor can't back it up in a meaningful way. Maybe there's another reason why the general mood of this thread is hypercritical? Smells a bit though, don't it? Do you really think if Guttag submitted that list the tone here would be the same or would the whole "this book is better" comments be rather more respectful of the original list and author? I've stated my opinion and why. You may of course, disagree.
Here's mine, Petzold "Code", Kernighan and Pike's "Practise of Programming", "The Pragmatic Programmer", Abelson and Sussman "Structure and Interpretation of Computer Programs" (with video lectures on youtube), Richard Stevens "Unix Network Programming" or maybe "Advanced Programming in the Unix Environment" - Which betray my OS accent. I'm not sure it's better than Ana Bell's. You can decide for yourself on that point.
alright, meh, not convinced. we're all busy people and my bedside book stack is 12 high.
compare books like CODE, SICP, and related books discussed below, to books like Beautiful Code, Higher Order Perl, Mythical Man Month, Seven Languages in Seven Weeks, tons of whitepapers.
do I really need to read CODE? Seems like a bottom-of-stack book that will never quite make it to the top.
Lessig (or something) is deleting my comment on Disqus. Here it is:
----
The the government's claims of transparency and audibility of the NSA's PRISM program is analogous (if not directly related) to the claims of Palantir's. Search for "immutable auditing" below:
http://www.palantir.com/wp-content/static/pg-analysis-blog/2...
But even with such an audit trail to the core, it is known that it isn't sufficient:
http://www.informatik.uni-freiburg.de/~accorsi/papers/imf09....
I wager that for any given system that touts immutable audibility, there is a way to hack around it. Privacy through automated means is impossible. At best it is a kind of DRM that the NSA can easily work around secretly if it wanted it. What we should be advocating instead is Perfect Forward Secrecy in our internet architecture, and the dismantling of PRISM and related data centers.
Prof Lessig, in your book "Code", you are using the issue of copyright to condone the current direction of the surveillance state and offering red herrings as "balancing" compromises. Such a balance is impossible in the face of concentrated storage of (even encrypted) storage data by intelligence agencies. As long as the NSA can tap the wires and record information in vast databases for cold storage, we are absolutely in risk.
More technical discussion here: https://news.ycombinator.com/item?id=5966942
P.S., FTFY: "I have not, AND would not ever, accept money from Palantir..."
Code Complete is an interesting one to me. I loved it back when doing C++.
One of the things that initially bugged me with lots of functional programming was that it broke many of the Code Complete rules like having one operation per line.
Does this mean that Code Complete is not relevant for functional code or maybe there is a new edition required I"m not sure.
Code: The Hidden Language of Computer Hardware and Software[0]
My kids enjoyed this book, similar topic, but fairly playful in how it was put together and an extremely gentle introduction without actually shying away from how things actually work. It's hard to imagine a reader not coming away with a much better understanding of what computing is all about. It starts at gates and works up to actual (machine) code at the end of the book. Very good diagrams throughout.
Despite being from 2000, I don't think it's become outdated. I'd love it if there was a sequel that covered putting things together with a cheap FPGA.
[0] http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
I've read both books and done the Nand2Tetris course.
I think Code by Petzold is decent in that it's a book you can read in bed etc. but it spends a long time discussing mechanical relays as an analogue and later discusses various processors in depth.
I think Nand2Tetris is slightly better in that it focuses on what I'd consider to be the most important stuff, but it's an actual course and requires significantly more effort.
Nand2Tetris is probably the best course I've ever done though, including my university studies in Physics and ML. It's fun and you learn loads.
It depends on the situation. If one is a lawyer who wants new skill sets and perhaps even a career change, an absolute yes. I did this transition seven years ago and left law entirely. I've met a handful of other interesting ex-lawyers who have made the switch from law to software and have been satisfied with the choice.
At the beginning of this year, after trying to explore what I wanted to do for the next stage in my life, I decided to get back into the profession as a solo practitioner and transition away from software development. I'm officially back to practice, and I'm surprisingly happy with my professional life - something I never thought would really be possible.
If you're a practicing lawyer who wants to give yourself an edge as a lawyer, I think it's more important to understand the concepts and principles as opposed inventing or finding the barely existent job of coder/lawyer for a firm - I don't know the name of the role, and I've seen it touted by legal tech folks - but these are elusive. Understanding what's possible, I believe, is by far way more important. For example, I've worked with countless non-coding project/product managers, and they've been great contributors to the process in software development.
My recommendation for lawyers? Do the Python track on Codecademy over a summer and read Code: The Hidden Language of Computer Hardware and Software.
Minecraft is an amazing learning tool even for adults! I used Minecraft as a "build along" tool for fully understanding logic gates while reading "Code: The Hidden Language of Computer Hardware and Software" (which I highly recommend - great book!). I used a mod called "red power" to make laying out the circuits much easier (the color coded, bundled cables alone were worth using it). Perhaps I will have to fire up Minecraft and take Electrical Age for a spin - it looks REALLY cool!
The Four Steps To The Epiphany - Steve Blank
Code by Charles Petzold
Artificial Life - Steven Levy
Time Reborn - Lee Smolin
The Singularity is Near - Ray Kurzweil
Surfaces and Essences - Douglas Hofstadter
How to Measure Anything - Douglas Hubbard
-- One of my favorites is How Not to Be Wrong by Jordan Ellenbreg
I have that on my list of "to read real soon now". Sounds fascinating.
I’ll second designing data intensive applications as one of the most interesting, readable, and relevant technical books I’ve ever read.
Working Effectively with Legacy Code was also impressive, I think I just read it too early before I was good enough to really understand and use it.
TDD is also worth reading (and it’s short) to get a sense of tests if like me, it’s something you’d never really done before when learning.
If you like soul of a new machine, you’d probably like Halt and Catch Fire on Netflix. I’d also recommend the Phoenix project and the dev ops handbook.
Code by Charles Petzold is one of my favorites to recommend, something every CS student should read.
I’ll have to check out the others on this list too.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
A great book that explains how computers actually work through number systems and the logic that acts on those systems. You start with the theory behind binary numbers and work your way through electrical circuits, logic gates, RAM, transistors, and the operating system as you build your fundamental knowledge of the inner workings of computers. It's pretty cool.
Audiobooks I have Read Recently: (Sanderson is Awesome)
* The Reckoners #1/#2
* Stormlight Archive #1/#2
* Mistborn #1/#2/#3
* Ghost in the Wires: My Adventures As the World's Most Wanted Hacker
Digital Books:
* How to Win Friends and Influence People
* Malazon Book #1
* The Forever War
* The Martian
Things on my List:
* Think and Grow Rich
* Watership Down
* Rainbows End
* Snow Crash
* What is Zen
* Wool: Silo
* Founders at Work
* Light Bringer
* Hyperion
* The War of Art
* Atlas Shrugged
* The Demon Haunted World
* Code: The Hidden Language of Computer Hardware and Software
* Joe Abercrombie's books
* Rich Dad Poor Dad
* Founders at Work
* Fear the Sky
* Daemon -- EDIT ADDED
Things I recommend:
* All of Brandon Sanderson's Books
* The Kingkiller Chronicles
* How to Win Friends and Influence People
* Issac Asimov's short stories and Foundation series
* The Forever War
* Gentleman Bastards
* Ready Player One
* The Martian
* A Wizard of Earthsea
EDIT:
Short Reading I Recommend:
* http://www.multivax.com/last_question.html
We teach this class formally in one semester at the Colorado School of Mines, where it is now a required part of the CS curriculum.
I use both Code and TECS books together. It is an incredibly effective class. I've found many students in CS curricula "drift" through the topics without really grasping anything, only to graduate feeling they haven't really learned much.
This material takes the essence of numerous CS topics and educates the reader by doing and building, rather than only reading and theorizing.
If you are a developer and don't know what happens when you execute a program, you really need this book (and CODE by Petzold).
Code: The Hidden Language of Computer Hardware and SoftwareIt is a great book written by one of the great computer scientists of our time. It tracks the evolution of code and computing from morse code and braille on to number systems, early processors and even into how processors handle this information. When I hire someone for nearly any position, I buy them this book.
*Don't let the title fool you, this is not some discussion about high level languages, this is the down and dirty stuff.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
You have a handful of low-level languages listed. It doesn't make sense to try to put those through a JavaScript lens. Rather, pick one to start with and build some programs with it. You should quickly start to see how memory, I/O, etc, are handled.
I would also recommend the book "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold as a general introduction.
CODE is an amazing book and I rarely see people mention it. I've yet to come across a resource that is so good at joining electrical engineering and computer science.
It starts with an abacus and 400 pages later of flip-flops, memory gates, and microprocessors it leaves you with a fully built modern computer.
That said, I would not put it in a beginner category. I read it after 4 years of ASM programming and building electrical gadgets and I still had to stop and reread chapters quite a few times until I got all the concepts out of it.
If you're at all interested in how all the parts in your computer interact and work together at the lowest level, READ THIS BOOK.
For this kind of thing, I recommend the book
"Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Being a CS major, I bought this book for the sheer amazement at how the gist of everything I had learned about computers in the university could be conveyed in one book in such easy and fun manner. The learning curve is so gentle, it just couldn't be easier. I cannot recommend this book enough to _every_ person who really wants to understand how computers work.
Recently, I've come to know "
Code: The Hidden Language of Computer Hardware and Software"[1], and I really enjoyed it. I don't think it's necessarily the first book every programmer should read, but I do think it's a book every programmer should read. It's an easy read, it's fun, and really does provide what it promises. Highly recommended.
1. http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
From the end of the article:
PS If you need a bit more beautiful simplicity go and read about NAND logic and realize that they are all you're ever going to need.
A wonderful demonstration of how this can be done can be found in the "The Elements of Computing Systems". Homepage: http://www1.idc.ac.il/tecs/
This course will show you how to build a simple but modern computer stack starting with nothing but simple NAND gates. Make sure to do the exercises and be prepared to invest a lot of time if you buy this book, otherwise you'll just waste your time.
I consider TECS and Charles Petzold's "Code" to be the most approachable books for those who want to understand what's really happening "under the hood" of your computer and can't recommend them highly enough.
Steve McConnell advocates a similar thing in
Code Complete 2, which he calls Pseudocode Programming Process, PPP.
The idea is that when first creating a method or function, you write out in comments what you're going to do in a 'why' level (eg, 'keep track of resources') rather than a 'how' level (eg, 'increase cntFooBar by 1').
You then start 'filling out' the code to do what you 'designed' via the comments. Hopefully you end up with a better designed routine, and you get free comments to boot as they now explain what the code is doing.
When I first read Code Complete as an impressionable teenager I tried it out and liked it, but I have since had a change of heart on this issue and other Code Complete wisdom. I rarely comment inside methods anymore.
Oh, maybe my idea of "technical" is too narrow. From a typical book perspective it's very technical. I meant it more from a textbook perspective.
Code isn't a book you use to teach, or to learn concepts in detail. You could learn plenty of things at a high level, some concepts at a single-example level, but you aren't learning computer architecture or algorithms here. It's the only book I've read that effectively bridges casual reading with textbook ideas, without actually throwing you in the deep end.
On a side note, people keep recommending masters of doom to me, I definitely need to check it out myself.
CODE by Charles Petzold and The Elements of Computing Systems by Nisan and Schocken
This might be fundamentally irrelevant to this thread, but it got me wondering and I would like some assistance/guidance:
Whenever I read the mailing list, or threads related to it, I don't understand 99% of the stuff. Do I need to know C _very well_? Do I need to be familiar with kernel? If so, how do I go about doing that? At the moment I'm reading "Code: The Hidden Language of Computer Hardware and Software".
Not sure it qualifies as an introduction to any particular field within tech, but for a general deep dive into the inner workings of computers:
Code: The Hidden Language of Computer Hardware and Software
I just love this book! It was a joyous adventure of discovery the first time through. Subsequent reads always yield new insights.
Of the books I finished in 2016, I'd nominate a couple as contenders for "best of 2016":
1. Mastering the Compex Sale, by Jeff Thull. If you're interested in B2B selling, I highly recommend this book. Thull's approach is dramatically different from the old-school "Alec Baldwin rant in Glengarry Glen-Ross" stuff you may have been exposed to. He encourages a model where you act more like a doctor, or a detective, and practice "Always Be Leaving" instead of "Always Be Closing".
2. It's Not The Big That Eat The Small, It's The Fast That Eat The Slow by Jason Jennings. The title is a good summary. Jennings makes an argument for the importance of "speed" as the primary driver of competitive advantage. There's more too it that that, so just read the book.
3. Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. If you didn't take, or have forgotten, classes like Computer Architecture or Digital Logic, this is a great book for getting your head around the low level details of what's happening in side a digital computer. Petzold starts from VERY basic examples (using a flaslight to morse code messages to your friend across the street) and slowly builds up to a full-fledged (if somewhat minimalistic) CPU.
Edit: some unlucky soul commented Atlas Shrugged and got downvoted / flagged / whatever to death. I didn't read AS in 2016, but I have read it, and I do recommend it to everyone. It has its issues, but it's absolutely a book everyone should read, whether you agree with Rand's ideology or not. And if you aren't familiar enough to Rand's ideology to know if you agree or not,that's all the more reason to read Atlas Shrugged (or The Fountainhead).
The best bottom up approach to this that I have seen is Charles Petzold's "
Code: The Hidden Language of Computer Hardware and Software" [1] which starts with using a flashlight to send messages and walks up the abstraction chain (switch, relay, alu, memory, cpu...) to most of the components of a modern computer. It's very accessible.
[1] http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Before reading this book, I had what I thought was a fairly solid grasp of computing. I was 19 (20 now), largely self-taught from spending nights on Google instead of going to parties, and if I didn't know the details of something, I knew enough about the concept to get by. I could program well enough in a few languages, talk about hardware, security, and protocols for hours...
I still had no idea how 10010011000110101001010 etc etc allowed me to play World of Warcraft. There was a small part of me that hoped beyond hope that computers were magic and there was some grand conspiracy going on to cover that fact.
Then I read CODE.
My hopes were shattered, but they were replaced by something much more treasured: Understanding.
+ 1 for GEB. I read that freshman year (now a junior).
As an example of its utility, I really like its description of formal systems which are a somewhat simplified version of context free grammars. There are many other concepts described in that book that give similar but more intuitive explanations of CS concepts that helped me understand them as part of "the bigger picture."
CODE: The Hidden Language of Computer Hardware and Software, which is mentioned on here a lot, was helpful for similar reasons.
Recently? And actually finished as opposed to skimming or working through parts of?
Code by Charles Petzold.
Of the ones that I haven't finished, but have at least looked at, I think I'd say:
Machine Learning for Hackers by Drew Conway and John Myles White
and
The Master Algorithm by Pedro Domingos
For a good high-level introduction aimed at technical readers who aren't CompEs, I suggest Jon Stokes "Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture". It's a readable and reasonably in-depth explanation of how a modern processor works without going into the level of detail that a full-blown computer architecture textbook would.
Charles Petzold's "Code: The Hidden Language of Computer Hardware and Software" is also well regarded, but is aimed more at non-technical people.
For beginners, these are good:
- How to design programs (http://htdp.org)
- The Little/Seasoned/Reasoned Schemer.
- Code: The Hidden Language of Computer Hardware and Software by Petzold
- Coders at work by Peter Seibel
- The Pragmatic Programmer by Hunt and Thomas
- Code Complete by McConnell
For intermediate/experienced people:
- Structure and Interpretation of computer programs (http://mitpress.mit.edu/sicp/full-text/book/book.html)
- Software Tools in Pascal by Kernighan and Plauger.
- Programming Pearls by Bentley
- Smalltalk 80: The Language and Its Implementation by Adele Goldberg.
- Paradigms of Artificial Intelligence Programming by Norvig
- A Discipline of Programming by Dijkstra
While I've ommited some important language specific books, and ignored essential areas (algorithms, discrete math, hw arquitecture), I think this is a good starting point.
"This is not my hat":
https://www.amazon.co.uk/This-Not-Hat-Jon-Klassen/dp/1406353...The humour is subversive, the illustration is lovely, and these ("This is not my hat" is another) are great books for younger children. My child loved it, and the people I've given this to have gone on to buy other books by the writer or illustrator.
"Mr Birdsnest and the House Next Door": https://www.amazon.co.uk/Birdsnest-House-Next-Door-Little/dp...
Little Gems are a set of books printed on reduced contrast paper, with a large clear font. They're short, simple, but fun. They're good for younger readers or for slightly older reluctant readers. My child enjoyed reading this book, and loved the illustration. The other child I gave this to took out other books in the Little Gems series from the library, and bought other Julia Donaldson books with her pocket money.
"Code: The Hidden Language of Computer Hardware and Software" https://www.amazon.co.uk/Code-Language-Computer-Hardware-Sof... I had a friend who knew a lot about the software, and knew a lot about hardware but their hardware knowledge was a bit patchy. Code helped solidify their knowledge. If I could have afforded it I would have given them The Art of Electronics and the companion Student Manual. (This was in the 1990s. I haven't read the new version and I don't know how well it works today.)
"Bomber Command" https://www.amazon.co.uk/Bomber-Command-Pan-Military-Classic... I liked this book because it describes how we (the UK) went into world war 2 with ethical notions around not bombing civilian populations and ended up fire-bombing several heavily populated German cities. It's also eye-opening about the scale of this part of the war, and the cost in lives of aircrew.
I started to read Code: The Hidden Language of Computer Hardware and Software by Charles Petzold two days ago - and he starts with morse code (and braille). You're right, it's no programming language (just an encoding) - but seemingly near conceptually to a language (for Petzold, anyway - yay it's got 0's and 1's, too).
I'd spent one of the most educational years of my life this last year reading, "Designing for Data-Intensive Applications", "
CODE: The Hidden Language of Computer Hardware and Software", and "The Design of the UNIX Operating System".
While they haven't given me any expertise on how to actually use these technologies to solve intricate problems (only experience and true depth can do that), they have given me a near-complete picture of what ordinary computers do today. Nothing is magic. Everything is a logical operation.
I only regret I hadn't read these back when I was a teenager.
PS. Next thing I would like to learn is the general design of modern CPUs and branch prediction.
I've probably read about 9.5/10 of the last books on a kindle.
I think the format is perfect because of several factors:
1. for books I read through once and never actively reference again, or very seldomly
2. I don't have to wait for the paperback to come out
3. I don't have the eye strain of reading on an ipad or my phone
4. For a large majority of my purchases it doesn't make sense to own a physical copy of the book. It seems like it would be a hassle to own and carry and take up space. (also see #2)
5. a kindle is light and cheap enough that I don't have to stress too much about breaking it or leaving it somewhere or it being conspicuous to have out in public
However, the kindle fails at some important things:
It's not in color, so it doesn't do well for books that are image heavy (even in black and white) - the display is a little too small and any images in the book tend to look terrible for some reason (even though the supposed dpi is relatively high) -which brings me to your point, that in general I find that phones, tablets and kindles are not particularly good at replicating the browsing experience of a certain kind of book.
I don't think all books fall into this category, but some important ones do and I can't imagine not having a physical copy for that reason.
The last one that comes to mind for me is Code: The Hidden Language of Computer Hardware and Software. I like browsing through all of his examples and diagrams and flipping back and forth through the different parts that interrelate to each other.
I've never found an electronic browsing experience that was as good as a physical book. (unless I was at the point of wanting to implement some formal system of organizing and linking my ideas, in which case I think a computer would be preferable)
The kindle particularly fails at this experience, as an integrated piece of hardware / software it's merely competent and has a lot of rough edges. It's not as seamlessly integrated in the way iphones (for example) are.
Assuming that you actually mean computer engineer (as in digital logic and computer hardware) and not software developer, as so many people here are assuming, there are a lot of resources available:
For a gentle overview of how digital logic and CPUs work, Charles Petzold's book "Code: The Hidden Language of Computer Hardware and Software" is solid introduction. Nisan and Schocken's textbook "The Elements of Computing Systems" and the lessons at the NAND2Tetris site (https://www.nand2tetris.org/) are good if they want to get hands on with the subject.
There are a variety of robotics and electronics interfacing kits based off the Arduino and Raspberry Pi available through Adafruit and SparkFun. If they're more interested in the digital logic side, Digilent provides FPGA boards and test instruments intended for use in educational environments that also include tutorials https://store.digilentinc.com/the-zynq-book-tutorials-for-zy....
[EDIT] I've seen some recommendations for the video game Factorio in this thread and, odd as it may sound, it would not be a bad gauge of interest. Digital logic is all about getting the right signals to the right place at the right time and doing the right thing with them and Factorio definitely teaches analogues of that.
[EDIT 2] Another interesting project for them might be to build a computer from chips. Ben Eater has a design, tutorials, and sells kits for building a 6502 computer (Same CPU as the Apple II) on a breadboard: https://eater.net/6502. (Not sure I'd want to try that without a 5V tolerant logic analyzer but they're cheaply available nowadays, e.g. https://www.seeedstudio.com/Logic-Pirate-p-1750.html) Note that I don't vouch for any of these, they're just examples of what's available out there that your friend can investigate if it piques their interest.
While you're at it you might want to pick up a copy of "
Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. One of the most compelling and well written books on the subject I've read. Reading this along side learning C and Assembly language will make it all "click".
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
I like the opening of this aricle. It almost mentioned all the interesting books about the folklore history of computing. All the books mentioned in this article are worth reading.
> Extant histories of the internet favor either heroic or deterministic narratives. On the determinist side, we have Paul Edwards’s The Closed World (1996), Fred Turner’s Democratic Surround (2013) and From Counterculture to Cyberculture (2006), John Markoff’s What the Dormouse Said (2006), and others that describe the internet as the result of collisions between large-scale Cold War policies or zeitgeists. With some variations, these narratives portray the digital revolution as born from the improbable marriage of countercultural hippie experiments and the military-industrial complex.
> On the heroic, individualist side, we have Steven Levy’s Hackers: Heroes of the Computer Revolution (1984), Katie Hafner and Matthew Lyon’s Where Wizards Stay Up Late (1996), Michael Hiltzik’s Dealers of Lightning (1999), Walter Isaacson’s Innovators (2014) and Steve Jobs (2011), Leslie Berlin’s Troublemakers (2017), and Adam Fischer’s Valley of Genius (2018), whose titles speak for themselves. Histories in this genre extoll the whimsical personalities and talents of digital entrepreneurs and inventors, of whom Jobs is the prime exemplar. Some do acknowledge the contingencies that facilitated the rise of these digital “geniuses.” But overall, they tend to represent Silicon Valley as a titanic battleground that proved the superior mettle of its winners. Both extremes are tempting in their clarity; both make for a gripping story. Occasionally—as in Liza Mundy’s Code Girls (2017) or Margot Shetterly’s Hidden Figures (2016)—a simultaneously individualist and Marxist approach unveils underappreciated digital counter-heroes.
{most of this post is for the future people who happen to find it. You sound as if you have most of this knowledge already.}
Yes. Get a breadboard and powersupply and some jumper leads and some LEDs and start building stuff.
Then get some books; Code (the petzold book) and Art of Electronics are both good examples to start really building stuff, and understanding what's going on.
When you've got beyond the initial introduction you want to start using an oscilloscope to start seeing things like leading edge or falling edge, and measuring the times, and seeing how timing issues come in to play when you have a long chain of slow logic gates.
Fun (as in puzzles and stuff) things to do include building one type of logic gate using a different set of gates; use Karnaugh maps etc.
This is a really good way to get used to logic states and timing and using a scope to trace a signal path and compare what you're getting with what you think you should be getting.
Don't forget with real world builds to include de-coupling capacitors.
I was taught to create a memory map from a circuit diagram, which I guess is handy if you're into that kind of low level stuff. (Probably embedded stuff now.)
EDIT: Thanks to Shabble for the correction!
Hm, I came up with this idea independently, 5 < years < 10 ago, after reading the first third of
Code: The Hidden Language of Computer Hardware and Software.
Neat!
I just figured that you could redesign common ICs so that they had a new wire akin to the "carry" bit. I called it the 'done' wire, and I figured you could just tie it to the CLK of the next IC. Ya know? So 'doneness' would propagate across the surface of the motherboard (or SoC) in different ways depending on the operation it was performing. Rather than the CLK signal, which is broadcast to all points...
(I know that my idea is half baked and my description is worse. I'm glad I found this PDF!)
I knew the big advantage would be power savings. I called the idea 'slow computing', and I envisioned an 8-bit style machine that would run on solar or a hand crank and be able to pause mid calculation until enough power was available... Just like a old capacitor-based flash camera will be able to flash more frequently when you have fresh batteries in it.
You'd just wire the power system up with the logic. Suppose an adder fires a "done" at some other IC. Now, put your power system inline, like MiTM... When it gets the "done", it charges that capacitor (a very small one? :) ) and only when enough power is available does it propagate the "done". ...Maybe the "done" powers the next IC. I dunno.
As I said, half baked. Glad to find out that I'm not the only one that dreamed of 'clockless', though!
SICP might be a good programming book, but I'm not sure it's a good book. If your friend doesn't have programming experience something like "
Code: The Hidden Language of Computer Hardware and Software" might be an easier way to start. Here is the first paragraph from each for comparison:
SICP: "We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells."
Code: "You're 10 years old. Your best friend lives across the street. In fact, the windows of your bedrooms face each other. Every night, after your parents have declared bedtime at the usual indecently early hour, you still need to exchange thoughts, observations, secrets, gossip, jokes, and dreams. No one can blame you. After all, the impulse to communicate is one of the most human of traits."
Code: The Hidden Language of Computer Hardware and Software was one of the most formative books for my programming self education. I've tried to loan it to several of my friends more than once, and it was a gift to me.
Also had a strange case of loaning out C# 4.0 in a Nutshell and never getting it back, but I would do it again (with an updated version). Albahari is good at writing a reference without being too boring, and C# has some legitimately interesting sides in how it does some things, like it's dynamically compiled regexen.
All of the fears he mentions are present all of the time when coding - fear of working on the wrong thing, fear of not being able to solve problem X, etc... Those fears are healthy and there for good reason - to enable the planning and execution of software projects from small to large. In fact, a developer who did not have, say, the fear of working on the wrong thing would...spend a lot of time working on the wrong things.
I'm not really sure I buy the idea that any of these fears would be substantial enough to impact the allocation of time on programming unless the person in question had some issues to work out such as procrastination.
Afraid of what others will say? Don't tell them. The practice is still going to be worthwhile.
Afraid of not finishing? Break down the project into small chunks, write tests to make sure the small chunks work properly, and iterate between planning out the next steps and executing the next step in the queue (in theory, any number of subsequent steps can be added, removed, deleted, or re-arranged after executing any single step).
Afraid you won't know how to solve a problem? Which problem? Did you read the Wikipedia article and consult the relevant textbooks?
Afraid you're not working on the right thing? First figure out what the right thing is, and justify why it is right. If you're working on anything else, stop. Now start planning how to approach the right thing. You are now working on the right thing, for a discussion on when to transition to coding, see Code Complete.
I've actually had a lot of success with my Kickstarter projects thus far. One just came in today, and I'm very satisfied. So far I'm 7/10, with 3 projects currently pending.
Here's what I've backed, and how they've turned out:
Successful
* Sunski Sunglasses - A resounding success. Just got my pair today, and the item was exactly as described. The glasses, packaging, and design is all top-notch
* Wear You Live - A local company (for me at least) that used the money to purchase the initial equipment. I received all items promptly and on schedule.
* Cowboy Comb - Not as ambitious (they just wanted enough interest to make producing the combs profitable) but I got my item quickly and exactly as described.
* Freaker USA - Upgraded coozies. Another project that is putting people in my area to work, plus the updates were hilarious. I got my items exactly as described and on time.
* The Jay DeMerrit Story - Used the Kickstarter campaign to build buzz and raise funds for additional footage. Ended up getting the film a few months later.
Pending
* Castle Story - A Minecraft-esque strategy game. They've released alpha, and while I haven't played it, they've been really good about updating me and I think they're actually going to ship this game...eventually.
* Fight for Space - A movie currently in production, but they seem to be making solid headway. I honestly have no idea how this one is going to turn out.
* Code Hero - This is the one all the buzz has been about recently, but apparently they've been actually making progress.
As books go, Code Complete isn't intended to be memorized but to be understood. I would imagine a coder already having an internal model of how to write code and using a book like
Code Complete tweak and improve that model.
Also, I read something like Code Complete for the same reason I've read the parent blog. Even though I feel like I know the basic points here, writing good code inevitably is a trade-off and so one more idea of how to make the trade-off is useful.
It's Not the Big That Eat the Small...It's the Fast That Eat the Slow: How to Use Speed as a Competitive Tool in Businessby Jason Jennings & Laurence Haughton
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
What Is Relativity?: An Intuitive Introduction to Einstein's Ideas, and Why They Matter by Jeffrey O. Bennett
Spooky Action at a Distance: The Phenomenon That Reimagines Space and Time—and What It Means for Black Holes, the Big Bang, and Theories of Everything by George Musser
Towers of Midnight (Wheel of Time, #13) by Robert Jordan & Brandon Sanderson
Second Foundation by Isaac Asimov
Just started reading The Penguin History Of The World by J.M. Roberts & Odd Arne Westad. I'd always found history interesting in a general sense, but other than a couple of specific periods that I found interesting (the American Revolution, WWI, WWII), I had not studied the subject in much depth. So I figured I'd start with a good single-volume overview of World History as a whole, then go back and dig deeper into additional areas that pique my interest.
So far it's pretty fascinating. It's especially interesting when you see how elements of our modern world have roots that can be traced back for millennia. It's also fun to note the extent to which geography and climate have impacted the evolution of human civilization(s). It gives you a lot to think about in terms of dealing with anthropogenic climate change. Even if human civilization isn't wiped out completely, we could certainly see massive changes in the nature of our civilizations as a result. At least history seems to suggest so.
I would have probably said (with some imprecision):
Electrical circuits either carry a current (binary 1) or they don't (binary 0). [Ignoring the fact that you could also measure the AMOUNT of current carried here] Because of this underlying limitation in electrics you need to make do with just a binary system in computers.
Depending on the amount of time remaining I would either go into more depth or point him towards "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold (http://amzn.com/0735611319)
The history of computer science is dauting. Unlike physics, though, it's the history of incremental innovations that culminated in what we have today. Thus, if you go back in time long enough, things eventually are manageable.
A good primer on the history of CS is probably Code, The Hidden Language of Computer Hardware and Software, by Charles Pretzold. I've put together some notes on it here: http://alvaroduran.com/code.
Any feedback is much appreciated!
I have done work at a charity that mails donations of books to prisons called "Books Through Bars", and I am always excited to get a request for books on programming. You may want him to send a request to them, there will be some lag time, but it sounds like he has a bit of time left.
I'd go with "Code: The Hidden Language of Computer Hardware and Software" or a Donald Knuth book.
If you're not too familiar with hardware or how computers work at a low level (assembly language, instruction sets, etc), then I would think about reading
Code: The Hidden Language of Computer Hardware and Software.
It starts off with a story of two kids communicating to each other with flashlights in Morse code, and slowly builds up into how a computer works.
There is no quicker way to get me disinterested in a book than the words non-fiction. And there is no shot that I am reading a book if I'm not interested in it. I've noticed lately that when I hear or read someone talking about reading (it has come up in a few podcasts I listen to) it often comes up that they are talking about non-fiction. I've read one non-fiction book outside of school[1].
I read for escapism, or to explore other worlds in my imagination. Reading gives me something fantastical to think about. If I want something real to think about I use the internet. Books have never filled that role, and I've never really considered them for it. Am I missing out? Should I try and shake my prejudice against non-fiction?
[1]: Code: The Hidden Language of Computer Hardware and Software
> Intro articles like this do a lot to reveal biases and misunderstandings.
This is one of the reasons I barely recommend any intro articles in Lean Notes (http://www.leannotes.com/): almost every single one is just a stream of incomplete and incorrect statements about how the world works, based on the author's myopic personal experiences.
Rather than properly generalizing and consolidating what needs to be said to convey a full understanding of the topic, most intros settle for the first example they can think of that could be remotely construed as related to the words they've previously used for whatever subject, regardless of whether it has meaning in any context. (Example: saying that type safety prevents you from trying to "multiply seven by cats".)
It seems like a pretty Dunning-Kruger thing: the less broad your knowledge is, the more justified you feel in writing an introductory text to the field.
The only time I've ever seen somebody actually qualified to write an introductory text actually doing so (as I can immediately recall) is Charles Petzold's [Code: The Hidden Language of Computer Hardware and Software][Code] (although I suspect, from the few excerpts of it I've seen, that Brian Kernighan's "D is for Digital" is good, too).
[Code]: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Gosh, there's so many. But these come to mind:
1. Neuromancer - William Gibson
2. Snow Crash - Neal Stephenson
3. Hackers - Heroes of the Computer Revolution - Steven Levy
4. How to Measure Anything - Douglas Hubbard
5. Godel, Escher, Bach - Douglas Hofstadter
6. The Pragmatic Programmer - Andy Hunt and Dave Thomas
7. The Soul of a New Machine - Tracy Kidder
8. Code - Charles Petzold
9. The Shockwave Rider - John Brunner
10. Ambient Findability: What We Find Changes Who We Become
Book - Peter Morville
11. Don't Make Me Think - Steve Krug
12. The Design of Everyday Things - Donald A. Norman
13. The Mythical Man-Month: Essays on Software Engineering - Fred Brooks
14. Decline and Fall of the American Programmer - Ed Yourdon
15. Cube Farm - Bill Blunden
16. The Philip K. Dick Reader
17. The Cuckoo's Egg - Clifford Stoll
18. The Prince - Niccolò Machiavelli
19. The 48 Laws of Power - Robert Greene
20. The Atrocity Archives - Charles Stross
21. Business @ the Speed of Thought: Using a Digital Nervous System - Bill Gates
Author here. They are very different.
Code (a fantastic book, by the way) is a
technical book that provides an introduction to how computers work from first principles. The Switch is a
historical book that describes how the switching components of the first computers evolved in a telecom context (starting from the birth of the telegraph), then were adapted for computing.
There's a bit of crossover insofar as Code uses relays to build an understanding of how digital logic works and has a few brief historical asides. Likewise The Switch provides a few brief technical explanations to help the non-expert reader along. But in general The Switch will not tell you much about how computers work and Code will not tell you much about where they came from.
You might be interested in "
Code Katas" - small, targeted programming exercises. Check out codewars.com, codekata.com, codekatas.org, etc.
Also check out ACM Competitive Programming problems [0]. They're small projects, usually centered around logic, mathematical calculations, and data processing.
If you want a challenge, take one year's problems and try to complete all eight in under five hours without an internet connection (physical reference material allowed).
[0] https://icpc.baylor.edu/worldfinals/problems
- The Road to Character (David Brooks)
- Code (Charles Petzold)
- Soft Skills: The Software Developer's Life Manual (John Z. Sonmez)
- Zero Bugs and Program Faster (Kate Thompson)
- Daemon (Daniel Suarez)
- Algorithms to Live By: The Computer Science of Human Decisions (Brian Christian)
- How to Talk to Anyone: 92 Little Tricks for Big Success in Relationships (Leil Lowndes)
If you haven't already read it, "Getting Things Done" by David Allen is one of the best known productivity books.
Some people I have spoken to say his method isn't for them but I've found it useful, even if I haven't implemented everything he suggests.
I'd also recommend "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. It starts at simple circuits and builds up a picture of how computers work. It has really helped me get my mental models of what's going on inside a computer straightened out!
Agree. Yes, it’s extremely interesting. I look back fondly on my youthful hours/days/weeks spent tinkering with assembly.
And yet. To a junior dev who asked me for advice on this stuff today, I’d just say read Code: The Hidden Language of Computer Hardware and Software, and if you like that then work through Nand to Tetris, and then go back to whatever you need for you day job.
I would say the Telegraph.
In the book [CODE: The Hidden Language of Computer Hardware and Softwar](https://www.amazon.com/Code-Language-Computer-Hardware-Softw...), Charles Petzold talks about how it's foundational to the eventual invention of the computer.
Back then, it also meant coast to coast communications were almost instantaneous. And soon after, transatlantic cable-enabled telegraph boosted commerce between America and Europe.
100% yes.
I started with Elements of Computing: creating a half-adder and then a full-adder chip. But, I couldn't understand how I reached my solution—I was relying on my intuition. Then, I started reading "Code", which takes the reader on a journey from shining flash lights to communicate with your neighbor, all the way to bridging the gap between boolean algebra and building a relay.
magicpossumonJan 22, 2021
tonyedgecombeonSep 10, 2020
https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
jljljlonSep 14, 2018
[1]https://www.nand2tetris.org/.
abnryonFeb 17, 2020
throwaway7645onMar 21, 2017
eugmanonSep 27, 2018
richardodgersonMay 3, 2012
NoPieceonMar 29, 2013
radmuzomonOct 13, 2014
martalistonMay 18, 2017
CHY872onAug 5, 2014
venture0123onOct 19, 2016
rhizome31onAug 18, 2019
For computer architecture, Petzold's "Code" is wonderful.
xor_ax_axonOct 20, 2018
SaxonRobberonMar 27, 2020
One of my favorite books, it covers everything from braille to microprocessors. A great book for anyone interested in technology.
DelfinoonFeb 12, 2020
bprateronMar 12, 2008
jamongkadonJune 17, 2007
jamongkadonMay 31, 2007
eelonNov 29, 2010
http://microsoftpress.oreilly.com/
I've heard (many times) that Code Complete is very good-- I'm strongly considering purchasing it.
pedro1976onSep 19, 2018
[1] https://codepodcast.com/
rramadassonSep 19, 2020
cavivonMay 15, 2020
rramadassonJuly 4, 2020
All of Petzold's books are excellent, in particular; "Code: The Hidden Language of Computer Hardware and Software" should be read by everybody to understand how Computers really work.
danbruconJan 12, 2015
ZelphyronJune 20, 2021
_dokyonJan 15, 2017
[1] https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
splatcollisiononOct 9, 2016
https://www.codewars.com/
notoriousarunonJune 22, 2020
KagerjayonSep 4, 2018
- Thinking fast, and slow
- 7 habits of highly effective people
- Code: The Hidden Language of Computer Hardware and Software
- Getting Things Done
- Choose Yourself
banana_giraffeonNov 4, 2017
harywilkeonFeb 22, 2019
Code: The Hidden Language of Computer Hardware and Software
by Charles Petzold
blueatlasonJune 18, 2020
https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
szcukgonNov 13, 2011
EliRiversonMar 5, 2013
paulirwinonMay 19, 2015
Best of luck with your cruise conference!
darkpumaonMar 2, 2019
Strange Loop has a page with a four year backlog of talks, many of which are pretty good.
mempkoonJune 16, 2017
jimmyjazz14onNov 27, 2010
js2onJan 15, 2013
http://www.charlespetzold.com/code/
GrumpyYoungManonSep 18, 2020
erichoceanonMar 9, 2017
7thaccountonSep 19, 2020
Code by Charles Petzold, The Elements of Computing (Nand2Tetris course book), No Starch Press's Secret Life of Programs, Learning Computer Architecture with Raspberry Pi
barkingonSep 15, 2018
boatsockonNov 20, 2016
link: https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
apgwozonJune 3, 2012
runjakeonOct 10, 2016
richardodgersonMay 3, 2012
veritas3241onApr 27, 2018
steauengeglaseonOct 31, 2011
redleronMar 19, 2014
Edit: Fixed from "Code" to "The Code Book". Although "Code" (Charles Petzold), on a different subject, is also excellent.
vikas5678onMar 31, 2008
grishaonApr 27, 2020
https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_C...
RandomOpiniononNov 28, 2016
kris-sonJune 5, 2017
yodsanklaionSep 19, 2020
Very good book indeed.
mrunkelonNov 25, 2018
joshvmonJune 22, 2015
Not so much programming, but very good if you're interested in how your computer actually works.
DanielBMarkhamonSep 1, 2009
OculusonMar 16, 2014
https://github.com/codecombat/codecombat
d0mineonJune 6, 2016
It starts with sending signals using flashlights and follows the evolution of computers from the ground up (mostly hardware).
mcprwklzpqonFeb 26, 2019
You can't possibly mean his "Code: The Hidden Language of Computer Hardware and Software" or "The Annotated Turing: A Guided Tour through Alan Turing's Historic
Paper on Computability and the Turing Machine"? These books are great.
JamesBarneyonNov 22, 2016
weejonNov 1, 2017
* Code Complete https://www.amazon.com/Code-Complete-Practical-Handbook-Cons...
* Programming Pearls https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp...
* Pragmatic Programmer https://www.amazon.com/Pragmatic-Programmer-Journeyman-Maste...
FartyMcFarteronJan 3, 2021
- Code that most C books/courses would teach you how to write
- Portable C code (arguably portability is one of C's biggest successes!)
- Code that you'd expect to find in the K&R book
scarface74onJuly 16, 2017
The idea of iterative software development - that we now call "agile" was first documented in 1957
The Mythical Man Month was published in 1975 and is just as relevant today as it was when it was written.
Code Complete came out in 1993 and is still relevant.
Even when you start talking about programming languages, both Java and C# have been popular in the enterprise since 2005.
punchclockheroonJan 16, 2018
jacko0onJan 18, 2016
photon_linesonJuly 2, 2019
Quantum Electrodynamics (Feynman): A summary of how almost EVERYTHING works (albeit explained simplistically).
Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger (great insights / worldly wisdom from one of the world’s greatest investors).
The Vital Question: Energy, Evolution, and the Origins of Complex Life
The Princeton Companion to Mathematics (Great overview of mathematics).
Quantum Mechanics: Concepts and Applications (Great QM book).
Wooden on Leadership: How to Create a Winning Organization (Great leadership / management insights).
Why Does the World Exist?: An Existential Detective Story
Sapiens: A Brief History of Humankind (An extremely simplified historical overview of how we got here).
The Book of Disquiet (Serpent's Tail Classics) (Random journaling from one of the world’s greatest prose writers: Fernando Pessoa).
Code: The Hidden Language of Computer Hardware and Software (Excellent explanation on how computers work from bottom -> top).
The Machinery of Life (Includes excellent visuals in biology).
The Character of Physical Law (Great insights in physics by Feynman).
The Goal: A Process of Ongoing Improvement (Great book on business process improvement).
How to Win Friends & Influence People (Nothing groundbreaking, but still a worthy read).
Coders at Work: Reflections on the Craft of Programming (Great info and insights from some of the greatest software developers of all time).
The Periodic Table (Great read and some of the greatest prose writing you’ll ever encounter).
NerDProgrammeronNov 17, 2018
Reading the book is the most beautiful and simple way that a person can really understand what a computer and come to the realization that it is not black magic.
https://www.amazon.com/Code-Language-Computer-Developer-Prac...
JetroidonMar 20, 2018
nacho2sweetonMay 9, 2018
tlrobinsononJuly 20, 2008
http://www.viddler.com/explore/coderush/videos/1/
archielconOct 21, 2019
This one's for you if you want to learn or just recap principles of computers (and read on evolution as well). I just started reading it and found it suprisingly easy to follow. It's perfect if you like things explained step-by-step and in a simple way.
kurrentonFeb 15, 2012
It is genuinely one of the best books I have ever read.
SloopJononAug 26, 2016
msarnoffonJan 21, 2011
Even for a technical reader it's still an enjoyable book. It inspired me to design and make a computer of my own.
eyegoronMar 28, 2020
It's a modern classic (2000). It's less technical and more about the history behind the idea/theories of coding itself. It also explains some basic principles of how computers work, at a high level. Very well written.
vezzy-fnordonDec 29, 2013
http://www.charlespetzold.com/code/ [1]
ACSparksonApr 13, 2007
http://www.codeigniter.com/
msisk6onApr 15, 2015
wuschelonSep 9, 2015
In fact, I found the book very enjoyable. It gives a nice pedagogic twist on how information can processed with hardware.
It has been discussed on HN here:
https://news.ycombinator.com/item?id=1936474
spbonMar 24, 2015
lisperonOct 16, 2016
https://www.amazon.com/dp/B00JDMPOK2/
Takes you from simple mechanical switches all the way to a CPU.
MarkBookonMay 13, 2010
Some high level language VB, C# or Java
then
the first half of Code by Charles Petzold
then
The elements of computing systems by Schocken and Nisan
followed by
the rest of Petzold's book
hackerboosonDec 8, 2014
* Tests - check
* Version control - check
* Code generation - check
* Decoupling, refactoring, metaprogramming, power editing.
It's still worth reading but it needs a second edition...
peterkellyonMar 5, 2016
"Code: The Hidden Language of Computer Hardware and Software", by Charles Petzold
"Rework", by Jason Fried and David Heinemeier Hansson
fauriaonDec 27, 2017
MyrmornisonMay 2, 2018
> It’s easy to read, you can lie down on the couch and enjoy it
No, it isn’t. It’s an awesome book. But it presents diagram after diagram of CPU internals and it would require a huge amount of stamina to get through them. You cannot just turn the pages; the entire point of the book is understanding how these components work in detail. It might be a good book to keep in a nuclear bunker to help rebuild civilization though.
tyleregetoonSep 2, 2014
This is one of the most enjoyable reads I have had in a long time, definitely recommended.
Introduction to Information Retrieval http://nlp.stanford.edu/IR-book/
This is a free digital book, very good so far.
fspearonNov 23, 2017
The Manipulated Man by Esther Villar.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
The Myth of Sisyphus by Albert Camus.
planckscnstonSep 16, 2013
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
julianpyeonOct 13, 2014
laceroonSep 7, 2013
You will learn everything from logic gates/transistors to software.
yoodenvranxonFeb 16, 2017
Charles Petzolds "CODE The Hidden Language of Computer Hardware and Software"
http://www.charlespetzold.com/code/
chamblinonSep 20, 2013
vargavince91onOct 8, 2016
Would help if you shared the end goal. Get hired anywhere? Get hired by Top 4 Tech Company or Hot Startup of the Year? Start a business? Don't get bored? How long is he going to be incarcerated?
I would greatly appreciate if you shared your experience.
mindcrimeonDec 20, 2010
Tracy Kidder's The Soul of a New Machine might be good for your friend.
http://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/03164...
Another good option might be Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Or, how about Coders at Work?
http://www.amazon.com/Coders-Work-Reflections-Craft-Programm...
Another one that I have (but haven't had time to read yet) is Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software by Scott Rosenberg. It might have something that your friend would find interesting.
http://www.amazon.com/Dreaming-Code-Programmers-Transcendent...
Another one that may be inspirational, although it's more about personalities than computer science per-se, would be Steven Levy's Hackers: Heroes of the Computer Revolution.
http://www.amazon.com/Hackers-Computer-Revolution-Steven-Lev...
ZelphyronFeb 5, 2021
js2onMay 21, 2019
Speaking of code, another excellent book along these lines is Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
http://www.charlespetzold.com/code/
jtmsonNov 12, 2020
bdfh42onSep 12, 2008
It will all begin to make sense as you will have a thorough understanding of what is going on at the lowest level. You will never regret acquiring that knowledge.
flor1sonNov 11, 2017
austinpreteonMar 9, 2021
From my understanding of the style I believe The Gene: An Intimate History by Siddhartha Mukherjee is a similar take on genetics.
It stays fairly high level as it doesn't require a molecular biology degree, but Mukherjee gives a fantastic primer on many of the concepts in genetics in a deeply interesting and human fashion. It's always refreshing when non-fiction books manage to weave a narrative throughout in a way that feels natural.
cbhlonJan 18, 2016
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
(http://amzn.com/B00JDMPOK2)
bawiggaonJuly 26, 2017
The 4-Hour Body - Tim Ferriss - Lot's of anecdotes from Ferriss' own experiments.
S. - by J.J. Abrams - Layers upon layers. Unlike anything I've read before and a true Abrams experience. Check it out if you haven't heard of it!
Code: The Hidden Language of Computer Hardware and Software -
Charles Petzold - Fascinating PopSci book on the origins of Computers and Code. Each chapter seems to build on the knowledge you've built from previous chapters. Interesting read for the programmer/computer engineer and VERY approachable.
rajuonApr 30, 2008
Having said that, I have no issues with electronic format of books (except they make my eyes hurt). Sitting at a computer reading a good book works just as well as reading a paper book. If you are that enticed by the web, unplug your ethernet cable.
On a side note, has anyone read "Code: The Hidden Language of Computer Hardware and Software" by the same author. I am halfway through it, and I think its a phenomenal book.
fossuseronOct 23, 2019
Which does a great job building up computing from bits all the way to a adders, CPUs, and assembly language (with the historical background around it too).
I think the easiest way to get an idea for Quantum Computing and what the difference is comes from watching a specific example, I thought this example of Shor's algorithm was pretty good: https://www.youtube.com/watch?v=wUwZZaI5u0c
diego_moitaonDec 23, 2019
Code Complete is a problematic book. It has some good ideas but also has some very bad ones (cone of uncertainty, 10 times productivity in good programmers, etc).
Design Patterns is mostly obsolete. Functional programming techniques made a lot of Object Oriented techniques irrelevant (e.g.: observer pattern vs callbacks with lambdas).
Art of Computer Programming is the book everyone mentions but no one reads. A classic that people actually read is Structure and Interpretation of Computer Programs.
My recommendations: "Code" by Charles Petzold,"Don't make me think" by Steve Krug, Working Effectivelly with Legacy Code, by Robert Feathers, Clean Code by uncle Bob,..
GrumpyYoungManonAug 22, 2016
cfedukeonJune 22, 2015
Java Concurrency in Practice (2006) is older but relevant and clearly describes concurrency on the JVM. A must read for any Java, Scala, Clojure, etc. software engineer; well-written, enjoyable, concise.
Practical Object Oriented Design in Ruby by Sandi Metz is a fun read packed with good principles for working in Ruby that are applicable in general to object oriented programming.
Smalltalk Best Practice Patterns by Kent Beck is worth a read because the general principles are applicable to any OOP language.
Clean Code by Robert Martin is excellent but a time commitment. (If you had to pick between SICP and Clean Code because time is at a premium I'd err on the side of Clean Code for practicality. Writing maintainable code is paramount.)
The Joy of Clojure (Fogus/Houser) is excellent and mentally digestable even if you have no Lisp or Clojure background.
stephenboydonFeb 24, 2016
DanBConOct 8, 2012
(http://www.charlespetzold.com/code/)
The Art of Electronics Lab Book has plans for building a computer and it's pretty well documented, although very old.
(http://www.amazon.co.uk/Laboratory-Manual-Electronics-Paul-H...)
Another good way to learn is to find a circuit diagram and run it by pencil. Just like people learn programming by writing code on paper and running the software with a pencil; writing the variables and such. Here's one (http://www.nathandumont.com/sites/nathandumont.com/files/ima...) (not a great example) but you try to work out what values you need where to get various bits working.
When you get a better circuit diagram you can create a memory map. Here's a link that describes what I mean. (http://www.clear.rice.edu/elec201/Book/hardware.html)
Good Luck!
alexrsononJune 11, 2013
showerstonJune 22, 2012
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Even having understood for years how computers work in principal, nothing quite put it together for me like this book.
There's a similarly great book on the history/methods of cryptography called "The Code Book" by Simon Singh that I recommend too - http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/...
It's great because it traces the history but also walks you through how the cyphers actually worked, and provides the best intros I've ever seen to public key and quantum cryptography.
grumpleonFeb 17, 2020
1. https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
harry8onMay 3, 2018
It's one thing to say, I'd do it different. I'd have this book, or that book, or my list would have more this focus or that focus. It's a whole different beast to claim this list is "poor." And it is stupid to do so without countering with a list of exactly 5 books. Yes stupid.
I have read all 5 books. All 5 are excellent books. All 5 are very highly regarded in the field of programming and computer science. The descriptions that are attached to the list in TFA are accurate and useful to anyone reading the list. If there's a book on that list you haven't read, I'd say read it. This list simply isn't in the same postcode as "poor" and the descriptions of it as poor can't back it up in a meaningful way. Maybe there's another reason why the general mood of this thread is hypercritical? Smells a bit though, don't it? Do you really think if Guttag submitted that list the tone here would be the same or would the whole "this book is better" comments be rather more respectful of the original list and author? I've stated my opinion and why. You may of course, disagree.
Here's mine, Petzold "Code", Kernighan and Pike's "Practise of Programming", "The Pragmatic Programmer", Abelson and Sussman "Structure and Interpretation of Computer Programs" (with video lectures on youtube), Richard Stevens "Unix Network Programming" or maybe "Advanced Programming in the Unix Environment" - Which betray my OS accent. I'm not sure it's better than Ana Bell's. You can decide for yourself on that point.
dustingetzonOct 31, 2011
compare books like CODE, SICP, and related books discussed below, to books like Beautiful Code, Higher Order Perl, Mythical Man Month, Seven Languages in Seven Weeks, tons of whitepapers.
do I really need to read CODE? Seems like a bottom-of-stack book that will never quite make it to the top.
jaekwononJune 30, 2013
----
The the government's claims of transparency and audibility of the NSA's PRISM program is analogous (if not directly related) to the claims of Palantir's. Search for "immutable auditing" below:
http://www.palantir.com/wp-content/static/pg-analysis-blog/2...
But even with such an audit trail to the core, it is known that it isn't sufficient:
http://www.informatik.uni-freiburg.de/~accorsi/papers/imf09....
I wager that for any given system that touts immutable audibility, there is a way to hack around it. Privacy through automated means is impossible. At best it is a kind of DRM that the NSA can easily work around secretly if it wanted it. What we should be advocating instead is Perfect Forward Secrecy in our internet architecture, and the dismantling of PRISM and related data centers.
Prof Lessig, in your book "Code", you are using the issue of copyright to condone the current direction of the surveillance state and offering red herrings as "balancing" compromises. Such a balance is impossible in the face of concentrated storage of (even encrypted) storage data by intelligence agencies. As long as the NSA can tap the wires and record information in vast databases for cold storage, we are absolutely in risk.
More technical discussion here: https://news.ycombinator.com/item?id=5966942
P.S., FTFY: "I have not, AND would not ever, accept money from Palantir..."
rb808onMay 2, 2018
One of the things that initially bugged me with lots of functional programming was that it broke many of the Code Complete rules like having one operation per line.
Does this mean that Code Complete is not relevant for functional code or maybe there is a new edition required I"m not sure.
erichoceanonMar 3, 2016
My kids enjoyed this book, similar topic, but fairly playful in how it was put together and an extremely gentle introduction without actually shying away from how things actually work. It's hard to imagine a reader not coming away with a much better understanding of what computing is all about. It starts at gates and works up to actual (machine) code at the end of the book. Very good diagrams throughout.
Despite being from 2000, I don't think it's become outdated. I'd love it if there was a sequel that covered putting things together with a cheap FPGA.
[0] http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
alexgmcmonJune 20, 2021
I think Code by Petzold is decent in that it's a book you can read in bed etc. but it spends a long time discussing mechanical relays as an analogue and later discusses various processors in depth.
I think Nand2Tetris is slightly better in that it focuses on what I'd consider to be the most important stuff, but it's an actual course and requires significantly more effort.
Nand2Tetris is probably the best course I've ever done though, including my university studies in Physics and ML. It's fun and you learn loads.
burritofanaticonAug 7, 2019
At the beginning of this year, after trying to explore what I wanted to do for the next stage in my life, I decided to get back into the profession as a solo practitioner and transition away from software development. I'm officially back to practice, and I'm surprisingly happy with my professional life - something I never thought would really be possible.
If you're a practicing lawyer who wants to give yourself an edge as a lawyer, I think it's more important to understand the concepts and principles as opposed inventing or finding the barely existent job of coder/lawyer for a firm - I don't know the name of the role, and I've seen it touted by legal tech folks - but these are elusive. Understanding what's possible, I believe, is by far way more important. For example, I've worked with countless non-coding project/product managers, and they've been great contributors to the process in software development.
My recommendation for lawyers? Do the Python track on Codecademy over a summer and read Code: The Hidden Language of Computer Hardware and Software.
jtmsonJuly 25, 2018
runjakeonMar 30, 2021
https://www.amazon.com/Code-Language-Computer-Developer-Prac...
2. Learn C.
3. Learn whatever interests you next.
throwamononMay 28, 2021
https://www.amazon.com/Code-Language-Computer-Developer-Prac...
mindcrimeonJuly 15, 2016
Code by Charles Petzold
Artificial Life - Steven Levy
Time Reborn - Lee Smolin
The Singularity is Near - Ray Kurzweil
Surfaces and Essences - Douglas Hofstadter
How to Measure Anything - Douglas Hubbard
-- One of my favorites is How Not to Be Wrong by Jordan Ellenbreg
I have that on my list of "to read real soon now". Sounds fascinating.
fossuseronMar 8, 2020
Working Effectively with Legacy Code was also impressive, I think I just read it too early before I was good enough to really understand and use it.
TDD is also worth reading (and it’s short) to get a sense of tests if like me, it’s something you’d never really done before when learning.
If you like soul of a new machine, you’d probably like Halt and Catch Fire on Netflix. I’d also recommend the Phoenix project and the dev ops handbook.
Code by Charles Petzold is one of my favorites to recommend, something every CS student should read.
I’ll have to check out the others on this list too.
DarkTreeonJuly 30, 2014
A great book that explains how computers actually work through number systems and the logic that acts on those systems. You start with the theory behind binary numbers and work your way through electrical circuits, logic gates, RAM, transistors, and the operating system as you build your fundamental knowledge of the inner workings of computers. It's pretty cool.
iN7h33nDonApr 9, 2015
Digital Books:
Things on my List:
Things I recommend:
EDIT:
Short Reading I Recommend:
ybakosonAug 31, 2011
I use both Code and TECS books together. It is an incredibly effective class. I've found many students in CS curricula "drift" through the topics without really grasping anything, only to graduate feeling they haven't really learned much.
This material takes the essence of numerous CS topics and educates the reader by doing and building, rather than only reading and theorizing.
If you are a developer and don't know what happens when you execute a program, you really need this book (and CODE by Petzold).
keithwarrenonDec 29, 2013
It is a great book written by one of the great computer scientists of our time. It tracks the evolution of code and computing from morse code and braille on to number systems, early processors and even into how processors handle this information. When I hire someone for nearly any position, I buy them this book.
*Don't let the title fool you, this is not some discussion about high level languages, this is the down and dirty stuff.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Minor49eronAug 17, 2021
I would also recommend the book "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold as a general introduction.
adambrattonSep 14, 2013
It starts with an abacus and 400 pages later of flip-flops, memory gates, and microprocessors it leaves you with a fully built modern computer.
That said, I would not put it in a beginner category. I read it after 4 years of ASM programming and building electrical gadgets and I still had to stop and reread chapters quite a few times until I got all the concepts out of it.
If you're at all interested in how all the parts in your computer interact and work together at the lowest level, READ THIS BOOK.
listiconOct 17, 2009
"Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Being a CS major, I bought this book for the sheer amazement at how the gist of everything I had learned about computers in the university could be conveyed in one book in such easy and fun manner. The learning curve is so gentle, it just couldn't be easier. I cannot recommend this book enough to _every_ person who really wants to understand how computers work.
jasonlotitoonDec 6, 2011
1. http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
TYonSep 30, 2010
PS If you need a bit more beautiful simplicity go and read about NAND logic and realize that they are all you're ever going to need.
A wonderful demonstration of how this can be done can be found in the "The Elements of Computing Systems". Homepage: http://www1.idc.ac.il/tecs/
This course will show you how to build a simple but modern computer stack starting with nothing but simple NAND gates. Make sure to do the exercises and be prepared to invest a lot of time if you buy this book, otherwise you'll just waste your time.
I consider TECS and Charles Petzold's "Code" to be the most approachable books for those who want to understand what's really happening "under the hood" of your computer and can't recommend them highly enough.
gustavo_duarteonMay 7, 2009
The idea is that when first creating a method or function, you write out in comments what you're going to do in a 'why' level (eg, 'keep track of resources') rather than a 'how' level (eg, 'increase cntFooBar by 1').
You then start 'filling out' the code to do what you 'designed' via the comments. Hopefully you end up with a better designed routine, and you get free comments to boot as they now explain what the code is doing.
When I first read Code Complete as an impressionable teenager I tried it out and liked it, but I have since had a change of heart on this issue and other Code Complete wisdom. I rarely comment inside methods anymore.
eyegoronMar 28, 2020
On a side note, people keep recommending masters of doom to me, I definitely need to check it out myself.
davidddavidsononApr 21, 2017
DanBConJune 14, 2012
(http://www.charlespetzold.com/code/)
Or the Art of Electronics Student Manual, which goes through the process of building a computer.
(http://www.amazon.co.uk/The-Art-Electronics-Student-Manual/d...)
One thing that really helped me was getting a circuit diagram for a simple 8 bit computer, and then creating a memory map by tracing the address lines and writing what numbers were needed to enable addressing or not. Uh, I've done a really poor job of explaining this. Wikipedia does slightly better - (http://en.wikipedia.org/wiki/Memory-mapped_I/O) but there must be something even better than that.
These slides have the limitation of being slides, but they seem (at first glance) to be pretty good.
(http://research.cs.tamu.edu/prism/lectures/mbsd/mbsd_l16.pdf)
6f666579onJan 24, 2018
Whenever I read the mailing list, or threads related to it, I don't understand 99% of the stuff. Do I need to know C _very well_? Do I need to be familiar with kernel? If so, how do I go about doing that? At the moment I'm reading "Code: The Hidden Language of Computer Hardware and Software".
jtmsonJuly 27, 2018
Code: The Hidden Language of Computer Hardware and Software
I just love this book! It was a joyous adventure of discovery the first time through. Subsequent reads always yield new insights.
mindcrimeonJan 2, 2017
1. Mastering the Compex Sale, by Jeff Thull. If you're interested in B2B selling, I highly recommend this book. Thull's approach is dramatically different from the old-school "Alec Baldwin rant in Glengarry Glen-Ross" stuff you may have been exposed to. He encourages a model where you act more like a doctor, or a detective, and practice "Always Be Leaving" instead of "Always Be Closing".
2. It's Not The Big That Eat The Small, It's The Fast That Eat The Slow by Jason Jennings. The title is a good summary. Jennings makes an argument for the importance of "speed" as the primary driver of competitive advantage. There's more too it that that, so just read the book.
3. Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. If you didn't take, or have forgotten, classes like Computer Architecture or Digital Logic, this is a great book for getting your head around the low level details of what's happening in side a digital computer. Petzold starts from VERY basic examples (using a flaslight to morse code messages to your friend across the street) and slowly builds up to a full-fledged (if somewhat minimalistic) CPU.
Edit: some unlucky soul commented Atlas Shrugged and got downvoted / flagged / whatever to death. I didn't read AS in 2016, but I have read it, and I do recommend it to everyone. It has its issues, but it's absolutely a book everyone should read, whether you agree with Rand's ideology or not. And if you aren't familiar enough to Rand's ideology to know if you agree or not,that's all the more reason to read Atlas Shrugged (or The Fountainhead).
bprateronOct 19, 2014
pacaroonMar 20, 2013
[1] http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
cjbaronApr 10, 2015
Seven Concurrency Models in Seven Weeks - Paul Butcher
http://www.braveclojure.com/
azelfrathonOct 31, 2011
I still had no idea how 10010011000110101001010 etc etc allowed me to play World of Warcraft. There was a small part of me that hoped beyond hope that computers were magic and there was some grand conspiracy going on to cover that fact.
Then I read CODE.
My hopes were shattered, but they were replaced by something much more treasured: Understanding.
mulcaheyonMay 19, 2016
As an example of its utility, I really like its description of formal systems which are a somewhat simplified version of context free grammars. There are many other concepts described in that book that give similar but more intuitive explanations of CS concepts that helped me understand them as part of "the bigger picture."
CODE: The Hidden Language of Computer Hardware and Software, which is mentioned on here a lot, was helpful for similar reasons.
mindcrimeonJan 16, 2017
Code by Charles Petzold.
Of the ones that I haven't finished, but have at least looked at, I think I'd say:
Machine Learning for Hackers by Drew Conway and John Myles White
and
The Master Algorithm by Pedro Domingos
GrumpyYoungManonAug 19, 2016
Charles Petzold's "Code: The Hidden Language of Computer Hardware and Software" is also well regarded, but is aimed more at non-technical people.
adolfopaonAug 26, 2012
- How to design programs (http://htdp.org)
- The Little/Seasoned/Reasoned Schemer.
- Code: The Hidden Language of Computer Hardware and Software by Petzold
- Coders at work by Peter Seibel
- The Pragmatic Programmer by Hunt and Thomas
- Code Complete by McConnell
For intermediate/experienced people:
- Structure and Interpretation of computer programs (http://mitpress.mit.edu/sicp/full-text/book/book.html)
- Software Tools in Pascal by Kernighan and Plauger.
- Programming Pearls by Bentley
- Smalltalk 80: The Language and Its Implementation by Adele Goldberg.
- Paradigms of Artificial Intelligence Programming by Norvig
- A Discipline of Programming by Dijkstra
While I've ommited some important language specific books, and ignored essential areas (algorithms, discrete math, hw arquitecture), I think this is a good starting point.
gary__onDec 11, 2014
http://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/03164...
Stealing The Network: How to Own the Box. This is a collection of fictional accounts of "hacking" written by hackers. Real world techniques are described though its in lightweight detail, the aim of the book is more to give an insight into how an attacker thinks. It's quite an enjoyable read too.
http://www.amazon.co.uk/Stealing-Network-How-Own-Cyber-Ficti...
Kingpin: How One Hacker Took Over the Billion-Dollar Cybercrime Underground by Kevin Poulsen. This one's a true story.
http://www.amazon.co.uk/Kingpin-Hacker-Billion-Dollar-Cyberc...
Code: The Hidden Language of Computer Hardware and Software By Charles Petzold. I still have to read this one, but I expect it would fit in with what you're after quite well.
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
DanBConJune 22, 2020
The humour is subversive, the illustration is lovely, and these ("This is not my hat" is another) are great books for younger children. My child loved it, and the people I've given this to have gone on to buy other books by the writer or illustrator.
"Mr Birdsnest and the House Next Door": https://www.amazon.co.uk/Birdsnest-House-Next-Door-Little/dp...
Little Gems are a set of books printed on reduced contrast paper, with a large clear font. They're short, simple, but fun. They're good for younger readers or for slightly older reluctant readers. My child enjoyed reading this book, and loved the illustration. The other child I gave this to took out other books in the Little Gems series from the library, and bought other Julia Donaldson books with her pocket money.
"Code: The Hidden Language of Computer Hardware and Software" https://www.amazon.co.uk/Code-Language-Computer-Hardware-Sof... I had a friend who knew a lot about the software, and knew a lot about hardware but their hardware knowledge was a bit patchy. Code helped solidify their knowledge. If I could have afforded it I would have given them The Art of Electronics and the companion Student Manual. (This was in the 1990s. I haven't read the new version and I don't know how well it works today.)
"Bomber Command" https://www.amazon.co.uk/Bomber-Command-Pan-Military-Classic... I liked this book because it describes how we (the UK) went into world war 2 with ethical notions around not bombing civilian populations and ended up fire-bombing several heavily populated German cities. It's also eye-opening about the scale of this part of the war, and the cost in lives of aircrew.
kbelbinaonNov 25, 2013
http://en.m.wikipedia.org/wiki/Code_Rush
mtrnonApr 29, 2012
whytakaonOct 10, 2020
While they haven't given me any expertise on how to actually use these technologies to solve intricate problems (only experience and true depth can do that), they have given me a near-complete picture of what ordinary computers do today. Nothing is magic. Everything is a logical operation.
I only regret I hadn't read these back when I was a teenager.
PS. Next thing I would like to learn is the general design of modern CPUs and branch prediction.
awonghonJan 12, 2017
I think the format is perfect because of several factors:
1. for books I read through once and never actively reference again, or very seldomly
2. I don't have to wait for the paperback to come out
3. I don't have the eye strain of reading on an ipad or my phone
4. For a large majority of my purchases it doesn't make sense to own a physical copy of the book. It seems like it would be a hassle to own and carry and take up space. (also see #2)
5. a kindle is light and cheap enough that I don't have to stress too much about breaking it or leaving it somewhere or it being conspicuous to have out in public
However, the kindle fails at some important things:
It's not in color, so it doesn't do well for books that are image heavy (even in black and white) - the display is a little too small and any images in the book tend to look terrible for some reason (even though the supposed dpi is relatively high) -which brings me to your point, that in general I find that phones, tablets and kindles are not particularly good at replicating the browsing experience of a certain kind of book.
I don't think all books fall into this category, but some important ones do and I can't imagine not having a physical copy for that reason.
The last one that comes to mind for me is Code: The Hidden Language of Computer Hardware and Software. I like browsing through all of his examples and diagrams and flipping back and forth through the different parts that interrelate to each other.
I've never found an electronic browsing experience that was as good as a physical book. (unless I was at the point of wanting to implement some formal system of organizing and linking my ideas, in which case I think a computer would be preferable)
The kindle particularly fails at this experience, as an integrated piece of hardware / software it's merely competent and has a lot of rough edges. It's not as seamlessly integrated in the way iphones (for example) are.
GrumpyYoungManonSep 19, 2020
For a gentle overview of how digital logic and CPUs work, Charles Petzold's book "Code: The Hidden Language of Computer Hardware and Software" is solid introduction. Nisan and Schocken's textbook "The Elements of Computing Systems" and the lessons at the NAND2Tetris site (https://www.nand2tetris.org/) are good if they want to get hands on with the subject.
There are a variety of robotics and electronics interfacing kits based off the Arduino and Raspberry Pi available through Adafruit and SparkFun. If they're more interested in the digital logic side, Digilent provides FPGA boards and test instruments intended for use in educational environments that also include tutorials https://store.digilentinc.com/the-zynq-book-tutorials-for-zy....
[EDIT] I've seen some recommendations for the video game Factorio in this thread and, odd as it may sound, it would not be a bad gauge of interest. Digital logic is all about getting the right signals to the right place at the right time and doing the right thing with them and Factorio definitely teaches analogues of that.
[EDIT 2] Another interesting project for them might be to build a computer from chips. Ben Eater has a design, tutorials, and sells kits for building a 6502 computer (Same CPU as the Apple II) on a breadboard: https://eater.net/6502. (Not sure I'd want to try that without a 5V tolerant logic analyzer but they're cheaply available nowadays, e.g. https://www.seeedstudio.com/Logic-Pirate-p-1750.html) Note that I don't vouch for any of these, they're just examples of what's available out there that your friend can investigate if it piques their interest.
pan69onJuly 18, 2010
http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
bcaa7f3a8bbconMar 3, 2019
> Extant histories of the internet favor either heroic or deterministic narratives. On the determinist side, we have Paul Edwards’s The Closed World (1996), Fred Turner’s Democratic Surround (2013) and From Counterculture to Cyberculture (2006), John Markoff’s What the Dormouse Said (2006), and others that describe the internet as the result of collisions between large-scale Cold War policies or zeitgeists. With some variations, these narratives portray the digital revolution as born from the improbable marriage of countercultural hippie experiments and the military-industrial complex.
> On the heroic, individualist side, we have Steven Levy’s Hackers: Heroes of the Computer Revolution (1984), Katie Hafner and Matthew Lyon’s Where Wizards Stay Up Late (1996), Michael Hiltzik’s Dealers of Lightning (1999), Walter Isaacson’s Innovators (2014) and Steve Jobs (2011), Leslie Berlin’s Troublemakers (2017), and Adam Fischer’s Valley of Genius (2018), whose titles speak for themselves. Histories in this genre extoll the whimsical personalities and talents of digital entrepreneurs and inventors, of whom Jobs is the prime exemplar. Some do acknowledge the contingencies that facilitated the rise of these digital “geniuses.” But overall, they tend to represent Silicon Valley as a titanic battleground that proved the superior mettle of its winners. Both extremes are tempting in their clarity; both make for a gripping story. Occasionally—as in Liza Mundy’s Code Girls (2017) or Margot Shetterly’s Hidden Figures (2016)—a simultaneously individualist and Marxist approach unveils underappreciated digital counter-heroes.
DanBConJan 1, 2012
Yes. Get a breadboard and powersupply and some jumper leads and some LEDs and start building stuff.
Then get some books; Code (the petzold book) and Art of Electronics are both good examples to start really building stuff, and understanding what's going on.
When you've got beyond the initial introduction you want to start using an oscilloscope to start seeing things like leading edge or falling edge, and measuring the times, and seeing how timing issues come in to play when you have a long chain of slow logic gates.
Fun (as in puzzles and stuff) things to do include building one type of logic gate using a different set of gates; use Karnaugh maps etc.
This is a really good way to get used to logic states and timing and using a scope to trace a signal path and compare what you're getting with what you think you should be getting.
Don't forget with real world builds to include de-coupling capacitors.
I was taught to create a memory map from a circuit diagram, which I guess is handy if you're into that kind of low level stuff. (Probably embedded stuff now.)
EDIT: Thanks to Shabble for the correction!
daveloyallonJune 28, 2016
Neat!
I just figured that you could redesign common ICs so that they had a new wire akin to the "carry" bit. I called it the 'done' wire, and I figured you could just tie it to the CLK of the next IC. Ya know? So 'doneness' would propagate across the surface of the motherboard (or SoC) in different ways depending on the operation it was performing. Rather than the CLK signal, which is broadcast to all points...
(I know that my idea is half baked and my description is worse. I'm glad I found this PDF!)
I knew the big advantage would be power savings. I called the idea 'slow computing', and I envisioned an 8-bit style machine that would run on solar or a hand crank and be able to pause mid calculation until enough power was available... Just like a old capacitor-based flash camera will be able to flash more frequently when you have fresh batteries in it.
You'd just wire the power system up with the logic. Suppose an adder fires a "done" at some other IC. Now, put your power system inline, like MiTM... When it gets the "done", it charges that capacitor (a very small one? :) ) and only when enough power is available does it propagate the "done". ...Maybe the "done" powers the next IC. I dunno.
As I said, half baked. Glad to find out that I'm not the only one that dreamed of 'clockless', though!
uolaonOct 8, 2016
SICP: "We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells."
Code: "You're 10 years old. Your best friend lives across the street. In fact, the windows of your bedrooms face each other. Every night, after your parents have declared bedtime at the usual indecently early hour, you still need to exchange thoughts, observations, secrets, gossip, jokes, and dreams. No one can blame you. After all, the impulse to communicate is one of the most human of traits."
yumaikasonAug 8, 2016
Also had a strange case of loaning out C# 4.0 in a Nutshell and never getting it back, but I would do it again (with an updated version). Albahari is good at writing a reference without being too boring, and C# has some legitimately interesting sides in how it does some things, like it's dynamically compiled regexen.
purpledoveonOct 17, 2010
I'm not really sure I buy the idea that any of these fears would be substantial enough to impact the allocation of time on programming unless the person in question had some issues to work out such as procrastination.
Afraid of what others will say? Don't tell them. The practice is still going to be worthwhile.
Afraid of not finishing? Break down the project into small chunks, write tests to make sure the small chunks work properly, and iterate between planning out the next steps and executing the next step in the queue (in theory, any number of subsequent steps can be added, removed, deleted, or re-arranged after executing any single step).
Afraid you won't know how to solve a problem? Which problem? Did you read the Wikipedia article and consult the relevant textbooks?
Afraid you're not working on the right thing? First figure out what the right thing is, and justify why it is right. If you're working on anything else, stop. Now start planning how to approach the right thing. You are now working on the right thing, for a discussion on when to transition to coding, see Code Complete.
sbuccinionDec 13, 2012
Here's what I've backed, and how they've turned out:
Successful
* Sunski Sunglasses - A resounding success. Just got my pair today, and the item was exactly as described. The glasses, packaging, and design is all top-notch
* Wear You Live - A local company (for me at least) that used the money to purchase the initial equipment. I received all items promptly and on schedule.
* Cowboy Comb - Not as ambitious (they just wanted enough interest to make producing the combs profitable) but I got my item quickly and exactly as described.
* Freaker USA - Upgraded coozies. Another project that is putting people in my area to work, plus the updates were hilarious. I got my items exactly as described and on time.
* The Jay DeMerrit Story - Used the Kickstarter campaign to build buzz and raise funds for additional footage. Ended up getting the film a few months later.
Pending
* Castle Story - A Minecraft-esque strategy game. They've released alpha, and while I haven't played it, they've been really good about updating me and I think they're actually going to ship this game...eventually.
* Fight for Space - A movie currently in production, but they seem to be making solid headway. I honestly have no idea how this one is going to turn out.
* Code Hero - This is the one all the buzz has been about recently, but apparently they've been actually making progress.
joe_the_useronJune 28, 2016
Also, I read something like Code Complete for the same reason I've read the parent blog. Even though I feel like I know the basic points here, writing good code inevitably is a trade-off and so one more idea of how to make the trade-off is useful.
gooseusonAug 7, 2016
Here are some books I've given as gifts recently:
* The Knowledge: How to Rebuild Civilization in the Aftermath of a Cataclysm, Lewis Dartnell[1]
* The Black Swan, Nassim Taleb[2]
* Siddhartha, Hermann Hesse[3]
* The Happiness Trap, Russ Harris and Steven Hayes[4]
* Code, Charles Petzold[5]
[1] https://www.amazon.com/Knowledge-Rebuild-Civilization-Afterm...
[2] https://www.amazon.com/Black-Swan-Improbable-Robustness-Frag...
[3] https://www.amazon.com/Siddhartha-Hermann-Hesse/dp/161382378...
[4] https://www.amazon.com/Happiness-Trap-Struggling-Start-Livin...
[5] https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
mindcrimeonDec 8, 2016
by Jason Jennings & Laurence Haughton
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
What Is Relativity?: An Intuitive Introduction to Einstein's Ideas, and Why They Matter by Jeffrey O. Bennett
Spooky Action at a Distance: The Phenomenon That Reimagines Space and Time—and What It Means for Black Holes, the Big Bang, and Theories of Everything by George Musser
Towers of Midnight (Wheel of Time, #13) by Robert Jordan & Brandon Sanderson
Second Foundation by Isaac Asimov
Just started reading The Penguin History Of The World by J.M. Roberts & Odd Arne Westad. I'd always found history interesting in a general sense, but other than a couple of specific periods that I found interesting (the American Revolution, WWI, WWII), I had not studied the subject in much depth. So I figured I'd start with a good single-volume overview of World History as a whole, then go back and dig deeper into additional areas that pique my interest.
So far it's pretty fascinating. It's especially interesting when you see how elements of our modern world have roots that can be traced back for millennia. It's also fun to note the extent to which geography and climate have impacted the evolution of human civilization(s). It gives you a lot to think about in terms of dealing with anthropogenic climate change. Even if human civilization isn't wiped out completely, we could certainly see massive changes in the nature of our civilizations as a result. At least history seems to suggest so.
hiddenfeaturesonJune 10, 2013
Electrical circuits either carry a current (binary 1) or they don't (binary 0). [Ignoring the fact that you could also measure the AMOUNT of current carried here] Because of this underlying limitation in electrics you need to make do with just a binary system in computers.
Depending on the amount of time remaining I would either go into more depth or point him towards "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold (http://amzn.com/0735611319)
ohduranonJuly 27, 2019
A good primer on the history of CS is probably Code, The Hidden Language of Computer Hardware and Software, by Charles Pretzold. I've put together some notes on it here: http://alvaroduran.com/code.
Any feedback is much appreciated!
joshvmonNov 16, 2013
https://blogs.oracle.com/ksplice/entry/hello_from_a_libc_fre...
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.htm...
http://timelessname.com/elfbin/
A wee bit heavy, but it's comprehensive. It deals with what happens when you run code, how the architecture of the computer works (by and large) including at the logic level:
http://www.amazon.co.uk/Computer-Systems-Programmers-Randal-...
If you want to go lower (and higher).. look at Understanding the Linux kernel for a good understanding of how an OS is put together, with specific examples i.e. Linux.
Code, by Petzold, deals with logic and computers from the ground up. It starts with relays and builds them up into gates and usable arithmetic blocks.
http://www.amazon.co.uk/Code-Language-Computer-Hardware-Soft...
http://www.amazon.co.uk/Understanding-Linux-Kernel-Daniel-Bo...
The physics is fairly simple, at least from a CRT or LED display perspective. Gets more tricky dealing with interconnecting microprocessors because a good chunk is vendor specific.
I think this kind of project is well suited to a guide on how to build a computer from the ground up, starting with logic gates, writing a real time OS and developing a scripting language that will run and compile on it. Then you can skip a lot of largely extraneous stuff and have a solid understanding of how the hardware works.
intellegacyonOct 28, 2012
6.00x (MIT's edX Intro to CS course), Python
https://www.edx.org/courses/MITx/6.00x/2012_Fall/info
CS101 (Udacity's Intro to CS course), Python
http://www.udacity.com/overview/Course/cs101/CourseRev/apr20...
Python the Hard way (Zed Shaw's online book), Python
http://learnpythonthehardway.org/book/
Code Academy, (Python track), Python
http://www.codecademy.com/tracks/python
I consider 6.00x and CS101 to be my CS foundation and Python Hard way and Code Academy to be brush-up on the Python/programming. Working through all these in tandem really hits my brain in 4 different but complementary angles.
jrubinovitzonFeb 8, 2012
I'd go with "Code: The Hidden Language of Computer Hardware and Software" or a Donald Knuth book.
davidxconSep 18, 2012
It starts off with a story of two kids communicating to each other with flashlights in Morse code, and slowly builds up into how a computer works.
TwinklebreezeonApr 14, 2021
I read for escapism, or to explore other worlds in my imagination. Reading gives me something fantastical to think about. If I want something real to think about I use the internet. Books have never filled that role, and I've never really considered them for it. Am I missing out? Should I try and shake my prejudice against non-fiction?
[1]: Code: The Hidden Language of Computer Hardware and Software
spbonJune 11, 2015
This is one of the reasons I barely recommend any intro articles in Lean Notes (http://www.leannotes.com/): almost every single one is just a stream of incomplete and incorrect statements about how the world works, based on the author's myopic personal experiences.
Rather than properly generalizing and consolidating what needs to be said to convey a full understanding of the topic, most intros settle for the first example they can think of that could be remotely construed as related to the words they've previously used for whatever subject, regardless of whether it has meaning in any context. (Example: saying that type safety prevents you from trying to "multiply seven by cats".)
It seems like a pretty Dunning-Kruger thing: the less broad your knowledge is, the more justified you feel in writing an introductory text to the field.
The only time I've ever seen somebody actually qualified to write an introductory text actually doing so (as I can immediately recall) is Charles Petzold's [Code: The Hidden Language of Computer Hardware and Software][Code] (although I suspect, from the few excerpts of it I've seen, that Brian Kernighan's "D is for Digital" is good, too).
[Code]: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
mindcrimeonMay 29, 2017
1. Neuromancer - William Gibson
2. Snow Crash - Neal Stephenson
3. Hackers - Heroes of the Computer Revolution - Steven Levy
4. How to Measure Anything - Douglas Hubbard
5. Godel, Escher, Bach - Douglas Hofstadter
6. The Pragmatic Programmer - Andy Hunt and Dave Thomas
7. The Soul of a New Machine - Tracy Kidder
8. Code - Charles Petzold
9. The Shockwave Rider - John Brunner
10. Ambient Findability: What We Find Changes Who We Become
Book - Peter Morville
11. Don't Make Me Think - Steve Krug
12. The Design of Everyday Things - Donald A. Norman
13. The Mythical Man-Month: Essays on Software Engineering - Fred Brooks
14. Decline and Fall of the American Programmer - Ed Yourdon
15. Cube Farm - Bill Blunden
16. The Philip K. Dick Reader
17. The Cuckoo's Egg - Clifford Stoll
18. The Prince - Niccolò Machiavelli
19. The 48 Laws of Power - Robert Greene
20. The Atrocity Archives - Charles Stross
21. Business @ the Speed of Thought: Using a Digital Nervous System - Bill Gates
cfmcdonaldonMay 28, 2021
There's a bit of crossover insofar as Code uses relays to build an understanding of how digital logic works and has a few brief historical asides. Likewise The Switch provides a few brief technical explanations to help the non-expert reader along. But in general The Switch will not tell you much about how computers work and Code will not tell you much about where they came from.
MikeTVonApr 27, 2017
Also check out ACM Competitive Programming problems [0]. They're small projects, usually centered around logic, mathematical calculations, and data processing.
If you want a challenge, take one year's problems and try to complete all eight in under five hours without an internet connection (physical reference material allowed).
[0] https://icpc.baylor.edu/worldfinals/problems
tranvuonDec 19, 2017
- Code (Charles Petzold)
- Soft Skills: The Software Developer's Life Manual (John Z. Sonmez)
- Zero Bugs and Program Faster (Kate Thompson)
- Daemon (Daniel Suarez)
- Algorithms to Live By: The Computer Science of Human Decisions (Brian Christian)
- How to Talk to Anyone: 92 Little Tricks for Big Success in Relationships (Leil Lowndes)
mbrdonMar 5, 2016
Some people I have spoken to say his method isn't for them but I've found it useful, even if I haven't implemented everything he suggests.
I'd also recommend "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. It starts at simple circuits and builds up a picture of how computers work. It has really helped me get my mental models of what's going on inside a computer straightened out!
libraryofbabelonOct 10, 2020
And yet. To a junior dev who asked me for advice on this stuff today, I’d just say read Code: The Hidden Language of Computer Hardware and Software, and if you like that then work through Nand to Tetris, and then go back to whatever you need for you day job.
juliend2onFeb 10, 2020
In the book [CODE: The Hidden Language of Computer Hardware and Softwar](https://www.amazon.com/Code-Language-Computer-Hardware-Softw...), Charles Petzold talks about how it's foundational to the eventual invention of the computer.
Back then, it also meant coast to coast communications were almost instantaneous. And soon after, transatlantic cable-enabled telegraph boosted commerce between America and Europe.
itsmemattchungonFeb 16, 2017
I started with Elements of Computing: creating a half-adder and then a full-adder chip. But, I couldn't understand how I reached my solution—I was relying on my intuition. Then, I started reading "Code", which takes the reader on a journey from shining flash lights to communicate with your neighbor, all the way to bridging the gap between boolean algebra and building a relay.