Blog Posts
I'll start out again with what I've done on my blog, and I very nearly did everything I set out to do. I wrote 17 posts (not counting this one) instead of the predicted 18 because of how the 3-week intervals fell. They were almost all Tech Book Face Offs, except for the last two that were a general review of books I will read again and programming practice sites that I've enjoyed, and a random Physics Book Face Off that I threw in there in April to mix things up.
The most popular post by far was the review of books that I'll read again, which racked up over twice as many hits as the next most popular post, and it was pretty fun to write as well. This was not your normal list of best books because I'm tired of reading best-programming-book lists that put up the same old safe books like CLRS or Knuth's The Art of Computer Programming. This post had a little of that just because some of those books are great to reread, but these were all genuinely books that I want to read again, not just because they're instructive, but because they're enjoyable reads. They make my brain tingle. They get me excited about programming and learning (or relearning) new things.
Of the Tech Book Face Off posts, the top three most visited ones were Python For Data Analysis Vs. Python Data Science Handbook, How To Design Programs Vs. Structure and Interpretation of Computer Programs, and Seven Concurrency Models in Seven Weeks Vs. CUDA by Example. These were all good, but the one that was most fun for me was easily Game Engine Black Book [Wolfenstien 3D Vs. Doom]. Reading these books was a blast, and writing down my thoughts about them was just as fun and satisfying. I'm surprised it didn't gain more traction, but I'm pretty much done trying to figure out which posts are going to take off and which ones will fly under the radar of the Internet.
For the coming year, I'm planning on keeping up the same cadence, which means 18 more posts. That's really 18 posts, too. I checked. I didn't get to that exciting blog series I alluded to last year because the schedule was filled up with reviews, but I'm intending to start in on it right away this year. The book review posts will be much reduced as well. I've only got about a dozen programming books on my list that I'd still like to read, and I'll probably hold off on them while I work on this other project.
Technical Books
I really dug into the technical books this past year, even more than the previous year, and I just met my goal of 22 books (plus 2 pop physics books) while working through most of my tech book backlog. As I had hoped, most of these books were quite good. A fair number of them even made it onto my read-again list. There were only a few duds and one stinker. Here's a run-down of them, roughly ranked in order of preference and linked to the longer Tech Book Face Off reviews.
The Good
- Game Engine Black Book: Wolfenstein 3D - Between the high level of nostalgia and the fascinating topic, there was no way this book wasn't going to top this list. It's an incredibly well-done guide to how Wolfenstein 3D was made.
- Game Engine Black Book: Doom - Arguably, this book is even better than the Wolf3D one, but you should really read that one first so this one comes second. I highly recommend them both for anyone curious about how these legendary games were done on such feeble hardware.
- Rails AntiPatterns - I loved the tactic this book took of showing bad Rails code, explaining why it's bad, and then showing how to fix it. Some books do this sporadically without telling you in advance, but this worked so much better, knowing that each example was intentionally bad from the start so there was no confusion about what was the right way to do things.
- Data Smart - This was the most fun I've had reading a book on Excel spreadsheets. Not that I read many books on spreadsheets, but if I did this would definitely be the best. It's about implementing data science algorithms in Excel with humor, and it's so much better than it sounds.
- Don't Make Me Think Revisited - I enjoyed the first book, and the revised edition is just as good. Learn all about how to design user interfaces that make sense, and have a great time doing it.
- Structure and Interpretation of Computer Programs - A classic that still holds up today for teaching the fundamentals of programming and much more, this book has a steep learning curve, but the rewards match the effort it takes to get through it.
- The Hidden Reality - This was a super fun and mind-expanding read, taking us through the numerous types of multiverse concepts that have been thought up by cosmologists. Brian Greene continues his excellent, approachable writing style with this enjoyable book.
- Parallel Worlds - Michio Kaku does his own tour of the different types of multiverses we can conceive of, with a few more fantastical stories thrown in for good measure. This is another great book to read to get the high-level overview of this topic.
- Facts and Fallacies of Software Engineering - You don't have to agree with everything in a book for it to be excellent, and that's the case here with Robert L. Glass' thought-provoking arguments about the software engineering industry. Still relevant after 17 years.
- Professional CUDA C Programming - If you're interested in GPU programming and want to play around with your nVidia graphics card, this book has all the information you need to get started in a nicely written, diagrammed, and organized guide.
- Python Machine Learning - It's a solid introductory text on the fundamental machine learning algorithms, both in how they work mathematically, how they're implemented in Python, and how to use them in scikit-learn and TensorFlow.
- Data Science From Scratch - Fundamentals are so important to learning a topic well, and this book does a great job of teaching the fundamentals of data science by implementing the algorithms from scratch in Python.
- Seven Concurrency Models in Seven Weeks - I've loved every 7-in-7 Weeks book that I've read, and this one is no exception. It's an entertaining read through seven different ways to do concurrent programming with today's technology.
- The Non-Designer's Design Book - Learn how to design boldly in text and graphics with a few simple rules and clear, straightforward guidelines. Anyone and everyone who works around websites should give this quick read a look.
- Getting Clojure - If you're looking for a fun read and a tour of the Clojure programming language, this is the book to pick up.
- Effective Python - Every programming language has its beyond-the-beginner-level book on how to write programs in that language well, and this is the one to read for Python.
- Programming Elixir ≥ 1.6 - An excellent book for learning the ins and outs of this highly concurrent, fault-tolerant language, and it's well worth a read if you're operating in that domain.
- Metaprogramming Elixir - This book fills in the few gaps in Programming Elixir ≥ 1.6, and it's a great companion to that book.
- Programming Pearls 2 - This is a fairly decent algorithms book that's worth a read as a casual second or third book on programming algorithms.
The Not-So-Good
- CUDA by Example - This book is clearly written, but not especially well-written. Still, it's a good introduction to CUDA programming that covers the basics. Just don't feel compelled to read it all the way through, as the later chapters are fairly useless.
- Learn Functional Programming With Elixir - Neither thorough on Elixir nor especially focused on teaching the unique aspects of functional programming, this book left a lot to be desired. It's fine, but not great in any respect.
- Programming Massively Parallel Processors - For a subject that is inherently interesting to me, this book managed to be tedious, verbose, and opaque in its explanations, and way, way, way too long. The necessary information is in there, but it's not worth the effort when there are better options available.
- The Rails 5 Way - This book was so much longer than it had to be. It was light on discussion and super heavy on documentation, as if it was simply a transcription of the online documentation into a book.
The Suck
- How to Design Programs - Nearly 750 pages of the most tedious, drawn-out, agonizing explanations about learning to program, I disagree with the title given to this book. Nowhere in it does the reader learn how to design programs, maybe design of functions at best.
This showing is much better than last year, with a half-dozen more good books, and less bad books. It was actually quite hard to rank the good section beyond the first few because they were all well-written and engaging. I don't know if I was better at selecting good books to read, or if I just got lucky, but I was pleased with the high level of quality in this year's book list.
Novels
As planned, I read even more technical books this year than last, but I still managed to read some great novels in the past year. Partly, this is because of listening to audiobooks in the car, and I have a 30 minute commute to fill. The number of books I got through was still less, but some of them were much longer than what I read the previous year. Again, they're roughly ranked.
- The Way of Kings, Words of Radiance, Oathbringer - Wow. Just WOW. I could not believe how wonderful these books are. The characters are all flawed and broken and so human, the story drags you along as you watch in amazement at how everything develops, and the world that Brandon Sanderson built in this Stormlight Archive series is simply incredible. It has weight. It has life. It has history. I can't wait for the next book to come out.
- The Fifth Season, The Obelisk Gate, The Stone Sky - This trilogy is just as awesome as the Stormlight Archive series, and I was constantly amazed at how clearly written the world of the Stillness is. The fantastical powers that the orogenes and Guardians have could be confusing, but N. K. Jemisin writes so simply and beautifully that everything was crystal clear in my mind as I read it. The story is at the same time one of the most engrossing tales I've ever read and a powerful allegory about the struggles of racism in society. It's enlightening and revealing without being accusatory. Beautifully done.
- The Golden Compass, The Subtle Knife, The Amber Spyglass - Throughout this trilogy I was continually surprised by the incredible imagination of Philip Pullman. Each book brings entirely unique new elements into an already rich and diverse world, or rather many-worlds. Even with all of these new elements being introduced, the world always felt cohesive and real. Everything made sense within the context of the story. This is a hard thing to do right, and Pullman did it masterfully.
- The Eye of the World - I'm just getting started in this long Wheel of Time series, and I'm already hooked. The first book is essentially one long, thrilling chase through a world of mystery and magic. The reality of the world is revealed slowly, and the suspense of wondering when you'll find out that next tidbit of knowledge about the world was gripping. By the end I have more questions than answers, and I'm ready to learn more about the Wheel of Time.
- Snow Crash - This book was ridiculously fun, plain and simple. The setup makes no sense at all and the story doesn't care one whit about anything, but it doesn't matter. You're a pizza delivery boy in the future who also happens to be the world's best samurai swordsman and an elite haxxor. You get mixed up in some crazy shit and lots of weird stuff happens. It's a wild ride, and you're just going to have to read the book to see how it all works out.
- Jurassic Park - It's a book about man recreating dinosaurs in the modern age. What could go wrong? And what's not to like? This book is basically a classic at this point, and great fun to read.
- Ringworld - While the premise of this book was interesting—humans and aliens go visit an enormous world built in a ring around the aliens' host star—I just couldn't get into this book by Larry Niven. The story was only tangentially about the ringworld, and the main focus was actually about whether people could be bred for luck. It seemed like Niven wanted to write about building a ringworld, but couldn't figure out how to write a compelling story around that so he had to also write about this other thing to justify it. Also, his writing was too disjointed for my tastes. Scenes changed so abruptly and dialog and narration was so terse that I had trouble understanding what was going on most of the time. That was a huge disappointment, especially considering the other books on this list.
- The Color of Magic - This book was another disappointment, but for a different reason than Ringworld. The writing was fine, even funny sometimes, but the discworld made no sense at all. Completely random and nonsensical things would happen to the main characters at every turn, and I never could figure out what the plot was about. It didn't take long to lose interest in the characters altogether, since whatever happened to them wouldn't make any sense whatsoever and they were probably going to end up fine anyway. There were a lot of similarities in style to The Hitchhiker's Guide to the Galaxy, and while similar elements somehow worked there, they fell totally flat in The Color of Magic. That leaves me with no reason to read the other 40 books in the series, lucky me.
One of my goals here was to branch out and read new authors, and I mostly held to that goal. There's no Stephen King, Neil Gaiman, or Dragonlance books on the list, but I did read another book by Neal Stephenson after Seveneves and was not disappointed. The first eleven books were extremely hard to rank. They're all basically equivalent levels of awesome in my mind, and you absolutely should go read them if you haven't already. The stories are incredible, and the worlds these authors imagined and built are even more incredible.
I also reread Jurassic Park, from my youth, by way of introducing it to my daughter, who absolutely loves dinosaurs. It was well received. For this year, I already know I'll be rereading The Lost World with her. I'll also be continuing The Wheel of Time saga, and starting another new author for me, Ursula K. Le Guin, with A Wizard of Earthsea. Other than that, I'm thinking of finishing up the Foundation series by Isaac Asimov and reading a few more new authors. All I know is there are a lot more worlds to explore.
Video Games & Movies
I actually have not watched many movies this year. It didn't seem like there were too many worth watching. I did see Avengers: Endgame, of course, and it was probably one of the best movies I've ever seen, considering the vast context and buildup of the rest of the MCU. I also finally saw Captain Marvel (I wait until I can get movies from the library), and that was pretty good, too.
One of the more unique movies that I did end up watching was Annihilation. I happened to get it when I was by myself in the house one night, and I popped it in the PS4, turned off the lights, and turned the sound way up. That was an intense, wonderfully creepy experience. Do you know how great the sound effects are in that movie? And that freaking bear, holy crap. I'm surprised I got any sleep that night.
I also rewatched The Lord of the Rings with my wife. Those movies hold up really well. If the movie drought continues, I've got a growing list of other (not-so) old movies to watch again, like Jurassic Park.
As for video games, I'm still enjoying the LEGO videogames with the kids. We finished up Jurassic Park (are you seeing a theme here?), The Hobbit (much better than the movies), and most of Marvel Super Heroes. We're still working on The LEGO Movie, Batman 3: Beyond Gotham, and LEGO City: Undercover (this game is ginormous). Then we've started Marvel Super Heroes 2, Marvel's Avengers, and we just got another batch of LEGO games for Christmas. I don't know why, but I don't ever seem to get tired of these games. It's gotta be the character development. (I'm kidding; it's the graphics.)
For myself, I ended up playing Lightning Returns: Final Fantasy XIII and God of War III. These are two very different games, and yes, they're both older than dirt. I said last year my backlog was deep. I know Final Fantasy XIII got a lot of criticism, but I still enjoyed the whole trilogy. I especially liked Lightning Returns for the new battle system. Gone are the menus and inventory lists, and instead you link four different actions to each of three different outfits to set up your available commands for a battle. You have a few other special actions that you can do, and then you're choosing actions in real time during battles. It's a much more dynamic, exciting battle mechanic than selecting actions from menus, and like most Final Fantasy mechanics, surprisingly deep. It really made the game for me. Lord knows the plot didn't.
God of War III was another installment of hack-n-slash, vengeance-upon-the-gods action game that was pure entertainment. I was reminded of how perfectly responsive the controls are in these games, and I think the most fun to be had was beating the crap out of Hercules.
The Year Ahead
I have more than enough games to play this year as I play through my backlog. I actually got more new games than I finished, so that backlog is just getting deeper. If only there was more time. I won't be reading as many technical books, so there's that, but I'll probably fill a lot of that time with more novels and the next blog project. Still, maybe I can squeeze in a couple more games, and I haven't picked up the guitar again, yet.
No comments:
Post a Comment