Book reviews

Practical Object Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby) - Sandi Metz

A very well written exploration of object orientated design approaches for a strongly dynamically typed language.
Written for Ruby - it is equally applicable to Python.
When to use duck typing or composition, dependency injection or mixins, etc.
The code samples are minimal, as is any practical application. So this is the opposite of a Cookbook, or Manual.
But having read plenty of those recently, I felt it was all the better for that.
A pleasure to read, I would recommend this book to anyone for the clarity of its walk through of OOP design approaches available in a Ruby / Python type of language.

Systems Performance: Enterprise and the Cloud - Brendan Gregg

A huge wealth of knowledge is laid out in this near 800 page tome ... I am only a quarter of the way through, and already feel greatly enlightened on the system administration and Linux / Solaris side of performance tuning - along with Unix architecture in general.
Having always approached performance as a developer - and a web developer at that - then my approach has always been essentially workload optimisation driven. Latency is dealt with at the application level with web caching, code and query optimisation. With at most configuration tweaking only down to the level of web and database server software configuration optimisation based on load testing. I had maybe a little awareness of IO vs. CPU bound applications, but this book opens up a whole world of detail on performance tuning from the ground up to this level.
The author is the creator of the leading tool for dynamic analysis DTrace which allows detailed performance reporting from the core C code within Solaris.
So whilst a celebrated system administrator, he is also a highly skilled C developer of Unix.
The book contains a comprehensive methodological outline and practical level guidance to produce a Bible on performance tuning Unix systems ... combining academic references into a practical manual on how to tune each element. Although the level of detail of the analysis means sometimes it may only be relevant if you have cloud scale numbers of Linux nodes ... or very big expensive Solaris boxes ... and hence can afford days to tune a system.
But the books insight into how to finely tune your computers engines, also comes with full technical background that gives you a much better understanding of that engine ... even if you never have to deal with this level of diagnostics.
The level of detail inevitably means it is fairly operating system specific, hence both Linux and Solaris are dealt with and equivalent tools / architecture described for each.
I think the only criticism would be that the authors DTrace background perhaps leads him to default to this more complex method of full live analysis of what your Unix's C code is up to ... since it is less of a last resort for him, than it may be in practise for the reader.


The Soul of a New Machine - Tracy Kidder

A fascinating (Pulitzer prize winning) study of the creative drives and compulsions of the computer engineer and the slightly sociopathic work cultures that the companies that they work in foster.
It dates from the end of the 70s when the race for cheaper 32bit minicomputers was at its height. Yet it could be the story of the internet explosion in the mid 1990s, or the race for Cloud dominance today. The technical hot housing, internal competition and obsessive work levels are just a lot more intentionally engendered in todays tech companies.
Tracy Kidder gets inside what on the surface was assumed to be an opaque and dull world - to find it a mad gold rush pressure cooker of complex characters and relationships. For anyone who works in computers ... or under mushroom management ... there are many things to reflect on wrt. ones own experience.


OpenStack Essentials - Dan Radez

A short Cloud 101 book that covers the various Open Stack components. It focuses very much on hands on ... how to do initial setup of each component -
with both command line and the web - ie the Django based Dashboard (horizon).
Nothing is covered in much depth ... just a step by step run through of a basic use case, and there is some repetition between the command line and web way of doing that.
Initial setup is done with the puppet driven RDO ... which basically sets up the core configuration for you. It then walks through a core set of OpenStack components in summary, then again per chapter. Keystone (authorisation), Glance (OS images), Neutron (network), Nova (instances), Cinder (block storage) and Swift (object storage), Ceilometer (telemetry), Heat (orchestration).
If you know nothing about cloud infrastructure or Open Stack then this book is OK as a Primer. However it is rather mundane in its format, and ends with a section on debugging OpenStack issues that could of basically could of been summarised as read the logs :-)
However if all you want to know is the gist of what are the practical building blocks of OpenStack (or any cloud), this book gives a simple introduction.


Spring in Practise 3.0 - Wheeler & White

A more practical guide than its brother book Spring in Action below.
The book has good coverage of different tutorial examples and covers most of what is required to get going with Spring. For example the Maven integration test setup chapter was directly practically useful as a reference for setting it up for a Spring project I was working on. So I would recommend this book as a good set of practical tutorials to get you started on accomplishing tasks that it is likely you will find are part of a real Spring project.
However even with its more modern annotation over XML bias, the huge and complex configuration required of Spring, and the relatively poor documentation of that complexity will mean that as soon as you stray a little from the examples things may go wrong with which the book is unlikely to help you.
Really somebody needs to write a book just on Spring configuration ...
updating the old annotation manual adding in Maven / Nexus management and other processes to make this complexity maintainable, along with common third party component configuration issues ... eg. MyBatis etc.


Spring in Action 2.0 - Craig Walls

An adequate coverage of various application components that one may build in Spring. But the general style was a little dull. The newer version 3.0 of the book adds a chapter on minimising XML configuration. As someone working in a team with coding standards that require annotations where ever possible, then sadly all of the example code was XML specific. That along with the book being for Spring 2 whilst I was coding in Spring 3 meant that none of the code examples were usable. The fact that the book contains more XML than Java code is perhaps more of a reflection on  Spring than the author. Due perhaps to Spring's generic theoretical aspect orientated approach - rather than a more practical opinionated web focussed one.
On the plus side, the book covered a good range of use cases and competent explanation of the theory behind them. It is not a Cookbook however. More a guide to how you might go about doing a range of tasks with tutorial examples - suited to a practical academic course, more than real programming.


Confessions of a public speaker - Scott Berkun

Having had to do a few talks over the last month or two, I decided to read a book about it, not really as a self-help guide, although this book fulfils that role, but more just because it caught my eye on the book table at Europython. It looked like it would be an entertaining read, and having realised how my own talks vary then maybe I could do with another perspective on the process.

The book is entertaining, and it is written as much as possible in the form of a series of stories that help illustrate the guidance given. The guidance alone could maybe fill a book a third of the size, or as an extreme summary maybe just consist of - clear goals / narrative for the talk, summary-content-summary, practise, practise, practise - including replacing conversational ummms and errrs with slilent pauses.

However the entertainment value and biographical nature of the book, means that even if you never intend to stand up in front of an audience - then there is plenty in there that make it worth a read.

My only criticisms were over repetition of the practise theme, and the TV sections were pretty dull, I think these may of been better replaced by discussion of mass (contributor) mediums, such as video conferencing (Google hangouts, etc.) Since they are something that is much more commonly experienced and you perform in front of an audience, who you often cannot see, but who can still interrupt and ask  questions. Even a discussion of YouTube or video streaming of an event, would have perhaps been better than TV although in all cases they are mediums without a participating audience.

(July 2012)

Cassandra, the definitive guide - Eben Hewitt

This book does live up to its name as the definitive guide to Cassandra, and not just because there is only one other Cassandra book out there. It is well thought out and written.
Chapters progress from an introduction to the concepts and history, through to performance tuning, and a summary of the main players in the wide variety of NoSQL databases available today.
The glossary also provides a useful reference - to quickly get you up to speed in NoSQL lingo.

I am hard pressed to criticize a book that includes Tom Waits in its examples.
However there are just a couple of niggles, firstly the section on pre-populating the database included a 10 page print out of Java code - which was unnecessary. Especially since the other more significant issue is that Cassandra is a rapidly evolving database and the specific API examples and code is now long out of date, relating to 0.6, rather than the current 1.0.9
So this certainly isn't a cookbook of readily usable code.

Having accepted that, it does give a good grounding in the concepts of Cassandra - and so acts as a jumping off point in to the current online documentation for practical code examples.

Its author was also admirably code neutral in his discussion of a Java database, with discussions of the various related Python and .NET tools. Along with advocacy of polyglot programming - ie combining different languages and paradigms to produce software that utilizes the most appropriate tools for each task. An approach that I have always leaned towards - and now I have a name for it!

(April 2012)

Java 7: The Complete Reference - Herbert Schildt

I use Java less than some languages, hence I have never ploughed through a definitive guide to the language. So needing to do a few weeks Java soon, I thought I would enliven my xmas by reading a refresher on its details! I turned to this rather weighty tome.

In places it was enlightening and certainly provides full coverage - with a reasonably good writing style. However this was let down by an incredibly insular outlook from the author. Although a background in C++ was clear - the content of the book included chapters on such near dead technologies as Java applets. Even more surprisingly the author seemed not only to regard applets as the defacto standard for web client programming - but not even to acknowledge the existence of the actual current standard, ie. Javascript, AJAX and HTML5.
Come to that - no mention was given of any other programming language, to compare and enlighten Java approaches with alternative ones.
The same could be said for NoSQL databases, web frameworks, cloud technology etc. In fact the book almost came across as a description of the language as it would be used at the turn of the century - with new chapters on later additions to Java, such as NIO, sandwiched in.

Coming from a Python background, it was also rather surprising to find how various parts of Java are so variant in their approach to class / method naming, and general lack of standardisation. Add to this the number of different older and newer libraries in co-existence. It soon becomes clear why an IDE is essential with such a huge and heterogeneous set of classes to herd when developing in Java.
On the other hand the sheer diversity of tools, data structures, algorithms and lower level APIs to tune them in Java have great appeal for many, particularly performance critical, tasks. Sorry this last paragraph is more a review of Java than the book!

(January 2012)

Python Testing Cookbook - Greg Turnquist

This book's subject matter is a valuable addition to Python literature, unfortunately I am not sure that its handled that well, indeed the concept of a testing cookbook - seems slightly inappropriate. Given the point of testing is to improve the quality of code in a rigorously systematic manner - then a cookbook format is odd - a dash of doc tests, a sprinkling of smoke testing - some solid unit tests with a layer of behavioural driven testing.

Having said that the benefits of the cookbook approach is that rather than having to knit together a fully coherent tutorial applying a range of complimentary tests - which would necessarily mean leaving methodologies out. The pick'n'mix approach means any testing paradigm that is available for python can be stuck in its own cookbook chapter.

Being a relative testing novice - the wide coverage was useful. However sometimes I felt that the paradigms were only touched upon at a surface level - and more annoyingly each recipe involved a huge amount of cut and pasted repetition of steps from other similar ones. Large swathes of code (Spring anyone?) to set up the testing scenario, were included when very limited pseudo code, or just textual explanations would of done. As a result the book was probably almost twice as long as the meat of its content warranted. I guess at least it has the benefit that if used as a cookbook - ie. a year later I want to write some BDD with lettuce - I probably only need read that particular half of a chapter without referring back to anything explained or set up in earlier parts of the book.

My favourite chapter was the last one, the one without the code and print outs of test OKs which talked more of the experiences of living the test driven programming life! Clearly committing to spending up to half of a software project on the testing framework and code needs an evangelist approach - and the hope is of a Nirvana of high quality code as a righteous bug Terminator.

(September 2011)

The Architecture of Open Source Applications - Editors Amy Brown, Greg Wilson

This is a serious of articles by the developers of major open source projects, on their architecture, and its evolution. Some deal with specific software, eg. Selenium or Eclipse, some with languages eg. erland or python packaging, and some with new fields of software eg. CI or NoSQL systems. I would definitely recommend buying it, if for no other reason than the proceeds go to Amnesty International :-) However it is also a really good read, for getting a wide range of perspectives on software development and recent technologies.

As its nature is a technical anthology by various authors, it naturally suffers slightly in that the quality of each chapter can vary somewhat in its technical depth and style. But I would say that the majority of the content is well above the average quality of technical authorship for computer books in general, so this isn't really a criticism.

All the content is freely available online as the book is released under a creative commons licence - but that is even more reason why you should buy a copy.

My aim is to read it cover to cover but the temptation is to first read the chapters that deal with technology that may directly impact my current or future programming work. I guess that is bound to be the case - but in some ways reading about architectural approaches in areas that I are less immediately aware of the relevancy of, can be even more useful - getting insights into approaches across a broader range - may help inspire techniques or patterns I wouldn't otherwise of envisaged in my own field.

(August 2011)

You are not a Gadget - Jaron Lanier

This books subtitle is 'a manifesto' and the manifesto is a rant against a wide range of established ideas about the internet and computing's new sociological roles in our lives. The enemy ranges from the liberal open source / knowledge establishment evangilised by people such as Chris Anderson (see below) and sites such as Wikipedia, to the conceptual constraints imposed by early computing metaphors such as files, MIDI music and the reliance on tightly defined protocols and standards.

The author is an early virtual reality pioneer and keen technologist, and as such is an interesting contrast to the usual more Luddite anti open source gang, although he does share some common political free market philosophies with them, along with being a Microsoft employee. Having said that I found myself agreeing whole heartedly with half of what he said, intrigued as someone who dabbles with sculpture by his ideas related to this - along with the breadth of topics thrown into the book including neuroscience, philosophy and back to the sculpture via squids (and I don't mean caching servers).

Of course given that the book is aimed at being provocative and highly opinionated in order to shake up the reader's orthodoxies then there were times when I felt like shouting out thats rubbish. For example statements such as the iPhone is superior innovative technology because its closed source whilst open source is old fashioned and derivative. Well given that the iPhone runs on Apple's commercial version of FreeBSD with a WebKit based browser then it has at more lines of code running it that were written as open source, than its Apple licensed wrappers, and is running a form of Unix older than its more open source Unix based rival Android.

Anyhow I would recommend the book as one that will make you think about your assumptions, although it suffers slightly from a meandering style and overuse of long domain specific words, such as 'neoteny', when 'childish' would do.

(March 2011)

Internet Postmaster: Duties and Responsibilities - Christenson and Knowles

A sysadmins booklet covering all the non-technical service management elements of having email postmaster responsibilities for an organisation. This booklet gave thorough coverage of the dos and don'ts of being a postmaster, finishing with a 20 questions check list to ease the putting together of a policy document covering the many issues and choices that are necessary when defining an organisation's email policies.

Its approach of clearing defining where there are policy choices and what they are, and where there are not, was ideal for the subject matter. Perhaps the only criticism was that the book was so purely devoted to full postmasters. So when talking about service providers - it was dealing with the duties of the postmasters employed by that provider. If for an organisation it was related to the postmaster managing its ineotenynhouse mail technology. There was not an attempt to cover the increasing number of system administrators who may be managing the usage of a third party provider, e.g. gmail, hotmail etc. for a reasonably large organisation.

(March 2011)

Professional Python System Administration - Rytis Sileika

This book provides a Cookbook of recipes to create sophisticated management applications for a wide range of sys-admin tasks. Each chapter covers a different application or task covering SNMP reporting and graphing, SOAP, IP accountancy, Apache, log analysis, Nagios, monitoring, stats, mysql performance, amazon cloud. Its cookbook nature means there is not a great deal of tutorial progression, other than Django being used in a progressively more complex manner.
The book covered a lot of sysadmin tasks and a good range of python tools. If you wanted to move any of the covered sysadmin tasks to a full management system - this book is ideal. So well suited to larger organisations or hosting providers where a number of sys-admins or developers need access to co-operatively manage or monitor the relevant systems.

On the downside what the book lacks is an overarching concept of using automation for system administration. So for example there is no idea of a spectrum of moving from a bunch of random shell scripts dotted around your organisations servers to python as a common automation language with a central automation library / API. There is no mention of the shell frameworks (eg. Fabric) or configuration management systems (eg. BCfg2) that could be employed to standardize the usage of this common library. Virtualisation and the cloud was also inadequately covered for a book written in the last 6 months. However as a cookbook for writing sysadmin applications in python it is well written and by bridging the gap between sysadmins and python web developers should prove educational to someone from either camp.

(March 2011)

The Android Developer's Cookbook - James Steele, Nelson To

The first thing that strikes you about this book after reading the first few chapters is that it isnt really a cookbook at all. Well at least not like the ones I have read in the distant past such as the Perl or Python Cookbook. These were based on a series of real world use case applications that had been gathered (perhaps on a Wiki) from different developer's and for different purposes, then post edited with some explanatory text to form a reference. Grouping programs covering similar tasks together.
Whilst this book is in fact a very well organised tutorial on Android that leads you through from architectural principles to different aspects of the platform, with small illustrative code examples scattered throughout. However though these examples are useful as illustrations of basic principles they are not really full blown recipes as far as I previously understood the term in programming literature. This does lead to the issue that they are not as useful as they could be in terms of practical examples. A case in point is the layout chapter, where none of the layouts are nested as would be done in most real world examples - so it is left to the reader to guess this and experiment with the combining multiple layouts and widgets - rather than getting a sample recipe.

Leaving that aside the book does act as a thorough recent tutorial for Android with many practical tips and details that have obviously been gathered from the authors own experience of writing Android applications. I would recommend it as a good starting point for learning the platform in place of (or after) the basic online tutorials have been completed. It is certainly a much more flowing and consistent guide to Android than the book below, perhaps its only significant flaw is its misleading title!

(Jan 2011)

Android Application Development - Rogers, Lombardo, Mednieks, Meike

An adequate introductory book on Android, although it felt a bit poorly laid out.

The first part starts by outlining architecture and concepts but soon skips over these to
jump into getting your hands dirty with installing Eclipse based dev tools, running and debugging a demo maps based app, followed by how to sign and release.
Although these practical instructions are helpful you feel you want a better grasp of the elements of the architecture before getting to this stage.

Part two then goes back to giving you more of these details in the next six chapters, although these are not tied to the example from part 1. These chapters then become increasingly light on the practical usage examples perhaps as they touch technologies that require too much detail to be handled in a single chapter. With the style of the last two chapters varying from one that contains 9 pages of listing package methods and a log dump followed by one describing the history of mobile phone wireless protocols.

All in all there was a too much of the feeling of this being four different bits of a book by each of the authors, cut and pasted together, hence it lacked coherent narrative progress and style.

(Jan 2011)

Here comes everybody - Clay Shirky

An enlightening and interesting book, that is already something of a classic on the sociological impact of the internet. The book is essentially a social / political analysis of the long tail nature of the internet and how the transformation of the media into the instant citizen authored multiplicity of forms is impacting societies.

But whilst Chris Anderson's 'The Long Tail' focuses more on the business / financial aspects of how the old 80/20 rules of commerce / business plans etc dont work in the internet age, this book extends that analysis in terms of social groups and sociopolitical activity.

Various relevant news events are analysed on the basis of how social networking technologies impacted them as they progressed. Illustrating both the democratising effects and the risks that the internet group forming and media creating technology provides.

The long tail is interesting shown in the form of how most of these technologies work too. So whether its a successful site or tool, or the development of open source, wikipedia or political flash mobs. The standard model is the majority of work / downloads / success / blogs that anybody actually reads ;-) equates to 1 or 2% of the total, with another 10% acting as the high activity nodes if you like, binding the bulk - the long tail - together. Since making / saying things on the internet has no cost - failure is not an issue. It is this free failure long tail that can deliver such a high level and quality of innovation that old commercial software, media companies etc. are really struggling to compete with.

The main criticism of the book might be that none of these ideas are new or radical, they are the actually the standard liberal, open society / knowledge orthodoxy regarding the changes wrought by web 2.0, as it was termed. However the analysis and focus on real world impacts of social groups is informative, and covers some ground not explored in the many similar books that have come out over the past five years regarding the web.

Of course there is also the issue of whether you agree with this orthodoxy, personally I find it a bit too idealistic and free of criticism of the current state of the web. So for example perhaps a section questioning issues of the dominance of a few large corporations, eg. Google and Facebook and the resultant controlled uniformity of the social tools and data exposure (search) that forms the global virtual social environment.

There is an Epilogue that focuses on how China is struggling to censor the media created by its citizens via the internet and how that presents a much more significant politiical issue - than the censorship of more traditional media input from outside. Since events are now reported first by eye witnesses via their mobiles, traditional professionally edited media and political reactions tend to be shaped by it.

NB: I guess since this was added in 2009 it failed to take on board that it is not a problem specific to China. Clearly in 2010 this inability to censor and control information with todays internet was most ably demonstrated by Wikileaks and the flash groups that formed to replicate the site, along with attacking the financial institutions that were blocking its accounts. This radical open knowledge movement continues its challenge to stop Western governments having censorship capabilities either.

(Jan 2011)

Data Structures and Algorithms in JAVA - Goodrich & Tamassia

A comprehensive introduction to this invaluable topic, from two experienced educators. I found this book really useful and quickly getting me up to speed with the traditional academic background to computing that was an embarrassing hole in my programming skill set. The book steps through the various standard data structures and algorithms along with the principles behind Big Oh notation and performance analysis. I found it useful to read for Java and then background read up via the web on the Python equivalents (although there are a few books on this subject specifically for Python).

(Nov 2010)

FREE : The Future of a Radical Price - Chris Anderson

An interesting discussion of the economics, history and sociology behind free pricing. Which has become the dominant business model for the web, and the resultant impact on pricing for any digital commodity - where the cost of reproduction and distribution have become negligible.

The book is well written as one would expect from an editor of Wired, and touches on a number of diverse interests of the author. It doesnt require an economics background although some interest in how it reflects in the sociological aspects of the web probably help. Perhaps one criticism is that sometimes it appears to just dump in some specific interests of the author, eg. sci fi, in a clumsier manner than a book such as Freakonomics which was much more diverse in subject matter, but perhaps with a more consistent (and amusing) narrative tone.

I also felt that although there was an initial distinction between free as in open/libertarian and free as in zero cost. This became somewhat muddied later in the book. So perhaps a more objective analysis of examples such as Microsofts giving away IE and the monopolies issues that lead to all the legal history, as compared to Google currently going even further with the 'less than free' model by paying handset providers to use Android.
Whilst what one actually got was no comparison of this due to the assumption that the latter is different because it is open source, or maybe even because its Google? Though perhaps its because I have a some strong opinions on the importance of  open source and the open knowledge ethos - ie. free as in open - I would of liked this to have been explored in more depth. So although free as in cost is not a matter of principle or politics for me, the book was definitely an interesting and educational read. Confirming for me that zero price isnt the issue, since as this book outlines, most free to end user software and services are actually funded, and even the gift model is mostly done in order to acquire other social or professional capital. Along with hinting at the eventual decline of direct charging for any form of digital content due to it no longer being viable to charge, with software and music as the likely forerunners.

(March 2010)

Learning jQuery 1.3 - Chaffer and Swedburg

Need to get a grip on a good AJAX library and jQuery is purportably one of the best. Also I am using it for current Django work, it is Drupal's (and due to become Plones) default AJAX library, plus is popular for Wordpress. This is a well structured book with the first third dealing with the jQuery library, the second its practical usage for tables, forms etc. The last section covers writing plugins, resources and a quick reference. Along with a well written explanation of the memory leak pitfalls of javascript closures and how jQuery can help to avoid them. My only complaint is that the code sections were perhaps overlong / repeated rather than just highlighting the key code elements, perhaps partly because jQuery encourages the writing of long function chains. Aside from that I think this is a good book for those who want to add AJAX to their arsenal.

(Nov 2009)

Alfresco 3 Enterprise Content Management Implementation - Sharif, Munwar

A book on the latest version of Alfresco released Summer 2009. The book spends the first chapter banging on about open source, kind of ironic, as charged for and company controlled release open source, it is hardly 'full' open source. However the reason is apparent as it is entirely targetting itself as an 'open' replacement to its main competitor Microsoft Sharepoint. It gives a good idea 'what Alfresco is' with the downside that it reads like a marketing manual, rather than an objective technical guide. The core of the system is the file store and metadata holding relational database. Access via network file shares and Office applications to edit files apply workflow, and essentially do document management is the core. The system installs Open Office by default to do its content conversions and integrates with LDAP/Active directory and the Sharepoint protocol for MS Offices apps.  The web management application that comes with Alfresco can be used to do all of this too, but it isnt an essential component either for end users, or to some extent administrators - since all the configuration can be written as XML files. Interestingly it trumpets integration with Drupal and Joomla, in both cases placing Alfresco as the backend content store, editing and authorisation system, with the PHP CMSes used to quickly create public web interface front ends. This tends to emphasize that Alfresco is not particularly well placed to be a public web site creation tool,  and is much more at the document management end of CMS. Alfresco becomes the central file repository for content and enables remote access and editing via the web (and unlike Sharepoint doesnt require Windows + Office clients). Alfresco comes with two web applications, the CMS admin interface, Explorer, and Share a personalised portal on to your docs and a set of collaborative web apps - blog, wiki, calendar and disscusion board. This book is not a developers manual but a user / administrators implementation guide. In that sense it is useful to provide an overview of the system and how it can be deployed and integrated without getting bogged down in the details of the code. The overall impression is of an informative book useful for first deploying and assessing Alfresco, but unfortunately lacking in objective technical analysis or comparisons. Pretty much what you might expect to get from a company's sales engineers, hence slightly grating if you are more accustomed to pure open source books with their more warts and all analysis. Having said that it was an easy read and interesting to get the details of how another CMS does things.

(Sept 2009)

Getting Real - 37 signals people

A booklet from the Ruby on Rails people, which was a quick easy read. It sort of out agiles agile, with its guerilla style message that small, simple and adaptable beats the big slow behmoths of the software industry. I found its evangelical style slightly irritating (along with the book production rather sloppy - ie. no index, wrong page numbering in the contents, some duplicate text sections) but agreed with some key points:
  • Fix time and budget but flex scope - for us that means use MOSCOW with an absolute minimum of must have as the core
  • Half not half-arsed - ship minimal must haves first, if you try and do all the requirements on first release quality will go out the window
  • Don't do dead documents - ie the only real documentation is that which is packaged and evolves with the code

And disagreed with some others:
  • Actions not words - dont agree that only open source contributors are worthy of consideration for tech recruitment
  • Scale later - dont agree that slow and unreliable performance doesnt matter too much to customers when its their own web site rather than a subsidiary office app like basecamp.
  • Forget feature requests - possibly when the customer is paying under a grand for a peripheral service app, but not for a 10 grand custom core app or website.

(Aug 2009)

Content Networking - Hoffman & Beaumont

(architecture, protocols and practice)

Rather academic book on large scale web architecture issues. Has a good overview of the history of the web and a holistic approach to dealing with scaling web content systems. Includes caching and network level scaling theory and practice - and has a university web network as an example. But its a bit dry and heavy going in places so still reading. It is worth reading to give a background to large scale web deployments, although it is unlikely we will ever need such things as the global traffic routing architectures described, the description of these and other things such as napster style file sharing networks and their history are an interesting illumination of the web from a more network architect style perspective.

(June 2009)

Headfirst Design Patterns - Mr. & Mrs. Freeman

Run through of the gang of fours main groups of design patterns done in a very accessible manner. Reference language used is Java, but as its patterns pretty relevant to any language. Having said that I sort of got stuck half way through with it being somewhat repetitive in nature ... ie one pattern after another so need to finish reading some day.

(March 2009)

python web development with Django (developers library) - Forcier, Bissex and Chun

A fairly classic approach for this Django book. It is for people new to django (and possibly python). It is probably a bit basic if you are an experienced python programmer, and left me feeling like I had really just bought a rewritten copy of the online django manual. So good if you want to read the basics of django in printed form, but I felt it lacked content on more complex django applications, integration with other platforms or advanced techniques.

(Jan 2009)

Expert Python Programming - Tarek Ziade

I really liked this one, maybe partly because I also found him quite an inspiring speaker at the plone conference. Also the book touches on lots of different issues, so doesn't lingering on the minutae of a particular platform. In general at the end of it you feel that you have probably picked up a raft of useful hints and tips that you can immediately apply to improve your coding. The issues covered are of interest for development on any platform, and some directly usable - e.g. the chapters about technical documentation, managing code and project lifecycle. His chapter evangelising test driven development (as do the writers of the zope3 and plone book) emphasizes how important it is to stopping large projects deteriorating into bug fest.s The ones on performance, pystones etc were also very informative. All in all I think this one is definitely worth reading for python programmers, and has a lot of useful guidance we should maybe look at adopting for large scale projects.

(Nov 2008)

Web component development with zope 3 - Weitershausen

Hmmm ... this one felt like ploughing through an old style computer manual. It does fully document the zope3 component layer but I found it very slow going, not difficult to read but overly long, with a rather unrealistic 'realworld' application stretched to cover all code examples. My challenge is to keep awake with this one ;-) so I think a more concise coverage may of been better. Although having said all that he was a good speaker at plone 2007 where he spoke on test driven development with Martin Aspeli (below). If you are doing plone3 work, or just want to get with the modern adapter/interface way of programming it is worth trying to read it. Coming from a Java or C# background where all the component stuff is familiar territory you may be able to just use it as a reference. (March 2009) However having said all that zope 3 is now dead - so Plone is aiming to replace the use of component zcml with a registry, and viewlets/portlets with tiles etc. Hence most of this book could soon be consigned to a dead end of software history.

(Sept 2008)

Professional Plone Development - Aspeli

The recent classic in depth plone book, covers all the bases and is an essential read for anyone doing in depth current plone3. However I didn't particulary warm to the author and felt that he maybe could of explained things in a more accessible simpler manner, this is probably particularly true of his chapter 'covering' zope. This was so highly summarised that even after having used zope for 8 years I found it very hard to follow. The other downside to the book is that because it covers the details and edge case issues of a particular rapidly evolving platform, it is likely to become dated very quickly. Even so it is still the best book to read if you are familiar with python and zope2 and need to update your skills to the plone3 / zope3 component way of doing things.

(Aug 2008)

No comments:

Post a Comment