O'Reilly Book Reviewer

I review for the O'Reilly Blogger Review Program

Wednesday, December 28, 2011

Book Review: Head First HTML5 Programming: Building Web Apps with JavaScript by Eric Freeman and Elisabeth Robson, O'Reilly Publications

By now I have read (or attempted to read) at least 3-4 books on HTML5. I have attended a few webinars by popular speakers as well. However, I have always found myself lost in the details as most books start with a lot of fluff on the history of the web, how it came to be, etc, etc. By the time I was done with the first couple of chapters, I was yearning for the actual stuff and lost interest. Enter the Head First book to my rescue.  Finally here is a book that explains visually about HTML5 and makes it a lot of fun actually while learning it. The authors have done a lot of work in the visuals, the humor, and constant reinforcing of concepts via quizzes, Q&A, etc. In short, I just love this book!

The book is huge - around 600 pages on my iPad. However, it is not all words. There are plenty of pictures and puzzles in each chapter. This keeps the reader focused and interested in the contents. It has a comprehensive coverage of HTML5 and JavaScript. Most, if not all, new features of HTML5 are covered like Geolocation, Canvas, Video, Web Storage, and Web Workers. This is an excellent book for beginners and intermediate programmers alike. Have fun while you learn!

Sunday, November 13, 2011

Book Review: Effective Time Management by Lothar Seiwert and Holger Woeltje (O'Reilly)

I have read several book on time management in the past decade. In today's world of "do more with less", it becomes extremely critical to prioritize, delegate, and complete your tasks and avoid risking being a holdup to organizational productivity. Microsoft Outlook and Microsoft OneNote are great tools and are ubiquitous in the corporate environment. This book teaches not only how to use Outlook and OneNote to manage time but also how to use them to actually get things done and conduct effective meetings.

Overall the authors do a good job of coaching how to use the 2010 features of both products effectively. Some chapters may seem long and cumbersome. The authors provide useful stories to keep things in perspective. The authors now only focus on the "how" to use specific features but also on the "why" it is important. One can easily relate to the situations mentioned in the book. If people treat time as money, then they would probably spend it wisely and not waste it. That is the crux of this book. I would definitely recommend reading this book even if you have read other books on time management.

Friday, September 16, 2011

Book Review: Getting Started With Arduino by Massimo Banzi (O'Reilly)

There are basically three kinds of people in this world - ones who know what Arduino is, ones who don't, and ones who find Arduino interesting but don't know where to start. This book is written for the people in the third category. This includes me.

The format of this book is very different from the regular O'Reilly books. It is written by a geek for geeks. So it doesn't start with a smooth introduction about the basics. It seems to have a rocky start since a lot of assumptions is made about the reader. The diagrams also seem to be hand-drawn on napkins. Chapters 1 and 2 contain a bit of what the author self-admittedly confession to be "fluff". Things start getting interesting from Chapter 3 where the author covers installation on the different OSes and how to figure out connecting the board to your computer.

Chapter 4 really rocks. I think I finally got what Arduino is in this chapter. I immediately ordered my Arduino UNO since I got the hang of it in this chapter. Chapter 5 takes you to the next level by talking about advanced I/O. The author keeps your interest piqued by informing you about the various I/O sensors that can sense the environment. Chapters 6 talks about some advanced circuits using a breadboard, components, and some wires. Chapter 7 ends the book with troubleshooting techniques. Appendices at the end of the book provide reference material for breadboard, reading resistor and capacitor values, and Arduino programming reference.

Overall the book is excellent for getting started with Arduino. It has rekindled mlove for microcontrollers that I hadn't touched for the last 15 years since I pursued a career in Java development. It inspired me to buy an Arduino UNO board and I hope to nurture the interest in electronics in my kids by showing them and let them do stuff as well.

Thursday, September 15, 2011

Book Review: Developing iOS Applications with Flex 4.5 by Rich Tretola (O'Reilly)

With iOS recently supporting deployment of Flex-based applications, it has increased the number of compelling reasons to do the same. Let's face it, Objective-C is hard to learn if you are a seasoned Java/Flex developer like me. There are countless tutorials on the web for mobile development using Flex for Android and iOS. This book is one of a kind in the sense that it provides a neat step-by-step way of mastering the fundamentals of developing a nice iOS application with Flex.

This book stands out in the number of screenshots - there is virtually one on every page. The author has take great pains to explain each concept systematically. Chapter 1 starts off with the typical "Hello World" program which ends with simplifying the complex technique of importing the Apple key so you can develop and debug your precious iOS application. Chapter 2 talks about the different application layouts. Progressively the author goes on to talk about configuration settings, APIs, File System, interacting with the OS, and designing for iOS. The last chapter elaborates the process of publishing your spectacular iOS application to the App Store.

In my opinion, no book has made it as easy as this. The author has provided all the sample codes in a zip file on a website so you can save precious time typing out the code.

Sunday, September 11, 2011

Book Review: JavaScript Web Applications by Alex MacCaw (O'Reilly)

Being a Java Swing developer for many years, I was never a fan of JavaScript. There were no mature tools and frameworks a few years ago. Straight DOM programming was just error-prone and difficult to debug. Over the last few years, JavaScript has come back with a big bang, thanks to a lot of companies, among them, Google. This book is for people, like me, who gave up on JavaScript years ago because of a poor model but need to know new frameworks that help in writing concise, readable code, and also help design scalable and robust architecture, not to mention, using JavaScript with a large team that could be geographically spread out.

Frankly, this book won't teach you the basics of JavaScript. There are plenty of other books for that and the author mentions this up front. However, in my opinionion, the author does a great job of teaching how to use the simplified and concise form of JavaScript, sticking to OO way of doing it. He starts with MVC (and who doesn't love MVC!), events, models, data, controller, state, view, and templating. The examples are mostly in JQuery which is also my framework of choice for JavaScript development.

No real-time discussion of JavaScript is complete without the mention of WebSockets, Node.js, and Socket.IO. The author does a great job of explaining this in chapter 8. He also provides an example of how to make your applications look faster (perceived speed) as compared to actual speed. The later chapters focus on testing and debugging, deploying, and an overview of the Spine, Backbone, and JavaScriptMVC libraries. Appendix at the end of the book provide a JQuery primer and a reference to CSS extensions and CSS3.

I cannot say that after reading this book, I have fallen in love with JavaScript since I am a big fan of Adobe Flex. However, I have many JavaScript projects under my belt and this book is a valuable resource for me to ensure that my apps scale well and that my offshore resources use the sandbox model to avoid tight coupling and ensure reusability.

Wednesday, September 7, 2011

Product Review: The HTML5 Sessions: The Best of OSCON 2011 (O'Reilly)

http://oreilly.com/catalog/0636920022176/

If you were not able to go to the OSCON 2011, don't lose heart. O'Reilly has done a wonderful job of recording the HTML5 sessions into this series. I was amazed at the quality of the recording and the content of the materials. Clearly, this series is presented by the best of the best techies. If you can devote roughly 11 hours of your time to go through these presentations, you will be well ahead of your peers. I believe it is extremely valuable to me. I learned quite a few new things related to architecture, technologies, and tips and tools.

I totally recommend buying this series or getting your employer to buy it for you. It will definitely improve your productivity, expand your thinking into creating better design, make your applications scalable, help you think about managing a large project, etc. I could just go on extolling the virtues of the presentations. I definitely look forward to next year.

Thursday, September 1, 2011

Book Review: Codermetrics by Jonathan Alexander

With more and more companies trying to go with the offshore model for software development, it becomes extremely important to have a pragmatic way of measuring team and individual coding metrics. A lead always should know who the best developers on the team are not just by intuition but with solid data to back up. This book touches on the point of measuring the coder aka software developer.

The book is an interesting read. The author makes it akin to keeping scores in sports. He explain each metric with formula and examples. He categorizes the metrics into skill, response, and value metrics.

Overall, I think the book is very well-written. However, in practice it might be an extremely manual process to capture this data. Software development is a fast-paced activity leaving very little time to maintain data on each coder manually, especially in a large team. I would stick to the automated way of TeamCity + Sonar way of capturing coder metric data for now.

Monday, August 22, 2011

Book Review: Functional Programming for Java Developers by Dean Wampler (O'Reilly)

Functional Programming is back! After 2-3 decades of Object Oriented Programming which made languages like Lisp seem like a dinosaur, the software community has turned its focus back on FP. And with good reason! OOP has fallen short of the demands of concurrent programming leading to convoluted code that only a few experts can read and write. New FP languages today like Scala or Clojure address this issue by providing a robust language that can run on the good old reliable JVM. That way you don't need a huge change in your infrastructure - just add a few jars and you are ready to dive in. This book will teach you how.

If you have been wondering about Software Transactional Memory, The Actor Model, MapReduce, and other buzz words that have been going around lately, its time to pick this book. The author does a fine job of explaining what FP is, what it aims to solve, when to use it, and how to get started with it. The author explains very well the differences between imperative (OOP) and declarative (FP) programming.

This book is a brief introductory book that scratches the FP arena. By no means there is any depth provided. Developers looking for developing expertise in a particular FP language have to look elsewhere but might benefit from reading this book to get a good overview.

Tuesday, August 2, 2011

Book Review: Just Spring by Madhusudan Konda (O'Reilly)

Spring has become a huge universe! In fact, it has grown so much that any book you buy would be intimidating at first. Even well-known authors have difficulty in keeping it simple. They go into details of how to do the same thing in different ways (annotation, autowiring, etc, etc) that at the end the user is flabbergasted. Enter the "Just Spring" book. This book is exactly that, just Spring! Plain and simple. No noise, no dust.

In just 5 chapters, I learned a great deal about the fundamentals of Spring. Enough to get me started on enterprise level projects where I can build on my foundation. The power of this book lies in its simplicity. Most books on Spring are around 300-400 pages. This book is 62 pages. What can one learn in 62 pages, you might ask! Here's what I learned in one weekend - Basic mechanisms of dependency injection, bean life-cycle, bean instantiation techniques, autowiring techniques, event handling, JMS, and data integration. You might complain that it didn't cover bells and whistles like Spring Security, Spring Webflow, etc, etc, but these are add-ons that you can grasp easily once you get your foundation strong. I applaud the author for keeping it simple yet useful and O'Reilly for publishing it.

Saturday, July 23, 2011

Book Review: Practical Packet Analysis using wireshark to solve real-world network problems by Chris Sanders (No Starch Press, Inc)

Unlike other books on networking that I have read, this book assumes nothing about the reader. Any general IT professional should be able to pick this book up and pick up the concepts right away. The author starts with very basic concepts and builds slowly and steadily over the subsequent chapters. I learned how to sniff packets and analyze them which has become my new favorite hobby. Chapters 1 and 2 start with basic networking concepts, protocols, layouts, etc. Chapter 3 explains how to get started with Wireshark, the tool of choice for this book. Chapter 4 explains how to analyze the packets that were captured. Chapter 5 delves deeper into advanced Wireshark features. The rest of the book goes deeper into explaining lower and upper level protocols, real-world scenarios, slow networks, and security.

Recently I had a crisis at work. A group of hackers had attacked the corporate network and as a result everything was shutdown for security reasons. As the network was gradually opened up for business, our business partners were not able to call some of our web services. That was a puzzling thing as other web services were reachable. As a lead for the application development team I had no idea how to debug this except to set up a SWAT team meeting with the infrastructure and networking team. I was the weakest link in the room as I had no idea what the terms and terminologies meant. Needless to say, I was embarassed. The one thing that was spoken about frequently in those meetings was Wireshark. I couldn't find a good book on Wireshark at that time so the moment this book came out, I decided to review it. I am really impressed by this book. Not that I am waiting for a crisis at work, but the next time I would definitely be well-prepared thanks to this book.

Sunday, July 17, 2011

Book Review: Building and Testing with Gradle by Tim Berglund and Matthew McCullough

My first reaction when I heard of Gradle was a sarcastic "Yay! Yet another build tool that will frustrate me when I use it on my enterprise projects". However, as I read through this book, I found a new promise to liberate me from the complex world of Maven. The authors have done a fantastic job of explaining how Gradle provides the flexibility of Ant, dependency management style of Ivy, the intelligent defaults of Maven, the speed and hashing of Git, and the meta-programming power of Groovy.


Highlights of this book:


- Easy to follow, lots of examples. I was able to run most of the examples without any hassle.


- You don't have to know Groovy to understand this book


- The last chapter covers how to do enterprise level multi-project builds. That was really helpful.


- No clutter or unnecessary information that you can find elsewhere. Nice, small book of 110 pages.


- I was able to complete this book in about 3 hours and I am a slow reader!


I had the pleasure of attending the No Fluff Just Stuff conference in 2011 and boy, was I impressed! Both the authors are very well respected in this field. If you have been living in the complex world of Maven where you are afraid to touch something because it might break something else, then this book is of you. If your enterprise is going to continue to use Maven, it does not in any way mean that you cannot unleash the power of Gradle. This book will teach you how to do that. As an added bonus, this book has been reviewed by Ken Sipe, the CTO of Gradleware, someone I know and respect!

Saturday, July 16, 2011

Book Review: Mastering the Nikon D7000 by Darrell Young

Nikon D7000 is Nikon's best DSLR camera ever and I have no words to express that in any language (and I know five!). Just saying that you own one is enough to elevate your status in the Nikon community. However, pictures speak louder than words and your elevated status would be short-lived if you take sucky pictures because you didn't understand the features that make this camera awesome. This book by Darrell Young is just the one you need to squeeze the juice out of your Nikon D7K. That is after you have woken up from reading the bland user manual that shipped with the camera.

The author has neatly put "My Recommendations" at the end of each major section and "My Conclusions" at the end of each chapter. This would help in refreshing your memory periodically since you wouldn't have to read the whole book over again. This book cleared my understanding of things I didn't follow in the user manual. Example, "Auto Gain" when shooting with "Multiple Exposure". Thoughout the book valuable tips are given plus the author has provided supplemental material (thus reducing clutter in the book) on his website (firmware upgrade, video editing software, understanding depth of field, aperture, and shutter speed, etc).

This book will help you get the "oohs" and "aahs" from your family, neighbors, friends (including facebook friends), and curious strangers. Master this book and become an instant celebrity like I did!

Wednesday, July 13, 2011

Book Review: Virtualization - A Manager's Guide by Dan Kusnetzky

Unless you have taken a sabbatical for the last couple of years, virtualization buzz words have become commonly talked about topics in IT organizations including infrastructure and application development. In fact, even business contacts have started taking notice of virtualization and are frequently questioning the IT department on what initiatives are being taken on that aspect. This concise book puts all flavors of virtualization together neatly organized in to different chapters.

The first chapter gives an overview of the entire stack of virtualization - Access, Application, Processing, Network, and Storage along with the broader aspect of Security and Management across each layer. Chapter two explains Access virtualization with a nice flow of what it is, when is it the right choice, providers, and a few examples. This flow is maintained in the remaining chapters covering the other types of virtualization mentioned above.

Overall, I found this book to be very concise as a pocket guide covering virtualization broadly. Indeed, it is targetted at managers since it is at a high-level. If you are a techie looking for depth, you are better off looking elsewhere.

Tuesday, June 28, 2011

Book Review: Packet Guide to Network Protocols by Bruce Hartpence

Before I start my review of this book, let me narrate a story. Recently I had a crisis at work where certain users were not able to invoke web services. Of course, we had well-tested software using agile methodology and all that. My team knew our front-end and our backend very well. What we weren't well-versed with was the connection by which our front-end communicated with the backend. We were in a war room with the networking experts for 2 days and I couldn't understand jack of what they were talking. I was clearly an "outsider" in their elite circle. Hence, I got interested in this book.

This book is divided into seven chapters starting with networking models (OSI, TCP/IP) and ending with subnetting. Most of the material is dry but the author keeps the flow going steadily by providing screen printouts of Wireshark and explaining it with his pedantic style. Questions, answers, and exercises at the end of each chapter reinforce your learning. I liked chapter 5 (Network equipment) and Chapter 7 (Subnetting) very much as it is explained well and also I can relate it to my work.

This book is certainly not for the faint of heart. It is not your grand-father's "Hello World" book. In fact, it reads like a computer science text book. The author has pain-stakingly tried to simplify it as much as he could. As Einstein said, "Keep it simple but not any simpler". A background in networking would help refresh your knowledge and this book serves exactly that. If you are an absolute beginner looking for a basic book on networking, this book is not for you. However, if it's been a few years since your last networking class, you should be able to pick things up with the help of this book.

Thursday, June 23, 2011

Book Review: Developing Android Applications with Adobe AIR by Veronique Brossier (O'Reilly)

With the release of Adobe Flash Builder 4.5, and more lately 4.5.1, mobile development with Flex and AIR has taken off at a neck-breaking speed across all major platforms - Android, iOs, and Blackberry. While there are plenty of resources on the web that cover "hello world" type applications, no article covers basic concepts of AIR + Android in depth. In order to develop a meaningful Android application that uses multi-touch, accelerometer, camera, geolocation, microphone, and video, you need to first understand these concepts. This book covers all those topics in addition to advanced topics like hardware acceleration.

I was delighted by the author's simple style of explaining these concepts. It makes this book a pleasure to read and easy to follow step-by-step. I highly recommend this book to anyone doing AIR development on Android. This book and videos on the Adobe developer site for connecting to server side would (Java/Spring/Hibernate) would be a great resource to keep handy.

Thursday, May 19, 2011

Book Review: Developing Android Applications with Flex 4.5 by Rich Tretola

This book has arrived at the right time. Android is getting exceedingly popular but there is ever greater need to write rich mobile applications today than ever before. Mobile Internet usage will exceed laptop/desktop usage and very soon the term "smartphone" would be obsolete. Android and Flex is a powerful combination and Adobe has done a fantastic job with providing support for
mobile programming with the latest release of their Flash Builder IDE.

Without much fluff, this book dives straight into the "hello world" application. Within the first 10 pages, you are all set to write your first app and debug it. Most other books waste pages and pages in the first couple of chapters going into the history of computing and how we have arrived today at mobile programming. I am sick of that! So this book was a pleasant surprise in that respect. Once you are done with Chapter 1, you have gained enough momentum to just breeze through the rest of the book. Chapter 2 covers layouts which is useful info about the various UI design choices you have to make. Chapter 3 covers permissions, scaling for screen, orientation, etc. Again, delightfully no fluff! Chapter 4 is the best chapter (for me!) as it covers using the various device features like accelerometer, GPS, Camera UI, Camera Roll, Microphone, Multitouch and Busy Indicator. All this within the Flex mobile framework! The book concludes with a chapter on publshing to Android Installer.

What I like about this book is that it is pretty light-weight, quick and easy to follow with step by step instructions! Most books that I have read have at least 30%-50% wasteful material which makes them exhausting to read. I can't believe I finished reading this book in about 4 hours (and I am a slow reader!) and fully grasped what it takes to develop a solid Flex mobile application. I look forward to more from this author.

Monday, May 16, 2011

Book Review: Learning Android by Marko Gargenta

This book is written for people having a reasonable experience with Java. I was able to breeze through this book in a couple of hours and "got it" what Android platform is about. Most of the book is about developing a Twitter App with each chapter taking the application gradually to the next level. Don't let that fool you. Each and every concept about Android ranging from the UI controls, File System, Database, Services, etc, are thoroughly explained. The book ends with chapters on the Android Interface Definition Language and the Native Development Kit. These concepts are important to know when dealing with Interprocess Communication (aka cross-application communication) and for accelerating performance and are thoroughly covered.

If you are wanting to learn Android in a hurry and want to finish in a couple of weekends, this is the book to go for. Otherwise, just go through the official documentation and spend months trying to write a decent application.

Monday, March 21, 2011

Book Review: The Productive Programmer by Neal Ford

Today the pressure is always there to "do more with less". IT departments have shrunk to half their size and those left behind are left to pick up the work left behind as well as manage their own. This book has arrived at the right time. I have personally found this book to lower my stress and also make me appear cool at the office whenever I shared a trick or tip. I give full credit to the author when I am asked how I learned so many tricks.

The book is divided into two parts - Mechanics and Practice. The first part talks about the various productivity tools for different platforms. It is very thoughtful of the author to cover all major Operating Systems. The second part talks largely about high-level approaches to productivity.

Neal's hand-on approach to ditching the mouse and getting the control back to the keyboard emphasizes on being street-smart with your machine. The best thing I liked about this book is the variety of tools explained for various situations, including acceleration, automation of repititive tasks, using virtual desktops, avoiding distractions, writing Ruby scripts to enhance productivity, etc. I would definitely keep a copy of this book close to me and periodically refer to it. I look forward to Neal's suggestion of having an online repository for tools, tips, and mechanics for creating more productive programmers. Some of the tips won't sweep you off your feet but most of the tips were a delight to read and start using right away.

Tuesday, February 22, 2011

O'Reilly Book/Video Wish List

O'Reilly Book/Video Wish List
  • Developing large web applications
  • Designing Web Interfaces
  • Cloud Application Architectures
  • App Inventor
  • Analyzing Business Data with Excel
  • Event Driven Applications with Flex 4
  • Facebook: The missing manual, third edition
  • Learning Flex 4