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 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
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:
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
Referring to the previous Etsy.com 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:
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 https://github.com/mobl/mobl-lib.git
git clone https://github.com/mobl/mobl.git
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 firstname.lastname@example.org:paul-hammant/mobl-lang-in-thirty-seconds.gitIf 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.
# or ./linux.sh if so inclined
See more demos here
Sun, Apr 3, 2011
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
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
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
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
this happens. This is
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
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
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 digg.com'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:
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
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
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
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
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
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
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
Mon, Sep 28, 2009
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, 2009great 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: More graphics presentations like this are needed for the Agile industry though.... Mon, Sep 7, 2009
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
Oct 13, 2007
Jul 22, 2007
Jul 16, 2007
Read on for application types and some Dependency Injection thoughts about what this stuff should be.
May 9, 2007
Apr 26, 2007
Apr 08, 2007
Mar 16, 2007
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
A short description of the Agile anti-pattern of "Simple Wars".
Mar 3, 2007
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. https://svn.foo.org/mycozmosroot/ as opposed to http://mycompany.com for example. Once set in SeaMonkey's preferences (for that site) it is remembered by the browser for subsequent launches....
Jan 15, 2007
Kent Spillner started this, and I've been making some commits to it. http://cozmos.codehaus.org/ (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
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 http://www.wikimatrix.org/ 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
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 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 http://esper.codehaus.org/) 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
Jul 27, 2006
Jul 19, 2006
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
Jun 14, 2006
May 21, 2006
May 8, 2006
May 6, 2006
May 6, 2006
May 6, 2006
Mar 20, 2006
Jan 27, 2006
Jan 10, 2006
May 7, 2005
Apr 26, 2005
Apr 26, 2005 <shameless-name-drop>Brian Behlendorf</shameless-name-drop> about the integration between Microsoft's Sharepoint, IE and Word 2003.......
Apr 11, 2005
Mar 19, 2005 'Get Firefox' style button programme to marshal efforts against software patents......
Mar 03, 2005