How Linux Works

This is the Second Edition of How Linux Works: What Every Superuser Should Know and is the only Linux-focused book I can recall that has a strong focus on the computer science, what is happening here and why, big picture instead of the how-tos. The reader does learn how to do things, but only after learning conceptually what is happening. This is something that is sorely lacking in today’s computer education classes and I am thrilled to see the author’s focus here. I am convinced that once a person understands the concept of what a computer is, what it does, and how it does so (from a high level), it is much easier to then learn the mechanics. This is important because the concepts apply across operating systems and across time as those systems change their methodology, say by replacing the System V init program with Upstart or systemd.

This is the sort of book that I would recommend for a user who is new to Linux and wants to understand why things work the way they work, not merely learn how to do things. If there is an immediate need to learn just mechanics, perhaps this should then be the second book to read after reading one that focuses on what to do when. Regardless of when they read it, any Linux user who wants to grow in their comprehension of Linux, its parts, and the entire operating system ecosystem will benefit from this book.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Teach Your Kids to Code

Teach Your Kids to Code: A Parent-Friendly Guide to Python Programming is a unique and welcome addition to the recent trend of programming books with a focus on teaching children. Unlike books that are designed for self-study, Teach Your Kids to Code is intended to be used in a collaboration between an adult and a child. This could be a parent working with a daughter or son or a teacher working with one or more students. It certainly could be used for self-study, but I like how the intent and focus is to provide something to do together.

The book covers all the important topics from installing and setting up Python on your platform to creating a game. In between, we are treated to coverage of drawing graphics, first simply using Turtle in Python, and later with animated effects using Pygame. Concepts like math, numbers, and variables; loops; conditions; functions; and user interaction are covered clearly and in a logical order within an interesting and enjoyable context.

Each chapter ends with a set of programming challenges to give the readers a way to practice what was learned in the chapter. Sample answers are made available on the publisher’s website. These are interesting and valuable.

I really like this book. If you are an adult looking for a fun project to do with a child in your life, or a kid looking for a way to interest an adult in learning how to use Python, Teach Your Kids to Code is worth a close look.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Battle Lines: A Graphic History of the Civil War

I confess that I have never been deeply interested in The American Civil War. After reading this book, I’m convinced that the only reason I wasn’t interested is because of how the topic was presented to me. I am now very interested.

Battle Lines: A Graphic History of the Civil War takes the history and scholarship surrounding the conflict which shaped the United States and which still has an impact on its internal politics and struggles and adds what was always missing for me: the human element. Each chapter takes an ordinary, everyday object from the era and uses that object to begin a vignette that demonstrates how the war affected real people. We are given solid history, but within a context that gives the facts meaning. As Jonathan Fetter-Vorm did with Trinity: A Graphic History of the First Atomic Bomb, a difficult and complex topic is deftly broken down into easily digestible portions along with a moving and real sense of why I as a reader should care.

The artwork in the book is powerful and evocative. The narrative is cinematic. It is not hyperbole to say that I was transported into the story while reading, to the extent that I often forgot I was reading; I was so moved with emotion that more than once I found myself in tears. Combine this with the solid presentation of historical facts and I am left with a hunger to know more. For this, I say this book belongs in every school library in the country and on the shelf of anyone interested in good art, excellent storytelling, and careful scholarship.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

The GNU Make Book

The GNU Make Book is intended for people who already have an understanding of GNU Make, what it is, and the basics of how and why someone would use it. The reader is assumed to know enough about programming and source code, about compiling and creating software executables to not need an introduction. The book begins by talking about setting environment variables in your makefile. If you know what this means, you will likely benefit from the book. If you don’t, you aren’t ready for this book.

The GNU Make Book has six clear chapters, arranged in a logical order:

  • The Basics Revisited covers topics like variables and version checking in your makefile.
  • Makefile Debugging helps you find problems with tips and tricks like variable tracing and dynamic breakpoints.
  • Building and Rebuilding uses example makefiles to demonstrate things like automatic dependency generation and rebuilding under specific circumstances.
  • Pitfalls and Problems clarifies many troublesome aspects of makefiles and helps you avoid common difficulties.
  • Pushing the Envelope takes you beyond the typical use of make with a few cool ideas.
  • The GNU Make Standard Library works as a reference for an open source project started by the book’s author, John Graham-Cumming, to collect and provide common functions that makefile authors “end up writing over and over again.”

I think this book is fantastic. It does have one weakness that, once addressed, would be likely to broaden its appeal. Many people who want or need to learn to use GNU make more effectively do not yet have the foundational knowledge necessary for reading or benefiting from this book. That could be remedied in a 15-20 page introductory chapter covering topics like “what is make?” and “how is make typically used?” The descriptions could be short, but would set the context for the rest of the book and ease the nervous reader in. Perhaps starting with something like, “GNU make is a tool that enables you to automate the generation of program executables from program source code” would be useful and could be followed by, “This is typically accomplished by writing a Makefile, which includes a list of instructions for make to use as it does its work.”

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Build an HTML5 Game

No Starch Press has published a number of programming books that impress me, both in their depth and in their accessibility.

Build an HTML5 Game is intended for people who already have a basic familiarity with HTML, CSS, and JavaScript. This book takes you beyond the typical “let’s introduce tags and build basic web pages” stuff you usually see and walks the reader through building an entire browser-based game, start to finish. The programming starts immediately in Chapter 1, which is cool. All the important facets are covered from sprite animation, transitions and transforms, game logic, levels and sound, and quite a bit more.

The reader who is most likely to benefit is the one who has at least a little programming experience, but wants to broaden their skills with an entry into game development. To that end, I suggest you already have a little experience making web sites and using JavaScript and jQuery. If you have previous experience developing Flash games and want to move to the present and future with HTML5, you will also find this book useful and an enjoyable way to get started.

I really enjoyed reading Build an HTML5 Game. The writing is clear and easy to follow, the examples are good, and the concepts provide a solid foundation on which you can build. This is not a comprehensive “everything you will ever need or want to know about game programming” sort of book, but rather a clean and enjoyable entry that helps you over the first hurdle of writing that first game. It then gives you ideas and tips to help you know what else is out there so you have a bit of a roadmap to continue learning as you figure out what sorts of games you want to create.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

The Cartoon Introduction to Philosophy

I like this sort of book, the type that combines complex ideas with approachable expression and style. It is even more enjoyable when I’m already interested in the topic.

The Cartoon Introduction to Philosophy provides a solid, basic foundation to the thoughtful contemplation and interesting ideas in philosophy. It is scheduled to be published in April 2015.

The book presents its information using an enjoyable graphic style that is well done and pleasant to the eyes. The topics are broken into six chapters, each of which builds on the previous. The order is logical, which is good for a book on philosophy, and is actually where we start after a short introduction. Logic is followed by a discussion of perception. This leads to a discussion of the mind, free will, God, and ethics.

The cartoon narrative that is the vehicle for these discussions uses a guide, Heraclitus, one of the early philosophers who predated Socrates. He takes the reader on a journey from the beginning to learn about philosophical thought from the earliest stage to later ideas that built upon, and often contradicted, them.

Most of the big names are mentioned along with a brief description of their main themes. This includes all your favorites across time, such as Plato, Descartes, and Mill. In total, I counted more than 20 different philosophers introduced. That is great in a comic-style book of 168 pages. The introductions are short and necessarily simplified, but this provides an excellent beginning to help the reader get the big picture.

I recommend the book for anyone from later elementary school through college who does not already have a basic understanding of philosophy and the main schools of thought.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Learn to Program with Minecraft Plugins

My kids love playing Minecraft. I run a server for them. I would love for any of my kids to learn to program (and also to take over the server admin duties from me). This book immediately struck me as having great potential.

Learn to Program with Minecraft Plugins

Learn to Program with Minecraft Plugins: Create Flying Creepers and Flaming Cows in Java
starts slowly, but it says it is going to start slowly. As it must, the book begins with coverage of topics like installation and configuration. This is the only dull part of the whole book, and I don’t think that could be helped.

Once we get to the meat of the material, things pick up considerably. I love how the author chose to give a high level view of each topic first, to orient the reader. While doing so, consistent calming statements are made to reassure the reader that it is not necessary to understand everything being said at this stage. Then, once the big picture is painted, the details are filled in. The accompanying explanations are clear and written in an enjoyable manner.

I love how topics like pseudo-code are explained almost as an aside, but in a way that makes them seem almost obvious, as in “Oh yeah, why wouldn’t a programmer write something like that first to help the process along?”

Each chapter builds on the knowledge from the previous chapters while introducing topics in a logical order.

Almost any programming book will work for a highly motivated and brave student. However, this is one of those special books that I believe to be suitable for a tentative, interested-but-scared sort of student.

I’m impressed by the author’s ability to combine accurate details and descriptions of complex concepts in a way that I’m certain my kids could grasp and later apply to other programming languages and environments, should they wish to. Albert Einstein is reputed to have said, “If you can’t explain it to a six year old, you don’t understand it yourself.” Author Andy Hunt has deftly proven himself as one who understands. That he is also able to express these ideas to a novice-level audience without talking down to the reader is exceptional.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Fire in the Valley, Third Edition

This is the first edition of this book to be published by Pragmatic Bookshelf, which I believe is an excellent fit as a company for the book’s content. The second edition was published back in 2000 by a publisher who specializes these days in a different sort of content. Plus, I love The Pragmatic Programmers series by Pragmatic Bookshelf and this history contained here belongs in this series. Good move for both the authors and the publisher.

Fire in the Valley, Third Edition is subtitled The Birth and Death of the Personal Computer, and for good reason. The book is a history of the types of computers that people bring into their homes, starting at the very beginning when this was just a dream for a few stalwart hobbyists willing to build their own computers. It continues through the usual suspects like MITS and Apple all the way to the present day when computing power has been grafted in to so many different devices that the meaningfulness of having “my own computer” isn’t quite the same as it once was.

The book covers not only historic events and figures, but also issues and philosophies that had an impact of the birth, growth, life, and death of many companies along the way. It also includes a ton of first-hand accounts from key players that make the story rich, interesting, and fun to read.

While this is being sold quite rightly as a history book, perhaps it should receive more fanfare as a chronology of a revolution, of a sweeping cultural shift. I lived through much of the era described in the book (I bought my first computer in 1981) and can easily remember a time when there were only three or four people in my school who had a computer at home, when there was no computer lab, or when the first computer labs were created and filled with Commodore PET computers that had no software other than an operating system, so there was nothing for students to do with or on them. Society is indeed different, and this book describes integral and foundational reasons why and how that change occurred. If this sounds interesting to you, this book is easily the best one I have encountered on the topic. That was true of the previous edition, and is even more true today with the third edition. Pick it up!

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Ubuntu Books I Wrote in 2014

Just in time for the end of the year holidays…

I have a new edition of Ubuntu Unleashed 2015 Edition (affiliate link), now available for preorder. This book is intended for intermediate to advanced users.

I also failed to mention on this blog the newest edition of The Official Ubuntu Book (another affiliate link), now in its eighth edition. The book continues to serve as a quality introduction for newcomers to Ubuntu, both the software and the community that surrounds it.

The LEGO Neighborhood Book

LEGO. There, now I have your attention.

The LEGO Neighborhood Book is another addition to the series of cool LEGO books published by No Starch Press. In it, you find a set of instructions for building anything from small features like furniture or traffic lights to large things like buildings to populate an entire neighborhood. Unlike the creations of my youth, these buildings are detailed structures. Gone are the standard, boxy things I used to make. Replacing them are fancy window frames, building mouldings, and seriously beautiful architectural touches. In fact, many of those features are discussed and described, giving a context for the builder to understand a little bit about them. Also included are instructions for creating different types of features to put in those buildings. Everything from art work to plants to kitchen appliances is in there.

I’ve said so much about the books in this series, and it all holds true here, too. Part of me feels bad for the short review here, but the other part of me hates to repeat myself. In this instance, the praise of the past still applies. If you are a LEGO enthusiast, this is worthy of your consideration. Pick it up and take a look.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?