ThoughtWorks Keynote at QCon

March 13, 2008

Martin Fowler, Thoughtworks‘ Chief Scientist, and Jim Webber (SOA Evangelist) were speaking at QCon last night in a talk entitled “Does my Bus look big in this?” Martin Fowler’s books on software patterns, particularly Patterns of Enterprise Application Architecture, probably get the most use out of my collection, so I’m particularly interested in what he has to say.

I have personally experienced what I believe is a lot of unnecessary complexity in Enterprise software, and it is refreshing to see Martin and Jim cut through this to come up with a set of principles for effective (lightweight) delivery. I’m also pleased that ThoughtWorks are actively promoting (J)Ruby on Rails in an Enterprise context as this seems a natural successor to “traditional” Java development, and in my opinion they seem to be one of the most enlightened consultancies on how to deliver Enterprise software effectively. (They’re also agile.) Martin and Jim’s recommendations are as follows:

  • Adopt an agile approach with two main notions: (1) accept change as an inevitable part of the software process, and design processes accordingly; (2) the most important part of the process is the people.
    Various techniques are becoming more prevalent to support this notion (see Test-Driven Development: A J2EE Example, Pragmatic Unit Testing, Refactoring or Applying Domain-Driven Design and Patterns).
  • De-risk projects by beginning with a small system that works.
  • The web is middleware (and low risk): why bother with proprietary middleware when you can use the internet?; provide innovation at the edges, and “heavy hitting in the cloud”middleware


  • Services host business processes
  • Business people own our architecture
  • Prioritise and deliver services incrementally (it might be messy but at least it’s delivering business value)

The key to good software design isn’t to allow for everything you think you’ll want it to do (You Aren’t Gonna Need It), but to enable it to do things you haven’t thought of yet.

Some proposed alternative definitions:
SOA = databases wrapped in WSDLs being orchestrated
ESB = Erroneous Spaghetti Box

Martin and Jim don’t like ESB’s … but if you really really feel you need one, use a proxy server (e.g. Squid).

On Twitter

March 8, 2008

When I first heard about Twitter I thought it sounded like a waste of time, but was intrigued by the reports I had read from JP Rangaswami, Meg Pickard and Robert Scoble.

The people I’m in regular contact with haven’t yet signed up, so I started by trying out the BBC News feed provided by Twitter limits you to 250 messages per week in the UK, and I wonder how long it will be before it starts trying to squeeze more revenue out of users.

Russell Beattie observes that Twitter’s design helps to prevent spamming or trolls, but “if I am an idiot, I only get to bother those people who are stupid enough to follow me”. This seems to be partially true, because you can also “reply” to the most recent message from someone you follow (even if they don’t follow you).

Last week I thought I’d add some of the people I’ve heard speak at conferences, or on podcasts, as I’m interested in what they have to say. I notice that some have chosen to make their updates protected … whether this is to stop others messaging them, or because they don’t consider their updates for public consumption isn’t clear.

There seem to be a number of ways people use the service:

  1. Self-promotion
  2. Sharing information (micro-blogging, or e.g. a particular view of the world)
  3. Updating existing friends on what they are doing
  4. Experimentation
  5. Taking part, with a view to understand it better

The information sharing and experimentation works better for me than “I’m eating lunch”. Dave Winer’s coverage of Twitter vs Pownce (also on TWiT), and the Democratic candidate nominations was also useful.

I should have been more selective on whom I followed because on Tuesday this tweet appear in my IM window:

Since this happens to be quite similar to my bio, and I’ve never met Matt, I felt this was slightly out of order. Matt’s personal situation is rather different to mine, so I’m not sure why he feels qualified to pass judgement. I suspect it is partly that the profile he currently enjoys has gone to his head.

Matt, if you feel the need to indulge in grandstanding rather than having the balls to share your opinions with the recipient directly, then ask yourself as CTO what image you’re projecting for yourself and your company.

I have updated my list to include those that I know a little better, and all is well. Now I need to get more of my friends and colleagues signed up.

Update: Marshall Kirkpatrick has some good advice  on getting the most from Twitter (via Mike Butcher).

Notes from PHP London 2008

March 3, 2008

phplondon08 logo

I was at PHP London on Friday so it’s time to get writing again …

What caught my interest initially about the day was the opening talk on Enterprise PHP; as I work with Enterprise Java, which tends to be a heavyweight development approach, I’ve been giving a fair amount of thought to what comes next … is it Ruby on Rails, JRuby on Rails, Django and Jython, Groovy? Too many to choose from. I’ve started with PHP (keeping one eye on JRuby) because I think it’s hard to beat for getting going quickly and it’s mature. With PHP5’s OO support it is now gaining credibility as a “proper” language … also the syntax makes it easy for Java developers to pick up.

So it turns out that Enterprise PHP development is going on outside of Yahoo!, and Ivo Jansch from ibuildings described a familiar Software Development Lifecycle. Because of a clash with the PHP frameworks comparison, I couldn’t attend the later talk on IBM’s Project Zero, but this is an intriguing mix of Java and PHP technologies which might interest some Java development shops.

Marcus Bointon gave an accomplished talk about the intracies and subtleties of handling mail. Marcus is the architect for, which handles 1M legitimate e-mail messages per day. Unfortunately, book publishers have so far been less than keen for him to share his experience with others. Key points from Marcus’s talks:

  • Don’t use mail() – if you do you’re probably doing the hard stuff yourself; better to use one of available libraries
  • Both PHPMailer and Zend_Mail are decent options (Marcus does support for the former)
  • ezComponents “tries to do everything”, and has a deeper notion of MIME so can do arbitrary nesting
  • Alexandria from OmniTI keeps it simple, and has a unique feature of supporting asynchronous SMTP queueing thorugh a PHP extension
  • If you’re sending to one message to one recipient, use the To: field, but don’t include more than one recipient; for multiple recipients use the Bcc: field, and set the To: field to something sensible (e.g. sender’s address)
  • Most regexes reject some valid e-mail addresses: this Linux Journal article, and E-mail validator can help you to get it right
  • Use VERP for handling bounces

The main afternoon session involved a comparison of three popular frameworks, which were well represented by Ian Kitchen, Toby Beresford and Rob Allan.

The consensus seemed to be that Symfony is a relatively heavyweight framework, and difficult to pick up quickly, but is supported by Yahoo. Zend’s main advantages are the company behind it, and that you can pick and choose which bits you want to use (and mix with other libraries), which will allow organisations to adopt it gradually. CodeIgniter is small, fast and simple to use … great for mashups but may not be so appropriate for enterprise use; there was also some discussion on its longeivity.

Derek Rethans delivered the wrap-up keynote, and covered a wide range of areas which left me with a few things to look at, including Suhosin and the Xdebug extension for code coverage analysis when unit testing.

Overall it was a worthwhile day away from the office, with some enjoyable speakers and the food was pretty decent too.