Monthly Archives: March 2011

A Version Labelling Scheme for Software Product Development

Computer software typically has a . separated version number. These numbers have value in helping to understand which version is being used. There is a shared understanding that things go from the most significant part of the version to the least. Having some precision around talking about a version labelling scheme is useful for setting up product lifecycles and communicating the details of a product.

I’ve heard numerous ways of thinking about the build numbers, normally involving terms like major and minor. I’ve never quite been able to keep the terms and distinctions clear in my head, so was pretty excited to recently hear a different approach, which I’ll share below.


In numbers this will look something like:

The idea is:

Version — a major product version. Customers care and know about versions. Versions are where potential breaking changes might happen.

Release — a major product release. Customers will care about releases. New functionality and bug fixes are introduced in releases.

Modification — a publicly available bugfix modification to the software. Users should be able to safely move between modifications of a product without breaking things. Modifications are focused around fixing problems in software.

Build — the internal build number for the software. A build is useful for the unique identifier of the software by development. The build number will be incremented automatically by the build system. Typically an officially released modification will only have one build number.

Another factor to consider in the system above is that the first two numbers are typically controlled by the Sales and marketing arms of a company, and the last two should be controlled by engineering. In fact if the last two numbers are being done correctly they should be automatically incremented, not being changed apart from automated systems and well defined rules.

For the first sets of numbers, engineering should be able to suggest that new functionality should be increasing at least the release, but it is a sales and marketing decision as to how much of an increase these might get.

Data Source Handbook By Pete Warden

The Data Source Handbook is a short eye opening book on the data and apis that are freely available on the web.

It gives a good quick introduction to what’s out there, helping to feed the ideas on kind of data is easily accessible. This kind of information may be easily available at google, but it’s well worth the price to have it easily accessible in one spot for easy reference.

With an increasingly social and mashupable web, being able to pull in data from a wide range of sources is essential. The Data Source Handbook provides a good starting point for getting some of the public data off the web.

[this book was reviewed as a part of the O’Reilly Blogger Review Program]

iOS 4 Programming Cookbook By Vandad Nahavandipoor

The iOS 4 Programming Cookbook is an interesting book. When reading it my emotions ranged excited, happy, pleasantly surprised to puzzled. One of the things I often try and do when reviewing technical books is to try and understand who the target audience is, put myself in their place, and do what they would do. With iOS 4 Programming Cookbook style seemed to vary greatly in who it was targeting. The beginning covered many very basic topics, while later stages required more understanding. Overall it seemed to be aiming at someone without extensive programming experience, and was focused on making it possible for most people to follow the recipes.

I’ve not read that many programming cookbooks in the past, preferring to aim at getting a deeper understanding of topics than finding the “repeatable recipes” covered in programming cookbooks. That said, the cookbook format seems useful in an iOS and ObjectiveC environment, where there are many areas that require the kind of boilerplate code that can be found in cookbooks.

One of the best uses that I found for the iOS 4 Programming Cookbook, has been to quickly identify device features for iOS that can easily be used, and the APIs for working with them. I’ve used it a couple of times when thinking through device options, and how to leverage the functionality of iOS.

Overall I’d recommend the book to someone who is looking at building something for the iOS that utilises the hardware and software provided by Apple.

[this book was reviewed as a part of the O’Reilly Blogger Review Program]