Android Programming Unleashed

I have a chapter in one of my books, Ubuntu Unleashed, that gives an introduction to using Ubuntu as a foundation for developing for Android. The information in that chapter barely scratches the surface of the topic. As a response to those who are interested in learning more and who ask me for book recommendations, I am writing this review.

Android Programming Unleashed is part of the same series as my book. I’m stating that right up front so that everyone knows that I have a potential conflict of interest. Read my review with that in mind. I’m trying to be unbiased, and I have no direct financial or editorial interest in Android Programming Unleashed, but I am the author of a book in the same series. So, now that that is out of the way, let’s dig in.

Android Programming Unleashed is written by B.M. Harwani. It contains more than 650 well-written pages of useful information written by someone who clearly has experience teaching others. The book is structured in four parts, each of which contain several chapters.

The first part, Fundamentals of Android Development, starts like most development and programming books, with information about installation and a general introduction to the platform, tools, and getting started. It also includes a chapter on the basic widgets used in an Android application, including some standard classes, layouts, controls, and events.

The second part dives in deeper. Building Blocks for Android Application Design contains four chapters that each cover an important aspect like laying out controls, utilizing resources and media, using selection widgets and debugging, and displaying and fetching information using dialogs and fragments.

The third part, Building Menus and Storing Data, completes the basics that are needed for most useful applications. Here you learn how to create interactive menus and various useful options for those menus as well as how to use databases in Android applications.

The fourth part gives you additional information that will enable you to create more complex and interesting applications. Advanced Android Programming: Internet, Entertainment, and Services contains six chapters that cover a wide range of topics. Here you learn about implementing drawing and animation, displaying web pages and maps, communicating with SMS and email, creating and using content providers, creating and consuming services, and publishing Android applications to the Google Play store.

The book is clearly written and complete. It uses the standard tools for Android development, so the installation instructions include information for developing on the Windows, Mac, and Linux platforms. The figures and illustrations are clear and useful and the book contains numerous code samples. The code samples are also available for download using instructions given in the book’s introduction.

So, whether my book or something else whetted your appetite to code up some apps for Android, this is the book I recommend you take a look at.

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

Watch the Seasons Change

Over the past year, I took a series of phone camera pictures out the window of the break room at work. I wasn’t consistent in where I held my phone while I took the pictures, and I didn’t take one every day. Even so, it is kind of fun. My friend, Jussi, was kind enough to create the animated GIFs. There are two versions and the only difference is the speed at which the images change.

Slow Speed

And now, a few random words to provide a little separation between the two images to make them each less distracting from the other.

Fast Speed

Beautiful LEGO

This review will be short, but that is because the book is an easy sell. Usually a book sits on my desk for a week or two (or six) before I have time to read and review it. This one arrived today. I opened the envelope and was engrossed. Thankfully, I didn’t have anything else to do for a while.

Beautiful LEGO is a stunning coffee table book filled with astounding images of amazing things created with LEGO. This isn’t a “how-to” book, this is an inspirational book and a conversation piece. Here are some examples.

If you like these, buy the book. Honestly, as neat as they are, these aren’t even the best examples or images. There are pages in here that are completely mind blowing. My kids will have a hard time getting this one away from me.

The book will be released October 7, 2013, but it is possible to preorder, and this is one that I think would be perfect as a Holiday gift.

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

DevOps Troubleshooting

Have you ever been responsible for a server and had something go wrong? Ever been in a situation where you didn’t know what was causing the problem or how to figure it out? I think any of us who develop code, work in quality assurance, or administer systems have had this sort of experience. Sometimes problems appear that were never covered in a class or training session. Experience is an amazing teacher, but gaining that experience can be intimidating and sometimes painful. This book gives anyone working in DevOps a bit of a head start.

DevOps Troubleshooting: Linux Server Best Practices starts with a discussion of best practices in troubleshooting. This lays a good foundation for the rest of the book and should be read right away. If you don’t already know how to narrow down the location or source of a problem, how to communicate with others who may be affected or who can assist, or even where to start when a problem arises, the first chapter gives a solid plan to help you out. Most of the content of this chapter will seem obvious to people with experience, but they were not obvious to us when we started, and this information would have saved most of us a few headaches. Ideas like favoring quick, simple tests over slow and complex one, favoring past solutions that are known to work, and most importantly, understanding how the systems work before doing anything are vital. I like the advice about using the internet, but carefully, and resisting rebooting as a cure-all (because it doesn’t help you find the cause of the problem).

The chapters that follow are each focused on a specific type of problem. They include discussions of tips, tricks, and tools for diagnosing, and fixing issues. There are chapters that cover server slowness due to CPU, RAM, and Disk I/O issues, boot problems, full or corrupt disk issues, network problems, DNS server issues, email problems, web server problems, and database problems. There is even a chapter on diagnosing common hardware problems.

Experienced Linux server gurus may pick up a trick or two, but it is those who are new to working with Linux servers who are most likely to benefit from this book, and benefit in significant ways. The book doesn’t cover how to use Linux or how to set up your server, but it covers exactly what the title of the book says it will cover. For this reason, I consider this a perfect second Linux book for anyone who is relatively new to any aspect of DevOps with Linux.

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

The LEGO Build-It Book: Amazing Vehicles

LEGO. There, I got the attention of a large number of you.

The LEGO Build-It Book: Amazing Vehicles is the first volume in a new series from No Starch Press that is intended to give anyone ages 7 and older some ideas of things they can build or modify using LEGO. The 10 projects in this book are ranked by complexity, functions, and required pieces. The introduction page for each project includes design notes, technical specifications, and beautiful pictures of each finished product to whet the appetite. There is also a pretty neat section on advanced building with some useful tips for building with greater strength and imagination.

This particular volume is focused on vehicles. The 10 projects included are:

  • Off-Roader
  • Go-Kart
  • Muscle Car
  • Stroller
  • Multi-Purpose Truck
  • Historic Racer
  • Classic Car
  • Wheel Loader
  • Street Rod
  • Rescue Truck

The book is beautifully done with excellent art and clear instructions. Anyone looking for some vehicle plans and ideas is sure to find it interesting. My 7 year old son is waiting excitedly for me to finish this review and hand the book over to him. I consider that a very good sign, too.

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

The Healthy Programmer

I sit at a desk all day. I sit with my hands on a keyboard or mouse and my eyes fixed on a computer screen. This is a terrible thing to do to one’s body. I learned this first hand when, just over two years ago, I developed wrist and back pain so severe I nearly chose a different career. Instead, I talked to a doctor, read up on ergonomics and repetitive stress injuries, and made some significant changes to how I work.

I wish this book had existed back then, and better yet that I had read the book before the pain started. Even though I am healthy and doing well, I find that I must be vigilant. I get up and walk for a few minutes every hour. I take longer walks at least twice a day. I look away from the monitor frequently. Still, when I’m in the groove, it is easy to look up and realize that I have not changed my position for 3 hours. Those moments are far less frequent, and must be infrequent if I want to be able to do this sort of work the rest of my life. Same goes for you, and the sooner you realize it and adjust your work habits for the sake of your health, the better.

The Healthy Programmer: Get Fit, Feel Better, and Keep Coding is a book I recommend highly to all who work behind a desk all day, but it is especially written for programmers. While I spend more time writing documentation nowadays, my thinking patterns and my physical habits fall into the same category. This book spoke clearly to me and I think it will to anyone in a similar position.

The Healthy Programmer suggests a method of implementing changes to daily work and diet patterns that will be familiar to programmers. It is iterative, measured, and all-around Agile. You start by taking stock of where you want to go, what you want to see happen. Then, you measure how things are today and make small changes, one at a time, to your life and see how each affects the things you measured. As you get the hang of one thing and choose to incorporate it into your regular lifestyle, you measure something else and repeat the process.

We start with an introductory chapter. These lay the foundation for why some habits are good while others are not. Most of the facts are already known to us. Face it, programmer/computer engineer types are a pretty bright bunch. However, we don’t always choose to apply our knowledge, primarily because of how we have adapted ourselves to the pressures of the job. Once you get past the no-scare-tactic-or-hype discussion of habits and the well-cited using academic journals research behind what the book promotes, you find yourself wanting to do the things it discusses. It is kind of like that time you heard about a new toolkit available in a programming language you love that lets you implement a feature you have been dying to play with. You can’t wait to get started.

Topics covered in the book include walking, sitting vs standing, diet and nutrition, headaches and eye strain, back pain, wrist pain, exercise, getting up and out of your cube or home office, understanding fitness, and more. Everything comes with citations and balanced, scientific discussion that never gives in to hype or fad. You get advice that is backed up by doctors, scientists, nutritionists, and fitness professionals…and none of it sounds like the stuff you hear in the diet craze of the month or year. There are no vague promises, no unrealistic expectations, no fearmongering nor scare tactics. Just good information that is well presented and molded into a style of communication and plan for implementation that will be familiar to programmers.

This is a 200+ page book that can be easily skimmed over a weekend. Then, you can go back through it slowly over a period of months and let it help you be or become healthy and prevent, reduce, or eliminate pain. It is worth it.

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

Nginx HTTP Server, Second Edition

I reviewed the first edition of this book back in 2010 (see: Nginx HTTP Server). To be honest, that review was lukewarm and one of the reasons I started thinking about whether I would continue to review every book sent to me or whether I should be more choosy. I decided nearly two years later to be more choosy.

Nginx HTTP Server, Second Edition is an improvement over the first edition. Some of the shortcomings I pointed out have been addressed. The unnecessary chapter about basic Linux commands is gone, for example. The space was filled by expanding the Nginx-specific technical information chapters. In general, the writing quality has also improved a little, although this book still displays the annoying tendency seen in most Packt Publishing books toward awkward phrasing and grammar. Sometimes I wonder if their editorial staff is comprised of non-native speakers of English, in which case I would be more gracious toward the editors themselves while being more concerned about the company’s decision making.

Because there are so few books on Nginx, and because I think it is a web server worth learning about, I’m going to post another lukewarm review of this book. It is improved over the previous edition and is still filled with excellent technical information, but you still have to slog through writing samples like this, from the preface:

…for the past few years the same reports reveal the rise of a new competitor: Nginx, a lightweight HTTP server originating from Russia (pronounced engine X). There have been many interrogations surrounding this young web server. Why has the blogosphere become so effervescent about it?

That is almost identical to the awkward quote I included in my 2010 review of the first edition. A couple of words have been changed, so this was obviously read and updated, but to call it edited is to slight real copy editors.

Bottom line: I don’t have anything new to say over the last edition, except that today there are other books in print, including the recently reviewed and better book on Nginx, Mastering Nginx, also by Packt. Take a look at the tables of contents for the two books and compare them. If the topics covered in Mastering Nginx are enough for your purposes, buy that book. If you need the information that is in this book but not in that one, then Nginx HTTP Server is still your best bet, even with its weaknesses. This information is hard to find anywhere else, and that is why I’m reviewing the book.

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

Realm of Racket

This is not my first review of a book that covers a dialect of Lisp (see: Land of Lisp). That is because I am not alone in believing that learning Lisp makes you a better programmer, even if you never use it for any official project or paid job.

This is also not my first review of a book that is intended for young programmers. That is because I think learning a programming language is a useful skill worthy of pursuit, even if you never use it for anything but fun.

Realm of Racket was written by a group of people, including Conrad Barski, M.D, the author of Land of Lisp. Like that book, this is a book filled with enjoyable art, clear prose, and an easy to follow structure. The examples used in the book are easy to comprehend and do a very good job of illustrating the concepts being taught while also being interesting.

Why a group, though? Well, the back story is that is a book that was written by college freshmen and that is intended for a similar audience. As a result, it is alternately playful and unpretentious, with an eye for fun over drudgery, while at the same time being solid on the technical aspects (due to the supervision of knowledgeable people, or perhaps the young authors were just that good, the book doesn’t say).

So, what is Racket? The short answer is that Racket is a derivative of Scheme, which is in turn a derivative of Lisp. Some like to call them Lisp dialects. The book gives a solid grasp of important fundamentals with a clear description of the technical details. This is done by teaching the reader to program games, bit by bit. It is a fun and clear way to learn.

The book is filled with informal quips and illustrations, even the occasional comic. I have nothing bad to say about the book. I will say that the style is unique and may not suit everyone, but I think that is a direct result of the authors’ intent to pursue teaching programming to a market that does not like stodgy, formal textbooks. If that describes you or someone you know, the book is worth a look.

Disclosure: I was given my copy of this book by the publisher as a review copy.