OmniGraffle 5: Diagramming Essentials

I like to write. I write for a living. However, working with words to craft sentences is not all I do. My job title is “Senior Technical Documentation Specialist.” Documentation includes more than verbal descriptions. Sometimes, I need to create the perfect diagram.

My job provides me with a MacBook Pro and software. While I often use Dia for diagramming on Linux, at work I use OmniGraffle Pro. Both are quality programs for creating diagrams quickly and easily with good results. They are both similar to Microsoft’s Visio.

I recently had the privilege of reading OmniGraffle 5: Diagramming Essentials by Ruben Olsen.

This may be the strongest title I have read from Packt Publishing. In the past, I have been quite hard on them for poor editing and weak expression of ideas. This is not the case here. The book is well written, clear, and filled with useful information.

I sat down over the last week and worked through all of the book’s examples after reading through the text. I learned a number of  new tricks and shortcuts that will make using the program easier and more enjoyable.

The book begins with an introductory chapter that helps ease the novice into using OmniGraffle for the first time. The chapter includes an extended, step-by-step walkthrough to help the new user create her first diagram. It ends with a set of guidelines that everyone should learn for creating quality visual diagrams. This chapter is the base on which the rest of the book is built. The author leads the reader through stencils and templates, including how to import and use those built for Visio. Then he directs attention to shapes, tools, editing, and making diagrams look good. The book contained no filler or fluff, every page was useful and clear.

If you use OmniGraffle and want a written resource to help you learn it better or for the first time, this book is worth a closer look.

Disclosures: I was given my copy of this book free by Packt Publishing as a review copy.

Cooking for Geeks

Cooking for Geeks is one of the most fun books I have read in a long time. I don’t get lost in the kitchen, but I’m certainly no great chef either. What this book does that is different from typical cookbooks is that instead of presenting a list of recipes, it talks about the science behind combining foods to create tasty dishes.

The book starts with an introduction to the kitchen; to tools, equipment, organization, and a way of thinking about them that is clear and easy to understand in the geek mindset. What does that mean? Those of us who call ourselves “geeks” have a certain way of looking at the world. We like to break things down to their components. We are not satisfied with only knowing what things do, but we want to understand how and why things work the way they do. That is what this book excels in teaching.

Chapter topics include science-based discussions of flavors, ingredients, temperatures, cooking time, and more. These things are directly related in the text to results. The information is presented in a manner that is easily understood by people used to changing one parameter over iterations of a process to discover what effect that one parameter has on the outcome. I like it.

This is not a reference book, which is what I consider most cooking related books to be. You don’t pick it up and say, “Let’s look for a nice dessert to make for when Aunt Mardella comes to visit.” Instead, you get something more valuable; the ability to look in your cupboard to see what you have, understand how those things could fit together to make something wonderful, and pull something together based on your understanding of the ingredients, processes and interactions available. That rocks! For this reason, the book receives a very high recommendation from me for anyone interested in learning about the science behind cooking (and there are some very interesting recipes included as well, so if that is what you are looking for, you won’t be disappointed either).

My wife is a talented cook. She read the book after asking me why I was reading about cooking. She is not a geek, and she also loved the book. She found the information enlightening. After years of doing things “because this is the right way” she was thrilled to know some of the reasoning behind those “right ways” and to learn several new ideas and methods.

Disclosures: I was given my copy of this book free by O’Reilly as a review copy, I also write for O’Reilly.

The Manga Guide to Molecular Biology

It has been a while since I have reviewed a manga book. This is one of several atypical educational books that use graphic art to help teach difficult concepts or illustrate the action. This is another wonderful entry in the “Manga Guide to…” series that I have been reviewing.

The Manga Guide to Molecular Biology follows the actions of a two students who failed their molecular biology class and have to take a special summer course. The story line is enjoyable and eases the reader’s entry into the topic rather than being a distraction.

The book covers all the main questions and topics you would expect: what is a cell, what are the common parts of a cell, how do cells combine to make various organisms, what are proteins and how do they function within a cell, what is DNA and what are genes and how do they work to express the information coded in them? My favorite part was chapter 5 which focuses on potential applications for everything discussed earlier and theorizes what the future may hold in the field.

I work in a software project that is helping biologists do research, including helping process the vast amounts of data that comes from genetic sequencing. As a result, I have become familiar with most of the content this book presents. I believe the book is accurate and it is clear. The story created to assist with that presentation is enjoyable as well. I have a seven year old daughter that is reading the book with great interest. Some of the science is above her grade level, but her attention remains fixed on the art and the story and she is absorbing some of it as she reads.

Overall, I would say the book is a success and recommend it without reservation.

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

Nginx HTTP Server

I started using Nginx as my primary web server a little over 18 months ago. At the time, I was using an underpowered server with low memory, and I wanted to replace Apache with something lighter. Even though I still love Apache for its power, configurability, and contributions to the open source world, there are times when other options are called for.

Nginx is an http server written in Russia intended for high traffic websites with a mind toward network scalability. It also works great as a lightweight replacement for Apache on my little server with 256MB RAM and one processor (that has since been upgraded, but I didn’t switch back). Even the day I had a post on the front page of of a popular social networking website, my little server withstood the onslaught without crashing.

The hard part of making the switch was finding documentation. As Nginx was birthed in Russia, I presume good documentation may be found in Russian, but since I don’t know the language that doesn’t help me. Finding documentation in English was a chore. Simple things were available at the main Nginx website and wiki (which have also grown and improved over time), but I had a difficult time finding detailed information about specific things I needed, such as translating Apache 301 rewrite rules into a format that would work in Nginx so that I could continue to use WordPress with pretty URLs.

Nginx HTTP Server is the first English book I have seen that compiles quality documentation and instruction for using Nginx. The information is current, detailed, and clear.

Some of the topics in the book seem to me to be a bit odd. There is a whole chapter dedicated to basic Linux shell commands and administration. Perhaps this will be useful for some, but I would imagine most people interested in Nginx will already know the topic. The second chapter discusses downloading source code, configuring, and installing the traditional way along with writing up a SysV init script for the service. I think that is good information to include. Strangely missing is information about installing Nginx from Linux distribution repositories, which is far easier, especially for the presumed newbies who needed the first chapter on shell commands.

The real value of this book is in chapters 3 – 8. Here we dive deep into configuration options, file syntax, modules, variables  and more. We learn how to set up PHP and Python with Nginx, which will make hosting most popular website software like WordPress, vBulletin, or anything built with Django fairly simple. Also discussed are similar methods of enabling other languages and platforms like Perl or Ruby on Rails.

The last two chapters are great for people coming over from Apache. One discusses how to use Nginx as a front end proxy to speed up a website running Apache. The other discusses how to make a full switch. Both include great comparisons and honest discussions of the strengths and differences between Apache and Nginx, including some good advice about when one may be a better choice than the other.

I have a lot of good things to say about this book, and I’m glad it exists. It will remain on my shelf as a useful reference for specific modules and configuration details that are not committed to memory. Comparing its contents to what I already know of Nginx, I believe the book to be technically accurate and current.

The book does have one glaring weakness, though. The quality of the writing is inconsistent. Most of the time, the text is adequately clear and communicates well. However, there is an annoying tendency throughout the book toward awkward grammar and odd phrasing, perhaps as often as one occurrence every two or three pages. This tells me two things: the book was probably written by someone who is not a native English speaker, which is not a big deal at all, and that the copy editing and proofreading was weak, which is a major failing. The initial cringe-worthy portion occurs in the very first paragraph of the Preface:

…for the past few month 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 the pronounced newborn. Why has the blogosphere become so effervescent about it?

Packt Publishing generally releases books on technology that are current and contain accurate information. The company focuses their efforts on very narrow, niche topics that they alone offer, and I like that. They also have a disappointing habit of being filled with this sort of writing. This book is no exception. Since, like many of their offerings, this is the only book on a topic that is interesting and useful to a specific group of people, I can’t help but recommend that people using or wanting to use Nginx take a look at the book. Still, I would love to see the language of their books rise to the level of their technical content. This would allow me a clearer conscience in recommending their products.
Disclosures: I was given my copy of Nginx HTTP Server free by Packt Publishing as a review copy. I am also a professional writer for a software project and have written for magazines, websites, and books for both O’Reilly Media and Pearson Education (both Prentice-Hall and Sams).

Interviewing the Authors of Unix and Linux System Administration Handbook

Not long ago I had the privilege of interviewing the authors of what I consider to be the best book for learning systems administration with Unix or Linux from a large, enterprise perspective.  This book is unusual in another way: it was published by Prentice-Hall and the forward was written by one of their competitors, Tim O’Reilly, the founder and head of O’Reilly Media. That says something.

My interview with the authors appeared today on InformIT’s website. Take a look.

Hackers: Heroes of the Computer Revolution

Hackers: Heroes of the Computer Revolution is a history of the beginning, growth and rise of the use of computers by people outside of the big businesses and governments that worked to create them in proprietary silos. This 25th anniversary edition of Steven Levy’s classic book retains its detailed and interesting chronicle of the events that brought computing power to the masses. It also records some of the problems, pitfalls, and failures along the way. Here you will find many names that computer lovers are sure to recognize from Bill Gates to Richard Stallman as well as many that are not as well known, but that deserve to have their victories recorded also.

I greatly appreciate that this book exists. To be honest, it wasn’t always a fun read. That isn’t a commentary on the quality of the writing, but rather on the ups and downs of the narrative. There were times when I found myself wishing I was there in the middle of the action and other times when I had difficulty knowing who to root for. There were still other moments when I found myself cringing as I read about events long past, wishing that different decisions had been made or disappointed at the actions and attitudes of geniuses.

I’m not going to spoil the book for anyone interested by giving out specific details. All I’ll say here is that the story begins with a bunch of model railroaders who love technology and who fall in love with a computer they discover they may access freely in an out of the way room in a building at MIT in the late 1950s. They took their love of piecing together technological gadgets in imaginative and creative ways (hacks) and applied it to this new tool / toy. The story follows their exploits and adventures through the 1960s en route to a second wave of hackers in Northern California in the 1970s who take the love home, creating machines on a smaller budget that could be used by ordinary people. Hot on their heels were another group of Californians who led a third wave, hacking software to do things never before dreamed of and leading the way to the commercialization of the computer. The book ends with a series of afterwards, one written when the book was first published in 1983, another written 10 years later, and another just added to this newly published edition. Each adds details and commentary to the history that were not known at the time of the original interviews and research.

If the history of hacking, free and open source software and the attitudes embodied in the current movement interest you, you will appreciate this book greatly.

Disclosures: I was given my copy of this book free by O’Reilly as a review copy, I also write for O’Reilly.

Ubuntu Up and Running

I just received my copy of Ubuntu Up and Running. I had the privilege of being one of the tech reviewers, so consider this more of an announcement than a review (as well as an invitation to take a look and see if the book interests you–Robin Nixon is a good writer). It is similar in focus to another book that I have contributed to heavily, The Official Ubuntu Book; (5th Ed coming very soon!). Both are aimed at being an introduction of Ubuntu to people new to Linux, but each covers the topic differently and in differing depth and each has information that the other does not.

97 Things Every Programmer Should Know

I have read programming books for years. There was a time when I could write a “Hello World” program in each of seven or eight languages. That time has passed, mainly because I haven’t been intimately involved in any specific software project for many years. Still, I have this habit of reading programming books and enjoying them, perhaps in the hope or expectation that one of these days I’ll find myself with a project in front of me, time to work on it, and motivation to learn a new language or tool to make the project’s vision a reality. Well, here’s the newest book of programming foundational tips that I have read.

97 Things Every Programmer Should Know is a collection of short, two page essays, each by an experienced programmer. The book is a collection of tips and tricks for writing code that works, that is maintainable both by the author and by others, and that will best fit the situation. While the book doesn’t measure up to some of my all time favorites in the genre like The Art of Unix Programming or The Pragmatic Programmer, it wasn’t meant to. This is not an in depth guide to underlying philosophies of coding practices and standards, but quick hit and run articles that would be easy to fully grasp and absorb in short five minute bursts, such as during work or study breaks (which is how I read the book).

Some of the topics included in this book will seem obvious such as “Don’t Ignore That Error” and “Comment Only What The Code Cannot Say,” and some tips are going to serve only as reminders to best practices that are sometimes ignored (to our own peril) like “Check Your Code First Before Looking To Blame Others” and “Make Interfaces Easy To Use Correctly And Difficult To Use Incorrectly,” there are some real gems in the book that aren’t so obvious like one author’s instruction to “Read the Humanities” because they are a great tool to help programmers learn to effectively interact with people and not just software and the advice that says “Don’t Just Learn the Language, Understand Its Culture” so that you will write effectively and idiomatically within each language, rather than writing the same thing using different words.

I can’t say that this is a must-have book for experienced programmers, but anyone at the novice to intermediate levels would certainly benefit from what the book contains. I’ve enjoyed reading it.

Disclosures: I was given my copy of 97 Things Every Programmer Should Know free by O’Reilly as a review copy, I also write for O’Reilly.

Open Government: Collaboration, Transparency, and Participation in Practice

The most basic definition of open government is the idea that people have the right to access the documents and proceedings of government. Being able to closely examine decisions, policies, and procedures is foundational to having the ability to make intelligent and informed decisions as a citizen, especially in a democracy where an informed electorate is vital if good choices are to be made by voters when selecting leaders or holding them accountable.

The Open Government movement is not officially organized as a group or party, rather it is a growing collection of concerned citizens who want to help create better government by increasing citizens’ access to information. It has been heavily influenced by the open source software movement and has similar aims: increased collaboration through making options available to any interested party willing to read and study, increased transparency by making source materials freely available for anyone to peruse and examine, and increased participation by eliminating closed systems wherever possible. While this idea was broadcast most widely in the campaign and early days of Barack Obama’s presidency, this is not a one-sided political issue as much as it is an Enlightenment era system of belief, enshrined in the United States’ Declaration of Independence and Constitution, now being updated for the digital era which is filled with technologies which could make those ideals more easily fulfilled.

Open Government: Collaboration, Transparency, and Participation in Practice is a collection of 34 essays written by a wide variety of people who are interested in both promoting the philosophy of open government and in suggesting practical ways to implement procedures that will assist in applying that philosophy. The range of topics covered is diverse and interesting. Included are thoughts about governmental uses of information technology that currently limit openness and specific recommendations for remedying the problems, creating a wider variety of methods for people to access government data and increasing access across society, enabling greater innovation among those not directly connected to government such as through the creation of specific APIs so that outside research may be more easily accomplished using government collected data (paid for with public funds via taxes and therefore publicly owned data). We have essays that consider new and effective ways for current government officials to communicate more easily and directly with the people who elected them, discussions of how increased openness in government could decrease the influence of monied interests in governmental policy and could replace that with a greater influence by and for the electorate. There are clear and logical presentations on topics like why using open standards for data storage matters, especially with regards to publicly owned data as collected and used by governments, as well as some great arguments for the use of open source software to make government more efficient, transparent, and flexible in a rapidly changing world.

I greatly appreciate that this book exists. I would love for a copy to end up in the hands of every member of the government as well as any interested person planning to run for an office. These are policies that would greatly benefit the original intent of the founders of the United States (of which I am a citizen and where the book was written) and would be useful in any nation willing to carefully read and consider the ideas being proffered.

If this topic is of any interest to you, and I argue that it should be, this book would benefit you in your thinking. Go find a copy and read it.

Disclosures: I was given my copy of Open Government free by O’Reilly as a review copy, I also write for O’Reilly.

Regular Expressions Cookbook and Mastering Regular Expressions

I have a copy of Mastering Regular Expressions by Jeffrey E. F. Friedl on my bookshelf. I bought it a long time ago to try to improve my skills at using regular expressions to search text and check input against desired norms. While that book is clear and well written, I am sometimes a bit impatient and it was taking too long for me to figure out how to do the things I wanted to do and I got distracted or busy before I read enough to complete the task (I ended up using Google and finding what I needed quickly). I have to admit that I still don’t have the regular expression skills I want to have, although this book promises to teach them to me. Someday it may do so.

When I heard that O’Reilly had an upcoming regular expressions offering to add to their Cookbook series, I was interested, but was finishing up my own title in the series. Once my task was finished, I talked to some friends at the publisher and they kindly sent me a review copy of Regular Expressions Cookbook by Jan Goyvaerts and Steven Levithan. Now that I have had time to read through the book, I can say that it exceeds my expectations and hopes.

What I was looking for was a book that would teach regular expressions while giving concrete examples of real life use cases that I could immediately put to work. This book is filled with them.

Chapters one and two lay the foundation by covering the basics of what regular expressions are, using them to search and replace, match text, and other basic skills. This is good, but where the book really sets itself apart is in chapters three through eight, which are overflowing with useful recipes for things like validating ISBNs, finding URLs within text, stripping leading zeros or matching IP addresses (IPv4 and IPv6). The book has an obvious organization scheme, a ton of useful recipes, and a useful index. Finding what you want or need is very easy to do, and unless your needs are especially unique or esoteric, you will probably discover exactly what you require in the book.

The best part of the book is that every example uses a clear format that sets the stage for an easy discovery of needed information.

First, a problem is stated, such as in chapter four’s item, 4.1 Validate Email Addresses, which says, “You have a form on your website or a dialog box in your application that asks the user for an email address. You want to use a regular expression to validate this email address before trying to send email to it. This reduces the number of emails returned to you as undeliverable.”

Next, a solution is defined, with code examples, accompanied by a description of the particular details that are vital to comprehend when implementing the solution. Next, each recipe has a section for further discussion that leads to a deeper understanding of the regular expression being used and the context in which it is being used.

Especially wonderful is that every recipe has very specific and clear code examples for use with Perl, PCRE (the “Perl Compatible Regular Expressions” library for C, which isn’t identical to Perl’s use of regular expressions, even though it tries), .NET, Java, JavaScript, Python, PHP, and Ruby with notes on which specific release versions or variations of each are covered. When differences exist in the implementation in these environments, those differences are clearly noted and discussed. This feature will make life much easier for people who need to use regular expressions in more than one language context and is a feature of the book I appreciate greatly.

The other regex book on my shelf will remain there until that mystical moment “when I have time to study it.” This book will be used regularly as a reference.

Disclosures: I bought my copy of Mastering Regular Expressions, but was given my copy of Regular Expressions Cookbook free by O’Reilly as a review copy, I also write for O’Reilly and have a book in their Cookbook series.