Search This Blog

Tech Book Face Off: Don't Make Me Think Revisited Vs. The Non-Designer's Design Book

I read a lot of technical books about programming languages, development methods, and coding techniques. Those books help enhance my skills in what I do most of the time, which is embedded firmware development, and what I'm interested in, which is learning new programming languages and new ways of solving problems with software. Every once in a while I feel like I should dip my toes into the design side of the pond so I can get a better sense of how to design features that will make the stuff I build easier to use, and so I can better understand the reasons behind what makes a particular design good or bad. For this dip in the pond, I chose Don't Make Me Think Revisited by Steve Krug, a safe book considering that I've already read and loved the previous version of the book. I also picked up a book I've been meaning to read for a while: The Non-Designer's Design Book by Robin Williams, off of a reading list from Joel Spolsky's blog. These books were both quick, enjoyable reads, but let's break it down a little more.

Don't Make Me Think Revisited front coverVS.The Non-Designer's Design Book front cover

Tech Book Face Off: Programming Elixir ≥ 1.6 Vs. Metaprogramming Elixir

Since I wasn't quite satisfied with the first Elixir book I read, and I wanted to learn more about this rich, complex programming language, I selected a couple more books to help me explore the more advanced aspects of Elixir. The first selection, Programming Elixir ≥ 1.6 by Dave Thomas, promises to cover all of the major parts of Elixir with a clean, well-written book from the coauthor of the excellent The Pragmatic Programmer. The second selection, Metaprogramming Elixir by Chris McCord, focuses on the ways that a programmer can write code to write code in Elixir, always a fascinating endeavor. Both of these books are again by The Pragmatic Programmers publishing company, since I've been mostly pleased with the books they put out. I might just have another of their books waiting in the wings for a review later this year, but let's take a look at how these two Elixir books stack up.

Programming Elixir ≥ 1.6 front coverVS.Metaprogramming Elixir front cover

Tech Book Face Off: Getting Clojure Vs. Learn Functional Programming With Elixir

Ever since I read Seven Languages in Seven Weeks and Seven More Languages in Seven Weeks, I've been wanting to dig into some of the languages covered by those books a bit more, and so I've selected a couple of books on two interesting functional languages: Clojure and Elixir. For Clojure I narrowed the options down to Getting Clojure by Russ Olsen, and for Elixir I went with Learn Functional Programming with Elixir by Ulisses Almeida. You may notice that, like the Seven in Seven books, both of these books are from The Pragmatic Programmers. They seem to pretty consistently publish solid, engaging programming books, and I was hoping to have more good luck with these two books. We'll see how they turned out.

Getting Clojure front coverVS.Learn Functional Programming With Elixir front cover

Tech Book Face Off: Programming Massively Parallel Processors Vs. Professional CUDA C Programming

After getting an introduction to GPU programming with CUDA by Example, I wanted to dig in deeper and get to know the real ins and outs of CUDA programming. That desire quickly lead to the selection of books for this Tech Book Face Off. The first book is definitely geared to be a college textbook, and as I spent years learning from books like this, I felt comfortable taking a look at Programming Massively Parallel Processors: A Hands-on Approach by David B. Kirk and Wen-mei W. Hwu. The second book is targeted more at the working professional, as the title suggests: Professional CUDA C Programming by John Cheng, Max Grossman, and Ty McKercher. I was surprised by both books, and not in the same way. Let's see how they do at teaching CUDA programming.

Programming Massively Parallel Multiprocessors front coverVS.Professional CUDA C Programming front cover

Tech Book Face Off: Data Smart Vs. Python Machine Learning

After reading a few books on data science and a little bit about machine learning, I felt it was time to round out my studies in these subjects with a couple more books. I was hoping to get some more exposure to implementing different machine learning algorithms as well as diving deeper into how to effectively use the different Python tools for machine learning, and these two books seemed to fit the bill. The first book with the upside-down face, Data Smart: Using Data Science to Transform Data Into Insight by John W. Foreman, looked like it would fulfill the former goal and do it all in Excel, oddly enough. The second book with the right side-up face, Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow by Sebastian Raschka and Vahid Mirjalili, promised to address the second goal. Let's see how these two books complement each other and move the reader toward a better understanding of machine learning.

Data Smart front coverVS.Python Machine Learning front cover

Tech Book Face Off: Seven Concurrency Models in Seven Weeks Vs. CUDA by Example

Concurrency and parallelism are becoming more important by the day, as processor cores are becoming more numerous per CPU and more widespread in every type of computing device, while single core performance is stagnating. Something that used to be barely accessible to the average programmer is now becoming ubiquitous, which makes it even more pertinent to learn how to utilize all of these supercomputers effectively. Besides, parallel processing is a fascinating topic, and I think it's great that it is now so easy to experiment at home with things that used to be reserved for huge companies and university research departments. In order to become more proficient at programming in this way, I started with the book Seven Concurrency Models in Seven Weeks: When Threads Unravel by Paul Butcher for an overview of the current state of affairs in concurrent and parallel programming. Then I went for an introduction to CUDA programming for GPUs with CUDA by Example by Jason Sanders and Edward Kandrot. I've been looking forward to digging into these fascinating books for a while now, so let's see how they stack up.

Seven Concurrency Models in Seven Weeks front coverVS.CUDA By Example front cover

Tech Book Face Off: Effective Python Vs. Data Science from Scratch

I must confess, I've used Python for quite some time without really learning most of the language. It's my go-to language for modeling embedded systems problems and doing data analysis, but I've picked up the language mostly through googling what I need and reading the abbreviated introductions of Python data science books. It was time to remedy that situation with the first book in this face-off: Effective Python: 59 Specific Ways to Write Better Python by Brett Slatkin. I didn't want a straight learn-a-programming-language book for this exercise because I already knew the basics and just wanted more depth. For the second book, I wanted to explore how machine learning libraries are actually implemented, so I picked up Data Science from Scratch: First Principles with Python by Joel Grus. These books don't seem directly related other than that they both use Python, but they are both books that look into how to use Python to write programs in an idiomatic way. Effective Python focuses more on the idiomatic part, and Data Science from Scratch focuses more on the writing programs part.

Effective Python front coverVS.Data Science from Scratch front cover