Archive for the 'Books' Category

Contribute to a book

O’Reilly has started their first trial for a open book content contribution project. Because it is about software engineering I think most people working in this very sophisticated and world changing domain have a strong opinion to some points. It will also be interesting how well this works for O’Reilly. The concept was and is used for a lot of smaller book projects but I think O’Reilly ist the first big commercial publisher who is using this technique.

A comprehensive overview of useful data mining algorithm

The book Programming Collective Intelligence from Toby Segaran is a practical useful guide through the most common data mining, more exact classification, algorithms. The book covers the traditional algorithms as decision trees, naive Bayesian classifier, neural networks, clustering and not so common ones as support-vector machines  and non-negative matrix factorization. The last one was new for me. The first paper seems not to have surfaced before 2000 so it is relatively new technique and has shown very good results in the case of feature extraction of large numerical spaces. Also optimizing functions like simulated annealing and genetic algorithm are mentioned. Interestingly, there is also a small example for genetic programming.
All algorithms are explained with examples and small programs in Python. The only thing I’ve missed is a mathematical representation in addition to the explanation itself, but at least all utility functions are explained more formal in the appendix.

Found a missing piece

I’ve currently read the book Agile Management for Software Engineering written by David J. Anderson and I have to say that the book really fill a gap in the description of agile practices. Anderson describes very well why agile methods work and that maybe have the same impact as the Toyota production system models had on the manufacturing side. Besides explaining the advantages very well, the book provides to not so common highlights: the comparison of a cost oriented management method against throughput oriented, the reasoning why most resources used for software development are constrained ones and, unique for a book on this topic, metrics to keep track of an project, plan buffers and quantify the output value.
An other interesting point, and rightfully so, is that he emphasis that the phases of software development are always the same, analysis, design, implementation, test and deployment, only the the time then and the way how they are executed are different.
The second part of the book makes a very good comparison between traditional management methods and various agile ones, namely XP, SCRUM and FDD (Feature Driven Development). All methods are presented with metrics for planning, tracking and costs so he can directly show how and then each has advantages.
The book is available since some years but because I was not so fond of the ideas behind FDD, which I misunderstood somehow, I never read it until now. After reading, I highly recommend it for everyone who thinks that a piece of knowledge was missing if you have to argument in favor of agile methodologies and practices.

Best book so far of 2007

The book Beautiful Code edited by Andy Oram and Greg Wilson is a collection of 33 essays about what experienced developers declare as beautiful code. The essays cover a wide range of languages or have you lately seen any book where you can find code snippets from Java, C#, Lisp, Perl, C/C++ and Fortran? Nearly all articles are well written and tell a story about a neat peace of code which solves a mostly not so simple problem well. My five favorites are the following ones:

  • A Regular Expression Matcher by Brain Kernighan
    A story how interesting and simple a regular expression method could be …
  • Beautiful Tests by Alberto Savoia
    Why binary search implementation is not so simple as most people think …
  • A Spoonful of Sewage
    Handle concurrency is hard, handle it in the Solaris kernel well is a challenge …
  • Beautiful Debugging by Andreas Zeller
    How delta debugging came into the world …
  • Writing Programs for “The Book” by Brain Hayes
    A simple geometric problem which is not so simple as it seems on the first glance …

All other stories are also worth to read, although sometimes I had to admit I got lost in code (especially in Fortran or Lisp).

Release It!

Michael T. Nygard’s book is one a rare one because it tells something about the time after a project was finished and is released for the first time into the world. The basic message is that you can not anticipate failures which certainly will occure if the system is used. Besides failures caused by programming failures, a lot of failures occure because the capicity of the system was never tested and the constraints of it indifferent situations were not correctly identified. He presents patterns and anti patterns for stability and capacity. Some are well known, but often not easy to handle (e.g. resource pooling), others are interesting as the circuit breaker which has the purpose to “break” the normal handling of operations if the failure rate becomes to high. After it has “opened”, all calls will fail immediately, but all ongoing transactions can be completed and the resources can recover, so no cascading failure happens. Another favorite is that we have always the wrong intuition about scaling, we always think linear, so as example I’ve clearly underestimated the change of database size from 100 GB to 1 TB and 2TB and so on.

So QA and load tests are not needless, far from it, but you should expect that the only accurate model of the world is the world itself. Building script able management interfaces, decouple systems as much as possible and expect that users will do unspeakable things will help. With the time and accurate data about the system’s health, it will become more predictable.

The book is a bit web site centric, but nearly all is true for all large system deployments. It covers a lot of points in very few pages but this can be a advantage because it is fast to read and will certainly help to smooth deployment and troubleshooting in operations.

The Art of the Start

This book from Guy Kawasaki is the most compact list of sticky notes for starting a company. It is written for for the American market, certainly for the fast changing Bay Area, but it is fast to read, is very direct in his speech and provides valuable tips for providing presentations, what is important in the different phases of a startup and tells something about the common pitfalls on the way. What makes the book serious is for one thing, it is clear that he made sometimes the same mistakes and on the other side, whoever was part of one or more Startups has already made sometimes the same experiences … interesting that they seem not so different from the American soil.
The book is something you should read every time you are involved in processes mentioned in there, as making speeches, presentations, recruiting, business plans and so on. But beware, Austria is different in a lot of ways and  and besides books you should speak who to someone who has successful started a company (the are a rare species after all ;-)).
Besides, the most common ignorance of Austrian companies is to recognize that they are in the bootstrap phase, most decide if they got funded they are out of it. Nothing can be further from the truth!

The Great Game

The book “The Great Game” from Peter Hopkirk is a very well written historical summary of the competition between Britain and the Russian empire in the 19th century in central Asia. The book tells stories of success and failing of the two great players, but also tells something about the history and the fate of the former states in this region. Because at least Afghanistan is once again a focus point there, it is interesting to read that most of the problems nowadays are not so new as it seems and most of all, the people there have not changed much. Maybe the Soviets and the ISAF should have read some historical reports in their own archives how complicated it is to invade countries with a long lasting history of resistance …
The history of the huge Himalaya area was totally unknown by me, only about Tibet I have known more but after this book I think were is much more to read. So for everyone who is interested in the history of the great empires this book is a “must read”, not short but fascinating.