Items below here are my previous (2002-2011) blog posting. I've updated the software serving this site to github-pages and URLs will be different going forward.

Github as a CMS to end CMSes

Github can be used as a site serving tool. It is actually a pretty usable CMS even for non-technical folks. With some more tweaks it could be a killer platform for content with all the wonderful potential from forking and pull requests, thereby changing the industry even more than it has done.

Sun, May 08, 2011

Binary Diffing for Increased Release Confidence

This blog entry is about enterprise release teams regularly declaring a code freeze in the run up to go live for a release, and why that need not be so mechanical.  Lets assume an intended trunk model like so:

trunk model diag

We will also assume you've read my Branch by Abstraction blog entry and Martin's FeatureBranches, and FeatureToggles.  You may even have read Jez's Continuous Delivery book.

Now for major releases, of course you're going to stabilize somehow before you push a release out.  But the question is what techniques to you use to effect that.  There's a classic code-freeze way, but is there a a way of using tools and techniques to gain assurance without code-freeze per se ?

Mon, Apr 18, 2011

Running JBehave/WebDriver Tests on Sauce Labs' Service

Referring to the previous suite that some buddies and I had been building for newbies to start with, it also runs on Sauce Labs stack.  While it normally runs the three tests in series, this way of running it will run the three tests in parallel to reduce the total time needed to run the suite.

Here is the result of that.  Three jobs that have completed, and are hosted on Sauce Labs' stack for all to see.  Click any of them to see the the full details or watch the video that was recorded:

Tue, Apr 05, 2011

Playing with Mobl in 2 mins or less

Mobl is a cool language that cross compiles to HTML5 and JavaScript.  The reason for using it as a developer is that it targets Android and iOS native feel web-apps from a beautiful source from.  It is not quite my ideal in that it cross compiles rather than being interpreted, but it is close.

There may well be some glass ceilings, but I'm willing to believe the lead Zef Hemel when he assures me that new controls are quite straight forward to those that understand the underlying technologies.

There's a small perception problem with Mobl in that it is more than a couple of clicks before you can play with it.  At least outside of Eclipse (for which there is a plugin).

Here's something that should work:

git clone
git clone
cd mobl/samples/shopping/
java -jar ../../../moblc.jar -I ../../../mobl-lib -i shopping.mobl

Sadly it breaks right now with a low level exception 'STRSGLR_get_parse_error'.  Must be some incompatibility between moblc (the jar available for download) and the latest github versions.

Instead, here is an older version of Mobl that can be played with very quickly:
git clone
cd mobl-lang-in-thirty-seconds
# or ./ if so inclined
If your Safari, Firefox or Chrome can do HTML5 it should show a functioning shopping application.  Obviously your desktop window size is not the same as the iOS or Android size, but those are the intended targets.

See more demos here

Sun, Apr 3, 2011

I think it is time for QTP to die*

Agile practitioners such as myself are finding it really really hard to get skilled staff for our QA needs. Clients past and present are finding the same thing. There are plenty of candidates but their experience does not overlap with the needs of the Agile industry much.

In this blog posting, I am going to make a case for the testing industry to give up their love of QTP (and other legacy packages). Implicitly, a call for the professionals formerly adept with those tools (and manual testing) to rejuvenate their careers by mastering some new testing tools and programming languages.

* it's a shrink-wrap product, not a person, don't go nuts on me as if I'd said something about an individual!

Let me go into some detail..

Mon, Mar 14, 2011

My ThoughtWorks Venn Diagram

A previous client recently stated an affinity to a model I was using then to describe ThoughtWorks' project teams at client sites. I thought I'd make a blog entry of it, as we are presently migrating wiki tools internally, and who knows what can happen. More...

Fri, Mar 4, 2011

Introducing StoryNavigator

StoryNavigator is a project spun out of JBehave to show a list of stories in a web-page as well as a list of step combinations. It allows searching for stories based on a keyword, string, or meta-tag. Click through to see live demo...

Mon, Feb 28, 2011

Extending the life of IPv4

The internet is supposed to shift transparently to IPv6 based numbering system soon.  IPv4, like a shitty stick, should be dropped as soon as possible apparently. The problem is that there will be a lot of upheaval as this happens.  This is topical right now of course. 

There are some existing related ideas about how to stretch the length of service of IPv4.  I outline here another way to delay exhaustion of IPv4.  Indeed you could also take a view that this suggestion could allow for the abandonment of IPv6. More...

Wed, Dec 8, 2010

Branch by Abstraction Log Jam

The Branch by Abstraction blog entry is the one I have had most hits for. A couple of weeks after each new blog entry, it regains its place at the top of my daily hit count.

ThoughtWorks is consulting at a top-100 US website with Agile, delivery and all that. The client does follow Trunk Based Development (TBD) and Branch by Abstraction (BBA); Their program of work is big enough to warrant concurrent development of consecutive releases (N.B. I like that way of phrasing the problem).  They are getting multiple things from it. One benefit is the ability to engineer larger pieces in parallel, when Agile suggests that you should otherwise try to develop incrementally and not start new releases until previous ones have been put to bed. Another benefit is the hedge-bet that you may not go live with something, or regret it quickly; Refer's v4 deployment regrets (though that might be because they rewrote rather than refactored).

Anyway, last week two of the awesome senior technical stakeholders on the clients staff were disagreeing in a corridor conversation on what to do next in respect of BBA.  It has been successful to date, but they are now dealing with far less concurrent work that they have done at any point in the previous 18 months.  There is one larger piece to go live that is dev-complete that we will call 'banana' for the sake of this article.  Client stakeholder #1 said that banana team should move back to a real branch (and accept merges; daily if they have to). He said this given that banana was dev-complete, and that other non-banana pieces were methodically being worked on in the BBA style, and that doing one extra --with-banana build just before commit  is cumbersome teams who are working on non-banana functionality, if all they get is a notion that they did not break the banana build.  Senior Stakeholder #2 said we should stick with the established TBD + BBA plan which suggested that developers should ensure they have not broken other teams builds, by running them just prior to commit.

Nobody wants to merge all the functionality into one build as it removes the hedge-bet side benefit of BBA mentioned above.  The ability to not go live with banana is key in my opinion, if the client chooses to keep other benefits but not do banana after all, or delay it for reasons of timings.  Thus SCM branches remain alluring.  Really busy teams with refactor happy agendas who are not using SCMM 5 level source control tools are going to need to be cautious about the cost of downstream merges.

Anyway, the debate had been going 20 minutes and my drive-by contribution for my friends/clients was: 

Switch all teams to building the --with-banana build primarily, with an optional check that the implicit --without-banana build has not regressed just prior to checkin

They're both smart fellows, so after a mere 5 seconds of silence, they said "that will work" in unison and got back to tending their email and alike.  Some teams have an extra minute on their build now,  but that feels secondary versus the cost of broken builds and roll-backs because the frantic pace of Agile development.

Martin has written again about FeatureToggles which is work reading if you are doing TBD+BBA.

Tue, Dec 7, 2010

A Spring Framework Shortcoming

Spring is awesome of course, but there's a shortcoming that I think the Spring team could eliminate with some modest work. I know it can be done because colleagues Jon Wolter and Lucas Ward did it at a ThoughtWorks client site after I had discussed it with them. The shortcoming I am talking about is collaborator components for request mapped injections. I'm not going to explain how Spring can be enhanced to allow it, just why it is desirable...

Tue, Nov 9, 2010

Angular - new Perl backend by Dobrica Pavlinusic

Misko Hevery's <Angular/> has gained many fans over the last few months. I was seriously looking at if for ThoughtWorks internal app-dev earlier in the year (we have a slew of LotusNotes applications to replace). There is nothing wrong with the technology, but storing TW data in a third party cloud was not going to be an easy sell. And that was the main choice back then. ThoughtWorks is deep into the Google Corporate-Gmail solution and leverages the associated applications including AppEngine where appropriate. There is no AppEngine deployment capability for the server-data side of <angular/>, so I reluctantly stepped back from my experiments. I'm just one guy, so may have never been able to persuade the powers that be that <angular/> was what we should choose for internal app dev.

Anyway, Dobrica Pavlinušić has taken a peek at the API specifications for a RESTful interop with <angular/> clients, and decided that he can make a simple one in Perl; More ...

Sat, Nov 6, 2010

Two issues I have with the GPL

It is time I mentioned a couple of my issues with the GPL. I'm prompted to do this because of an ArsTechnica article about it and the awesome VLC player in Apple's AppStore and the FSF blog entry that predated it mentioning the mail-list posting of a VLC developer. My issues are about source availability and the GPL's non-reciprocal nature...

Tue, Nov 2, 2010

Not-Path Cookies

I've previous blogged about cookies. Specifically that the HTTP standard could benefit from a using regex to for path matching. Well I took the idea to the http-state working group (or at least their mail-list) at the IETF and floated it. The idea cannot really go forward as there is no consistent agreement amongst browser-makers as to what regex is, let alone implementing it in a browser for cookie matching purposes. Lastly, and most importantly regex can get incredibly complicated quickly, especially when trying to construct 'not these and not these' ones (see below). Anyway, here is a modified proposal...

Mon, Nov 1, 2010

Another UI prototyping technique (for Agile teams)

Use Firebug, another plugin, a Python script and Subversion (or Git) to model both progress towards web-app completion, as well as proposed changes. Works for Agile methodologies only. Better than Photoshop. More...

Tue, Sept 14, 2010

Cookies with regular expression paths

Just a quick thought: Cookies paths, passed up to a browser in HTTP headers, could benefit from being regular expression. More...

Mon, Feb 22, 2010

Angular - HTML based Declarative UI (also one to watch)

Misko Hevery, a buddy at Google, has launched 'Angular' a clever unilateral enhancement to HTML to allow highly capable web apps to be developed quickly. By adding attributes to ordinary HTML elements he's extended the capabilities by an order of magnitude. As this breaks all current browsers, the stroke of genius is that the before the page displays, there is some JavaScript that reads these non-standard attributes and essentially rewrites the page/DOM in a compliant manner. Here is a simple demo app (list of invoices) that he has made:

angular invoices demo


Mon, Sep 28, 2009

Kinetic - QT based Declarative UI (one to watch)

As you hopefully know I am drawn to declarative UI technologies and have some long bets on one in particular (Swiby). There is a new one this year from Nokia/Trolltech. 'Kinetic' is based on their incredibly powerful and stable UI technology QT. It is more a markup language with embeddable script fragments, as opposed to a real programming language masquerading as a declarative language, but it is incredibly powerful. The examples I have played with leverage JavaScript, but there are bindings to more languages, principally C++. Swiby of course leverages JRuby, and I think has the edge given some important capabilities of a pseudo-declarative language.

For what it is though, Kinetic is a very powerful thing. Checkout the Nokia page for it. From that page there are four or so articles, the first a good intro, including videos and the most recent about KDE integrations.

The markup style is similar to Swiby, Shoes, JavaFX. For example, the following snippet ...


Sat, Sep 26, 2009

Theory of Constraints and Agile

Tom Looy (ex ThoughtWorker) did a great presentation at Agile 2009 on the Theory of Constraints and its applicability to Agile projects. Agile project managers are comfy with the principals, but Tom's presentation explains it all again for the layman. Luckily for folks that were not there, Tom has made it available on vimeo (1.5 hours cut down to 30 mins). Here is one of the key screenshots: waterfall in requirements More graphics presentations like this are needed for the Agile industry though.... Mon, Sep 7, 2009

AAW platform is awesome

We are a couple of weeks on from the Google I/O conference now, and many have had a chance to play with Wave. It is an impressive product, but still with some months/years to go before its ready for the mass market. Missing is the essential email integration, but when it comes the combination of Google Apps, AppEngine and Wave will be AAWesome (most likely). Apps is Gmail, Docs, Spreadsheets, Presentations, Chat and private youtube. AppEngine of course presents cheap hosting of apps, but most likely in the future will allow for custom underpinning of more Google enterprise services than 'just' Wave. Lotus Notes (it just refuses to die) and other legacy client/server collaboration 'solutions' are most definitely wrong footed. IBM/Lotus should rightfully be scared. Fri, 19 Jun 2009

AppEngine's blind-spot

I am not wishing to be ungrateful for the opportunity to test-drive GAE over the last while, but I have to get something off my chest. There is a hole in the service right now that's going to mean a change to Java web app development. Namely there is modest risk to storing things in the session for apps that you could characterize as Ajax-like and chatty over the wire. The risk is to items being out of date when retrieved from the map. If you are running a stateless app, then there is no problem, but if you are trying to store things in the session (and not push everything to cookies or down to BigTable) then you could see concurrency problems. I have proof and there are workarounds... Apr 15, 2009

Shoes and Swiby - walking through the example RIA apps

Expanding on the previous blog entry a little: here is an 8 min video walk through of the Shoes and Swiby apps that were developed. It still uses the same Java back-end on Google's AppEngine, but digs deeper into the client code, and the advances represented in DSLs for Ruby that are hypothetical successors for HTML and JavaScript... Apr 13, 2009

Google App Engine for Java with Rich Ruby clients

I've been testing the Google App Engine for Java for the last few months. And trying out Rich Ruby clients with it. Apr 07, 2009

Peter Royal's Semantic Circus Movements

Pete Royal, Semantic Search, Wolfram's Alpha ... and Circus Movements. Mar 09, 2009

Releasing PicoContainer 2.5 and JRemoting

PicoContainer 2.5 and JRemoting 1.0 have been released. July 30, 2008

Project Documentation Thoughts - are you allergic to documentation

Documentation is a hard thing to convince any team to do, whether you pay them or not. Over the years Open Source in particular has been scarred by poorly documented projects. July 30, 2008

Interesting Google search result for JavaFXScript

Well not quite, but I am sure it is what Google wanted to tell me... June 22, 2008

What brought me to Inversion of Control in the first place..

..was that it made for very nice decomposed, yet very declarative applications. A year after getting involved with Inversion of Control (IoC), I found myself as Head of Development of a dot-com in London and hired Joe Walnes as one of the engineers. Amongst many things that I found hard to convince the developers of the need for, was IoC. Mar 23, 2008

Crazy Bob and type safety for Dependency Injection

I bumped into Bob Lee at Greg Stein's birthday party in San Francisco last night. Tis always a pleasure. Despite the drink/music/company we got into a debate about Guice and its love of type-safety. Congrats on the Jolt award win by the way Bob and Kevin.

My proposal was that, in addition to the binding-annotations magic of Guice they could soften a little and learn to live with parameter names as another way to disambiguate. Developers using Guice (or PicoContainer/others) sould be able to choose utter runtime-type-safety or step back a little and just live with the fact that no matter how hard you try there can always be a binding mismatch somewhere and good testing is the way to mitigate that risk... Mar 16, 2008

Sweb 3.0

Every one else seems to be chucking their opinion into the Web 3.0 debate, so I think I will too.
Oct 13, 2007

Injecting into Servlets and undoing the stranglehold of web.xml

Dependency Injection is that magic thing that aids design and testability. Unfortunately Servlets have never been injectable components. Well not according to Sun anyway. Many years ago we saw to it that the excellent Jetty could handle Servlets with constructors specifying their argument requirements. Time has come to talk about it and the required death of web.xml
Jul 22, 2007

PicoContainer 2.0 beta released

We have been working on this for a while, and it is now in Maven2 repositories and ready for use. Lots of new features including the leveraging of parameter names for configuration and component disambiguation.
Jul 16, 2007

JavaFX Mobile is *just* SavaJE acquired by Sun

JavaFX Mobile is just SavaJE recently acquired by Sun, bundled with Java FX and given a new marketing impetus.

Read on for application types and some Dependency Injection thoughts about what this stuff should be.
May 9, 2007

Branch by Abstraction on the trunk negates the need for multi-branch development

A lesser-known source-control best practice I've been pushing for a number of years is Branch by Abstraction. The suggestion is that you can convene large sets of developers in a single trunk and get then to continue to commit to a single place without having to spawn "short lived feature branches" when some large change could mean that the build is going to be hosed for a number of weeks while the team gets it right. Those branches just end up running and running....
Apr 26, 2007

C for Java

Apart from being able to rejuvenate older code-lines, it might be nice to learn where the JVM and the Java Language Spec (JLS) falls short in respect of being able to host C code. Two technologies promising to make C runnable on a JVM....
Apr 08, 2007

Waffle - Java web action framework with smallest lines of code count for action methods

Waffle - a great technology for developing Java web applications...
Mar 16, 2007

Announcing Paranamer: an open source answer to the dropping of parameter name access from Java6

Java 6 has shipped of course. Without a feature that the committee overseeing it thought would be good: Parameter name access.

The committee had a design that there was consensus for, but Sun suggested there was no more time to finish it a few months before shipping. Sun, themselves, were against the availability of parameter names in the way that other members of the committee had settled on. Instead they wanted some annotation above the methods that one wanted to have parameter name access for. I for one, felt that was a huge cost and illustrated that we had learned nothing from the terseness lessons from the Ruby crowd. Ruby and Rails are making massive inroads into enterprise Java and .Net development from what I hear, for multiple reasons of course.

Anyway, a -g compiler option would have been far better. Sun needed to get over the worry that backwards compatibility needs to be assured forever. If someone wants to hardcode say getMethodByParameterNames("addTwoNumbers", "numOne", "nunTwo") and the later release of that dependent number-adding.jar might spell fix nunTwo to numTwo, then on their own head be it. The potential changing of the parameter names was the big driver for the annotation design. To me a Java method signature is forever method name + arg types, and should never be expanded to include parameter names, which was not explicitly stated, but is implicit if the parameter names are immutable.

So enter ParaNamer .....
Mar 14, 2007

Simple Wars - An Agile anti-pattern

Simple Wars
A short description of the Agile anti-pattern of "Simple Wars".

Mar 3, 2007

Cozmos gets Subversion back end

Subversion backend
You can configure cozmos to use a subversion repository instead of the build in unversioned one. Whatever authentication and authorization implementation the subversion repo had (via mod_dav_svn) will control the permissions for the editing of pages. Its slightly ineligant in use (at least first time) as the URL for publishing is different to the one for browsing. as opposed to for example. Once set in SeaMonkey's preferences (for that site) it is remembered by the browser for subsequent launches....

Jan 15, 2007

Cozmos- CMS using webdav and Sitemesh

Cozmos project at Codehaus
Kent Spillner started this, and I've been making some commits to it. (click thru for screenshots)

The project is not eating its own dogfood yet - its website is just a static page under simple DAV control.  For good reasons - the version of Cozmos that we have presently is more like original wikis in that there is no authentication and anyone could change any page or upload arbitrary JSPs for server side execution (ouch). 

It turns out that there are precious few lines of Java to code this.  Well, it depends on SiteMesh which is a lot of lines of Java, but that does not count as its a provided library.  It should be pretty easy for the PHP community to clone using PhpMesh. Similarly Ruby/Python with whatever decorating technologies fit...
Jan 07, 2007

An alternative to wikis using WebDAV

The development community has struggled to deliver a fantastic documentation tool or technology that is universally popular. There have been many attempts at a system that allows developers to document projects or users to edit more general content easily. When XML felt like a cure all, XML generated into sites was a popular option. Refer DocBook and predecessors.

One might have thought that Wikis were that panacea, but there are grumblings. The barrier to entry for content editing may have been lowered and needless workflow stripped away, but there is real reticence about text areas in web pages for editing. Whether a *cunning* markup language or a fancy Web2.0 WYSIWYG editor there are some that elect to not edit content that way. You can try to compare and contrast many of the wiki implementations, but there grumbles persist. Choose your best from and I bet there are still grumblings on use. Some people think tagging is a redeeming factor, particularly for those wiki apps that did not retrofit the feature, but the in-a-webpage gripe persists. Personally I'm sick of that side of wikis. Sorry Ward.

I outline here an alternative to wikis for content editing. I think it is quite smooth to use. Others may not.
Dec 06, 2006

DYST: A Spam reducing upgrade to SMTP.

Spam affects all people with email addresses that are published on the web. It also affects many who had gone to some length to keep their address private. Its getting worse, and those that are making money from it are innovating rapidly to defeat the mail filters leveraging the theories of Reverend Bayes. It's a war.

Rather than obsolete email (or the ubiquitousness of the @ sign) or charge for email, perhaps more tricks like the Sender Policy Framework (SPF) idea need to be rolled out. SPF has flaws, by the way. Amongst other things it can push the roll out of SPF ... early adopters can see no benefit.

Many years ago on the mail list for Apache's Java Mail Server (JAMES) an extension to SMTP was proposed and discussed. The idea: There needed to be a phased update of mail servers to a new standard whereby the origin of emails could be confirmed. "Did You Send This" (DYST) was born...
Jul 27, 2006

At least one unilateral improvement to Java

Ruby/Rails etc etc are pummeling Java presently. At least, the ranks of Java's intelligentsia are hemorrhaging to a Ruby/Rails world and not coming back according to their current plan. From James Duncan Davidson some years ago & swathes of other Apache people since, to every-loves-to-hate-him-online-but-he's-great-fun-really Obie Fernandez. Let us not forget Dave Thomas or Bruce Tate (both ticked at Greg Luck's blog post) dissing the hype surrounding Ruby/Rails.

We are currently witnessing the closeout of Java 6's feature set and delivery looming FCS, and there little in it to react to Ruby or Python's terseness.  Now, Java can't quickly become a dynamic language and maybe should not for its core, but perhaps a pragmatic goal is attainable: host dynamic languages more effectively.  The likelihood is that people will code applications that are hybrid dynamic and static. Consider a Hibernate (or iBatis or Java tier used by the 4GL-esqe Rails via JRuby (still a 3GL) all in a single JVM.  Java is lacking some features that facilitate a dynamic excellence, despite being rooted in a traditional static Java.  It all centers around methods and method access I think. Some will claim I'm stretching some points, but the success of integration with scripting languages or the robustness of Rails-like libraries for Java rests on the simplicity and flexibility of reflection in Java.

I propose two things in the remainder of this blog entry. Making method access (almost) part of the language, and Granting access to methods by their parameter names before Sun gets round to it. Read on....

Jul 30, 2006

Short Social OSCON Notes

Some notes not so much on the technology presented at OSCON, but on some social message speakers.
Jul 27, 2006

Un-Agile Things

Some ranting on Unified Process (UP) being painted as an Agile methodology.
Jul 19, 2006

Derby's arrival in Java 6 surprises me too (and I'm a Java 6 committee member)

Grumble grumble...
If I'd have been asked to vote, I'd have voted against it. It has increased the JDK size and there was nothing about Derby that made it hard to work with after a download/install.

Things in the JDK have a duty to have fairly stable APIs. Is that true for Derby, or given the nature of JDBC is its jar not subject to stability?

I cast my mind back to Xerces' original inclusion in the JDK. The SAX api provided a similar boundary to developers. How did that work out? I think the frustrations over package naming and the voodoo required to override the version distributed are worth considering when it comes to simply taking things from the Open Source world.
Jun 19, 2006

Using XStream to forward JSON to a browser

Though it may be nice to consider XStream as a tool for compatibility with .Net, XML is not the lingua-franca of web pages. JavaScript is, and it has a defacto standard for 'object passing' in JSON. With a proposed new XStream 'writer', arbitrary Java objects can be transformed into JSON for sending to web pages to play their part in JavaScript enhanced web applications.
Jun 14, 2006

Using XStream to process standardized XML types like RSS

How to use the excellent XStream to encode/decode RSS/other documents. Useful if you want to easily process RSS feeds in Java without ugly schemas or heavyweight tool-kits
May 21, 2006

My 'Agile India' presentation on Dependency Injection vs Big Up-Front Architecture

I spoke at "Agile India" a couple of days ago. The major presentation I did was an opinion piece on Dependency Injection (alongside Agile practices) versus Big Up-Front Architecture (BUFA). It ran for an hour including questions.
May 8, 2006

Very Simple Java interop with .Net over the wire without Web Services.

Ian Cartwright and I have written a paper after some experimentation with trying to make various .Net and Java containers and web servers communicate over the wire to each other using Web Services and auto-generated WSDL. We concluded that is not easy as many of the industrial strength J2EE servers or Web Services toolkits had a different view to the similar products in the Microsoft stack as to how to interpret and bind to a WSDL doc programatically. Anyway, we soon dumped Web Services and tried a REST inspired design that was very light on spec. Read the four-page PDF.
May 6, 2006

iSights, magnets, Powerbooks and tripods

Laptops and magnets don't mix plus a $3 home made tripod mount for the iSight.
May 6, 2006

Parameter names for Java 6 (Mustang) answer

The distilled wisdom from the question I posed on a Java 6 feature from a month or so ago.
May 6, 2006

Parameter names for Java 6 (Mustang) question

A question/issue from inside the Java 6 (Mustang) committee discussions on parameter names.
Mar 20, 2006

A NanoContainer Presentation

A downloadable Shockwave or PDF presentation as shown at the Chicago Java user's group a week ago.
Jan 27, 2006

Ruby versus JavaScript for Web3.0

Contrasting Ruby and JavaScript for a hypothetical Web3.0 while considering thick versus thin experience. A write-up of a pub debate with the Chicago Ruby users group.
Jan 10, 2006

Selenium The Movie / Director's Cut

Selenium being driven from JUnit is my preferred mode of operation. I've made a move of Selenium testing the PetSoar app under JUnit control......
May 7, 2005

Selenium The Movie

OK, here is a movie of Selenium in action. Most of the hard work for Selenium.....
Apr 26, 2005

JMock Crash Course

A seven page presentation of JMock, otherwise told as a Crash Course for a client........
Apr 26, 2005

Content Editing Nirvana

I was chatting to <shameless-name-drop>Brian Behlendorf</shameless-name-drop> about the integration between Microsoft's Sharepoint, IE and Word 2003.......
Apr 11, 2005

Agility Alliance

EDS and friends are in some sort of alliance. Not in itself newsworthy from my point of view. What is newsworthy is the group's trading name is 'Agility Alliance'.......
Mar 19, 2005

European Software Patent Spectre

We (Europeans) really need a 'Get Firefox' style button programme to marshal efforts against software patents......
Mar 03, 2005


Selenium: kick ass web testing for free.
In the fall of last year, Jason Huggins showed me "JavaScript Functional Test Runner" ...
Mar 02, 2005


Casting an eye over the eXtreme Programming rules page - I can't help feeling ...
Mar 02, 2005

Ward on Dependency Injection

Ward Cunningham, on an Agile versus Traditional panel at a testing conference, when posed a question ...
Oct 19, 2004

Constructor Dependency Injection Book

Inspired by our use of txt2tags for the CDI book, Aurelio Marinho Jargas has made some docs changes to the Python txt2tags...
Oct 17, 2004

Constructor Dependency Injection Book

Oct 12, 2004

My OSCON PicoNirvana slideshow

July 30, 2004

Tools with Proprietary Source Control? Be Careful.

June 11, 2004
Too many tools with too many forced source/version control choices. When deploying an application that manages human readable pages somehow, look under the hood and consider how important it is for that content to...
June 05, 2004

PicoContainer 1.0 released (finally)

OK so its been over a year since Aslak and I got drunk at my flat and started PicoContainer...
June 05, 2004

WinRunner Best Practices

I was quite surprised to find that google had no entries at all for WinRunner best practices. So I guess this is the first. The only one I guess for a short while :-) The first observable fact is that...
April 28, 2004

Identity Card : Identity Harvesting?

Like many others, the UK government is mulling an identity card system. I welcome it, with reservation... If the card will electronically provide multiple identifying characteristics for an individual, then it is possible that there could be at least some...
April 22, 2004 

Source Control Best Practices: A must read for developers

Not my words at all, but I agree with every single one: Actually reading the, if you believe it, will increase your pain if you work with inferior SCM solutions. And believe me, there are many that sell well...
April 22, 2004 

Logging - just say no.

From Mike Mason's IoC taken too far entry, Mike states that he has a problem with ..   /**     * A Log4J logger instance - initialised using IoC rather than     * static logging to cut down on the number of Logger...
April 20, 2004 

Lotus Notes Shame

I woke up the other night in a cold sweat, as it occurred to me in a nightmare that Thicky is turning out to be the type of thing that a developer could build Lotus Notes with. Is the whole...
April 16, 2004 

Thicky: like the web, but with a Groovy thick-client experience

For those uninterested in history See the SourceForge homepage. Err, because of a SourceForge authority glitch, these pages are temporarily hosted here. Thicky is the realisation of an idea that I had in 2001. As head of development at Digital...
March 31, 2004 

Objects, Components, Services and Aspects

In a blog entry xOP some months ago, I outlined what I felt about OOP, COP and AOP and their relationships to each other. In recent discussion with Dave Fellows and James Greenwood some more things about components and object...
March 25, 2004 

Groovy - a convergence language

It may be too wedded it its host environment (The JVM and rt.jar), but groovy is the buzz language of the moment. In my telling of the story, I'm often heard saying something like this: "Groovy in the natural intersection...
February 16, 2004 

Can the next big language drop public static void main(String[] args) please?

Java and C# support main as an entry point for applications. The static nature of this, and the fact that it is not subject to an interface contract, often leads applications developed for this entry point to not be components....
February 16, 2004 

NanoContainer beta soon

We've had a moment of clarity on the project. It now definately has connotations of scripting about it. Both general scripting and bespoke ones for things like servlet and webwork. Flushed from that sucess we, we'll be moving towards MicroContainer....
February 12, 2004 

Legacy TDD : RPG is not always a role playing game

OK, so I am doing a stint of work on an AS400 for a major internet bank. The things you have to do for ThoughtWorks! We quickly realized that you cannot unit test RPG. You can integration test it though......
February 12, 2004 

Jesktop goes Pico

OK so the lame desktop application that I penned with others a couple of years ago has languished for quite a while. I'm currently running through the codebase removing Avalon and making it a full Constructor Injector IoC solution. It's...
January 24, 2004  

NMock PicoCompatability

In order to aid type3 IoC and support mocking we either have to interface/impl separate everything, or have public empty constructors on real classes (that we want to mock). The empty ctor thing goes against the grain of a type3...
December 23, 2003 

Type3 rollout

In work (nameless energy trading co in the City of London), two projects that are in my periphery as well as the one I work on are moving to type3 IoC. Two are C#, one is Java/Swing. Chris Stevenson and...
December 23, 2003 

XStream transport for AltRMI

It would be nice to use Joe's XStream (XML Java serialization tool) for an new AltRMI transport. Oh for another few hours in the working week! Anyone care to start a small SourceForge project and add me as a courtesy...
December 05, 2003 

My IoC article on JDJ.

Here it is :-
December 05, 2003 

Eyeball Unit

At XPDay last night, we talked of a new way to unit testing. Apparently it was in the collective unconscious though (Owen Rogers had thought of it as well). EyeballUnit takes snapshots of GUIs (howfully under script control) and in...
December 03, 2003 

Enterprise Object Broker 1.1

EOB 1.1 got released at the weekend. Jetty, QZarch and AltRMI upgraded. Not really newsworthy as EOB 2.0 is being readied....
November 10, 2003 

Rhino - Static Struggle

I'm playing with Rhino for the sake of an alternative markup language to XML for the assembly of configuration of Pico Components. The script looks pretty neat, and way easier on the eye than XML. When Groovy is ready, there...
October 25, 2003  

Pico practices for .Net

Pico practices (refer apply to .Net too. DotNet's 'Properies' feature is where picoification has problems. DotNet makes good use of properies for its Data Binding feature. Data Binding requires that properties have getters and setters in order to be...
October 16, 2003  

.Net pitfalls

Being on a .Net project at a ThoughtWorks client site, and using Visual Studio 2003, it is apparent that code is not as refactorable as it would be for Java and IDEA/Eclipse. As such the cost of refactoring is higher....
October 16, 2003  

Core Developers Training Sessions

The Core Developers Network is currently running sessions in London on J2EE, EJB, JBoss, Geronimo, JDO, Servlet stuff, deployment etc. See their website These guys are the experts....
October 07, 2003  

PicoContainer is non-threatening

A Collague on a .Net project was reticent about using a PicoContainer design for IoC separations of a compoent model as one more DLL import would be too much. It is important to point out that Pico is a design...
October 07, 2003  

Gui Development Costs

It appears to me that there there is a point where Swing becomes compelling. If you have a simple single user GUI app that requires DB persistence for fields in the form, choose MS Access (The original Data Binding design)....
October 02, 2003 

Aslak Shadow-Boxing at JAOO

Well, we projected this in a loop for laughs a few minutes after Aslak did it. AVI Movie. Might need DIVX decoder to make it look prettier. Find that here....
September 26, 2003 


Some weeks ago Chris Stevenson, Aslak and Jon Tirsen gave a presentation to Roy (the TW CEO) on SEDA, IoC aamd AOP. I drew a small timeline diagram to illustrate when I though things had happened in terms of paradigms....
September 24, 2003 

Aslak watch: I am not a girl.

Again from yesterday at JAOO. Simon Singh (famous author of Fermat's Last Threorum and The Code Book) sought two volunteers for a visual demo of cypto. He was interested in the gender of vounteers. Squinting into the audience he asked...
September 23, 2003 

Aslak: Wiki advice to Ward Cunningham

In conversation today at JAOO, Aslak suggested to Ward Cunningham that he might want to have a "wiki" at SourceForge for his FIT project. Class....
September 22, 2003 

App.config in C#

OK, keeping this short ... App.config is a terrible idea. It does not make testing easy. It is very un-IoC. It is tightly coupled. refer updates below Update - 23rd Dec 2003 OK OK, so I am somewhere between wrong...
September 17, 2003 


I promised not to quote blog content of others, but could not resist this one. Joe today on the pico list :- "I once dreamt about Lego, sex and JMS, all at the same time. It was an interesting experience....
September 17, 2003 


Erik Dorenburg and Damien Guy were working on a Hibernate demo for Enterprise Object Broker. Great work apart from the jar dependancy hell :- U lib/c3p0.jar U lib/cglib-asm.jar U lib/commons-beanutils.jar U lib/commons-collections.jar U lib/commons-dbcp.jar U lib/commons-lang.jar U lib/commons-logging.jar U lib/commons-pool.jar...
September 06, 2003 

A declaration against Unit Tests

[Ulrich Mayring to Leo Simmons today on - both Avalon buddies] > Unit tests are a reasonable alternative [ to documentation - Ed ] I disagree. Unit tests are something very different from documentation. IMHO unit tests are useless,...
September 04, 2003 


Discussed at length tonight with ThoughtWorkers at GeekNight. I love it. As per practices entry below it goes hand in hand with IoC and interface/implementation separation (which I do early). Talked over a project at my current client site with...
September 03, 2003 

Endianism in OSS

With Inversion of Control (IoC) we have seen the idea touted and sold hard over five years. Avalon is the most prominant of the frameworks honoring this ideal. With westpect to IoC, the OO software world is split into the...
September 03, 2003 

Endianism - defn

(clipped from Everything2) The terms Big-Endian and Little-Endian are from the Lilliput episode of Gulliver's Travels, where they are satires on the Protestant and Roman Catholic religions, and their effect as factions in the politics of the two rival and...
September 03, 2003 


This has resonated with me for a while. Should a team strive for a single implementation of a thing (if there are differing opinions) or allow diversity. Diversity could be at any level. It could be at implementation where the...
September 03, 2003 

PicoContainer 1.0b1...

...gets a release. See PicoContainer Site...
August 16, 2003  

Early Practices.

Joe asked many of us to prepare their early practices. He drew a map of them "X causes me to do Y". It was very smart. He took it to XtC where it became name the patterns you use. Here's...
August 07, 2003 


Will be at XtC tomorrow to be interviewed on my patterns and practices. Joes idea is taking up a whole night....
July 28, 2003 


AltRMI now has transaction (client context) support. Enjoy :-)
May 6, 2003 

AltRMI 0.9.1

Now hosted at , AltRMI is much nearer to release...
Feb 17, 2003 

Enterprise Object Broker 0.9

The last one before release? See
Feb 17, 2003 

AltRMI & EOB releases Well, I shipped another version.  It will go 1.0 in about a month I guess.  A couple of months after ...
Jan 13, 2003 

(Logwars restarted) Commons Logging.

AltRMI uses two commons comps now.  Attributes and HTTPClient.  Both require Commons Logging.  I'd prefer it if highly reusable beans did not ...
Dec 21, 2002 

AltRMI - Transport over servlet

This is proving difficult to implement.  I'm using Jetty in the test-first development of this transport and Jetty is really sweet ...
Dec 21, 2002 

Enterprise Object Broker.

Well I've finally picked this up again.  There is a long list of tasks to do.  Upgrade of Phoenix, use of MetaGenerate, Upgrade of AltRMI.  I've already ...
Oct 4, 2002 


I finished MetaGenerate and it works quite well for all the xdoclet using blocks in the Apache codebase.  Much smaller ...
Sep 30, 2002 


Using Joe's QDox, and in 2 hours with a hangover I managed to create a sub-sub-sub-project at Apache called 'MetaGenerate'.  It is basically ...
Sep 28, 2002 


SPAM.  Sigh.  It won't even start to get fixed until SMTP servers have a mechanism to athenticate each other (callback with a digest etc).
Sep 5, 2002 

JIT Software

Andy Pols (no blog) is reading a fairly old book by Donald P Reinertsen called Managing the Design Factory.  A highly compressed ....
Sep 3, 2002 

Automatic Class Diagrams

Returning to a quest I have been on for a long time:- Automatically generating class diagram gifs under Ant control.  What I want is some form ....
Aug 16, 2002 

Async Message invocation over AltRMI and EOB

JoeJoeJoe (Walnes) and Charles Lowell (fellow Thoughtworkers) were working on Joe's idea of a way of firing out async message invocations over AltRMI.  Methods eligible ....
Aug 16, 2002 

EJB not the holy grail

Mike Cannon-Brookes has a great article on EJB and why it is not everthing in the Java application serving world.  It is a great starting point those interested in ....
Aug 12, 2002 

Err away from rewrite

A u-turn I have made in recent years is one on rewrite.  It was born from two things.  First was Martin Fowler's Refactoring book - not that we were not doing it before the book, just that we never really advocated it was right. An ex-CTO (and still a friend) of mine put it as "You say refactoring, I say you fucked up" ....
Aug 12, 2002