I'm currently reading Seven Databases in Seven Weeks [1] and finding it to be a really fun and interesting look at some tech I don't know much about. I'm wondering what other interesting books there are out there that focus less on teaching you all the technical details of a technology, and more on what makes it exciting and interesting.
"Domain Modeling Made Functional" by Scott Wlaschin*
Talk about a great book from cover to cover! Functional language evangelists are always ranting about types and their usefulness but fail to concretely convey how and why they can help. In this book Scott uses F#, but it applies to the broader range functional languages with a strong type system like Haskell, OCaml, Scala etc.
The main thread of the book is building an ecommerce shop of and he begins at the base foundation what the "business" needs and how it can be modeled using the type system to carefully detail and build on the idea of making "illegal states unrepresentable".
Highly recommended as it shows that the author has spent quite a bit of thought on conveying the useful ideas and being concise in explaining them. If you're new to the world of functional programming it does a great job of explaining the concepts and how to use them. For the experts, it specifically helps you be aware of better modeling around types.
"Things to Make and Do in the Fourth Dimension" is really fun, but it's not really tech, it's more just math. But I do a lot of work with scientific / numerical computing so some may group them together. In addition to math, it covers some interesting algorithms and fun ways to use spreadsheets for images, etc.
I also really enjoy books about the tech used in the early space program. "Digital Apollo" is probably the one that makes the best light / easy reading.
Recently someone on HN recommended Unix: A History and a Memoir by Brian Kernighan. I'm almost finished, and it's been a wonderful read.
I love reading about the development of early programming languages and computing environments, but I was surprised to find how helpful it is for deepening my understanding of things I use every day. It's amazing to me that tools like grep, which I use without a second thought, were written in the 1960s and 1970s and the code behind them hasn't been changed all that much.
This is a pretty neat book, that explains a lot of difficult concepts in technology in an easier to grasp manner. Things like P=NP and Big O get covered.
Haven’t read Soul, but I read and very highly recommend one of his other books, Mountains beyond mountains. Incredible story about how much one person can impact the world.
LOL (Let Over Lambda) is fun to read if you are not try to get the information in your head as fast as possible but rather read two or three pages a day very carefully and feel how your brain bends :) It is a hardcore technical book, but the language (Common Lisp) will not make you more money in 2020 or boost your new startup faster to market. So, read it to entertain your brain, it is worth it!
The same author Jamis Buck also recently came out with a book called The Ray Tracer Challenge [1]. He came to my University’s Game Dev class while I was there and he showed us all about maze algorithms and such. I thought one of the more interesting applications he brought up was over world (a.k.a. map/game world) generation using a maze algorithm. Which is awesome, because maze algorithms primarily try and create a single path between any two points which seems like a great property to have in a traversable game world. You could then choose to open up additional paths to your liking.
Anything by Gerald Weinberg is great. The technology is dated but the insights about working as a programmer are as relevant as ever, and the writing style is so enjoyable that my ex girlfriend who hates computers wanted to read it.
+1, Weinberg's "An Introduction to General Systems Thinking" [0] blessed me with the Systems Triumvirate:
1. Why do I see what I see?
2. Why do things stay the same?
3. Why do things change?
I notice that I am very often using these questions to get a general grasp of something I don't understand. I think this book is considered a classic in the systems thinking field by many.
There aren't many tech books I've read front to back and done pretty much all exercises. Exceptions include "The Little Schemer" and "The Seasoned Schemer".
Importantly, they really up one's ability to write higher order functional (and pure functional) code leaning heavily on a style that would help in any functional language with tail call optimization.
The dense, technical books I've read, I've done so because I wanted a deep understanding of whatever the book's about. I want that understanding because I believe it will somehow lead to good things, like being able to accomplish certain goals, or build stuff that will benefit me. I guess I may get something of a thrill when understanding certain things, and when later I'm able to build or do things I couldn't before. I guess that's fun.
However, while I read for fun, I don't find reading fun. Even for story books, I read because the content is fun, not because visually parsing ink on paper is fun.
Hm - maybe “fun” isn’t the right word, but I do find it mostly relaxing and pleasant to work through one as long as I’m not under any time pressure. I enjoyed TAOCP, for example, but I’ve definitely tried to read other books that I ended up giving up on, too.
For me a fun book has to be clearly written and present new (for me) ideas in a somewhat aesthetic way. Density I suppose is secondary. SICP is one of the best examples of the right balance, also Elements of Computing Systems.
Unity in 24 hours is pretty cool. If you haven't done game development before this will open up a lot of possibilities for you and it's pretty fun. For example, not only will it show you how to create 2D and 3D games but it's pretty easy to turn a 3D game into a virtual reality game. But especially with virtual reality it doesn't have to be a game. So it's actually super practical in my opinion.
Is a good read about the Atari 2600 and how the devs were able to fight within the limitations of 1970s and 1980s hardware to develop a gaming platform.
Fantastic book. I learned everything it covers in college, but the way it masterfully connects them all together is incredible and made connections in my brain that I didn't have before.
There's also something satisfying about seeing incremental abstractions develop in an intuitive way.
Can recommend Ge Wang's Artful Design. Dense, photo-graphic-novel hybrid you can sample for hours. And low-key it's an encyclopedic History of Computer Music ;)
"The Signal and the Noise" might qualify. How to reason about systems of messy data.... like the weather for example. Very well written and entertaining.
Talk about a great book from cover to cover! Functional language evangelists are always ranting about types and their usefulness but fail to concretely convey how and why they can help. In this book Scott uses F#, but it applies to the broader range functional languages with a strong type system like Haskell, OCaml, Scala etc.
The main thread of the book is building an ecommerce shop of and he begins at the base foundation what the "business" needs and how it can be modeled using the type system to carefully detail and build on the idea of making "illegal states unrepresentable".
Highly recommended as it shows that the author has spent quite a bit of thought on conveying the useful ideas and being concise in explaining them. If you're new to the world of functional programming it does a great job of explaining the concepts and how to use them. For the experts, it specifically helps you be aware of better modeling around types.
* https://pragprog.com/book/swdddf/domain-modeling-made-functi...
Oh, and his Haskell tutorial seems fun as well: http://lisperati.com/haskell/hasktut.pdf
I’m so happy that he’s got himself a weird and cool life and hasn’t lost that exuberance at figuring esoteric stuff out.
I also really enjoy books about the tech used in the early space program. "Digital Apollo" is probably the one that makes the best light / easy reading.
"Learn You Some Erlang for great good" by Fred Hebert: https://learnyousomeerlang.com/
"If Hemingway Wrote JavaScript" by Angus Croll: https://nostarch.com/hemingway
"Clojure for the Brave and True" by Daniel Higginbotham: https://www.braveclojure.com/clojure-for-the-brave-and-true/
I love reading about the development of early programming languages and computing environments, but I was surprised to find how helpful it is for deepening my understanding of things I use every day. It's amazing to me that tools like grep, which I use without a second thought, were written in the 1960s and 1970s and the code behind them hasn't been changed all that much.
https://www.amazon.com/UNIX-History-Memoir-Brian-Kernighan/d...
This is a pretty neat book, that explains a lot of difficult concepts in technology in an easier to grasp manner. Things like P=NP and Big O get covered.
https://letoverlambda.com/
http://www.mazesforprogrammers.com/
[1]: https://pragprog.com/book/jbtracer/the-ray-tracer-challenge
1. Why do I see what I see?
2. Why do things stay the same?
3. Why do things change?
I notice that I am very often using these questions to get a general grasp of something I don't understand. I think this book is considered a classic in the systems thinking field by many.
0: https://www.goodreads.com/book/show/583766.An_Introduction_t...
Game Engine Black Book: Wolfenstein 3D - http://fabiensanglard.net/gebbwolf3d/
Fabien Sanglard
Both are a fascinating read about hardware of the early 90's and how id Software took advantage of it to produce the results they did.
Importantly, they really up one's ability to write higher order functional (and pure functional) code leaning heavily on a style that would help in any functional language with tail call optimization.
https://www.amazon.com/Joel-Software-Occasionally-Developers...
However, while I read for fun, I don't find reading fun. Even for story books, I read because the content is fun, not because visually parsing ink on paper is fun.
https://www.amazon.com/Unity-Development-Hours-Teach-Yoursel...
https://wiki.nikitavoloboev.xyz/books#recommendations
Is a good read about the Atari 2600 and how the devs were able to fight within the limitations of 1970s and 1980s hardware to develop a gaming platform.
https://www.amazon.com/Racing-Beam-Computer-Platform-Studies...
There's also something satisfying about seeing incremental abstractions develop in an intuitive way.
[1]: https://mitpress.mit.edu/sites/default/files/sicp/index.html
https://artful.design/
I really enjoyed this one.
https://github.com/MostlyAdequate/mostly-adequate-guide