<?xml version="1.0" encoding="iso-8859-1"?>
<!-- generator="Paul Hammant's fingers!" -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Paul Hammant : Inversionism</title>
    <link>http://paulhammant.com/</link>
    <description>Paul Hammant's musings on Java, Inversion of Control, Dependency Injection etc</description>
    <language>en-us</language>
    <webMaster>blogmaster@hammant.org (Paul Hammant)</webMaster>
    <pubDate>Wed, 30 Jul 2008 09:30:00 -0800</pubDate>
    <atom:link href="http://paulhammant.com/blog/index.xml" rel="self" type="application/rss+xml" />

	<item>	
	 <title>Releasing PicoContainer 2.5 and JRemoting</title>
	 <link>http://paulhammant.com/blog/picocontainer-2.5-and-jremoting.html</link>
	 <description>PicoContainer 2.5 and JRemoting 1.0 have been released.</description>
	 <pubDate>Wed, 30 Jul 2008 09:30:00 -0800</pubDate>
	 </item>
	    
	<item>	
	 <title>Project Documentation Thoughts - are you allergic to documentation</title>
	 <link>http://paulhammant.com/blog/project-documentation.html</link>
	 <description>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.</description>
	 <pubDate>Wed, 30 Jul 2008 08:30:00 -0800</pubDate>
	 </item>

	<item>	
	 <title>Interesting Google search result for JavaFXScript</title>
	 <link>http://paulhammant.com/blog/interesting-google-result-for-javafxscript.html</link>
	 <description>Well not quite, but I am sure it is what Google wanted to tell me..</description>
	 <pubDate>Sun, 22 Jun 2008 23:10:00 -0800</pubDate>
	 </item>

	<item>	
	 <title>What brought me to Inversion of Control in the first place..</title>
	 <link>http://paulhammant.com/blog/what-brought-me-to-inversion-of-control-in-the-first-place.html</link>
	 <description>..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 the need for, was IoC.</description>
	 <pubDate>Sun, 23 Mar 2008 22:20:00 -0800</pubDate>
	 </item>
	
		<item>	
		 <title>Crazy Bob and type safety for Dependency Injection</title>
		 <link>http://paulhammant.com/blog/crazy-bob-and-type-safety-for-dependency-injection.html</link>
		 <description><![CDATA[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.<br /><br />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...]]></description>
		 <pubDate>Sun, 16 Mar 2008 21:00:00 -0800</pubDate>
		 </item>
		
	<item>	
	 <title>Sweb 3.0</title>
	 <link>http://paulhammant.com/blog/sweb-3.0.html</link>
	 <description>Every one else seems to be chucking their opinion into the Web 3.0 debate, so I think I will too.</description>
	 <pubDate>Sat, 13 Oct 2007 13:00:00 -0800</pubDate>
	 </item>

<item>	
	 <title>Injecting into Servlets and undoing the stranglehold of web.xml</title>
	 <link>http://paulhammant.com/blog/injecting-into-servlets.html</link>
	 <description>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.</description>
	 <pubDate>Sun, 22 Jul 2007 20:15:00 -0800</pubDate>
	 </item>

  <item>
	 <title>PicoContainer 2.0 beta released</title>
	 <link>http://paulhammant.com/blog/picocontainer-2.0-beta.html</link>
	 <description>
		   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.
		</description>
		<pubDate>Mon, 16 Jul 2007 09:05:00 -0800</pubDate>
	 </item>

	<item>
	 <title>JavaFX Mobile is *just* SavaJE acquired by Sun</title>
	 <link>http://paulhammant.com/blog/JavaFX_Mobile_is_just_SavaJE_acquired_by_Sun.html</link>
	 <description>
		    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.
		</description>
		<pubDate>Wed, 09 May 2007 08:45:00 -0800</pubDate>
	 </item>

  <item>
   <title>Branch by Abstraction on the trunk negates the need for multi-branch development</title>
   <link>http://paulhammant.com/blog/branch_by_abstraction.html</link>
   <description><![CDATA[
	    A <b>lesser-known source-control best practice</b> 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 &quot;short lived feature branches&quot; 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....]]>
	</description>
	<pubDate>Thu, 26 Apr 2007 20:30:00 -0800</pubDate>
   </item>

  <item>
   <title>C for Java</title>
   <link>http://paulhammant.com/blog/C-for-Java.html</link>
   <description>
	    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....
	</description>
	<pubDate>Sun, 08 Apr 2007 21:55:00 -0700</pubDate>
   </item>

   <item>
      <title>Waffle - Java web action framework with smallest lines of code count for action methods</title>
      <link>http://paulhammant.com/blog/Waffle-Java_web_action_framework_with_smallest_lines_of_code_count_for_action_methods.html</link>
      <description>
	    Waffle - a great technology for developing Java web applications...
	  </description>
	  <pubDate>Fri, 16 Mar 2007 08:20:00 -0700</pubDate>
    </item>


   <item>
      <title>Announcing Paranamer: an open source answer to the dropping of parameter name access from Java6</title>
      <link>http://paulhammant.com/blog/announcing_paranamer.html</link>
      <description><![CDATA[
	    Java 6 has shipped of course.  Without a feature that the committee overseeing it thought would be good: Parameter name access.<br/>
	    <br/>
		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 <i>also</i> 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.<br/>
	    <br/>
		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.<br/>
	    <br/>
		So enter ParaNamer ..... <br/>]]>
	  </description>
	  <pubDate>Wed, 14 Mar 2007 05:00:00 -0800</pubDate>
    </item>

    <item>
      <title>Simple Wars - Agile anti-pattern</title>
      <link>http://paulhammant.com/blog/Simple_Wars.html</link>
      <description>
	    A short description of the Agile anti-pattern of "Simple Wars".
	  </description>
	  <pubDate>Sat, 03 Mar 2007 08:00:00 -0800</pubDate>
    </item>

    <item>
      <title>Cozmos gets Subversion back end</title>
      <link>http://paulhammant.com/blog/cozmos-gets-subversion-backend.html</link>
      <description><![CDATA[
	    <b>Subversion back end</b><br/>
	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 inelegant 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...]]>
	</description>
	<pubDate>Mon, 15 Jan 2007 10:00:00 -0000</pubDate>
    </item>
	
    <item>
      <title>Cozmos: CMS using webdav and Sitemesh</title>
      <link>http://paulhammant.com/blog/cozmos-cms-using-WebDAV-and-Sitemesh.html</link>
      <description><![CDATA[
	    <b>Cozmos project at Codehaus</b><br/>
	Kent Spillner started this, and I've been making some commits to
	it. <a href="http://cozmos.codehaus.org/">http://cozmos.codehaus.org/</a>
	(click thru for screenshots) <br/>
	<br/>
	The project is not eating its own dogfood yet - it's 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). <br/>
	<br/>
	It turns out that there are precious few lines of Java to code
	this.  Well, it depends on <a href="http://www.opensymphony.com/sitemesh/">SiteMesh</a> 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 <a href="http://trypticon.org/software/phpmesh/">PhpMesh</a>.
	Similarly Ruby/Python with whatever decorating technologies fit...... <br/>]]>
	</description>
    </item>

    <item>
      <title>An alternative to wikis using WebDAV</title>
      <link>http://paulhammant.com/blog/post-wiki-content-management-with-WebDAV.html</link>
      <description><![CDATA[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.<br/><br/>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.<br/><br/>I outline here an alternative to wikis for content editing. I think it is quite smooth to use. Others may not.]]>
	  </description>
	  <pubDate>Wed, 06 Dec 2006 12:15:00 -0800</pubDate>
    </item>


    <item>
      <title>DYST: A Spam reducing upgrade to SMTP.</title>
      <link>http://paulhammant.com/blog/did-you-send-this.html</link>
      <description><![CDATA[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.<br/><br/>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.<br/><br/>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...]]>
	  </description>
	  <pubDate>Tue, 29 Aug 2006 12:15:00 -0800</pubDate>
    </item>

    <item>
      <title>At least one unilateral improvement to Java</title>
      <link>http://paulhammant.com/blog/at-least-one-unilateral-improvement-to-java.html</link>
      <description>Intro: 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 &amp; 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....
	</description>
	<pubDate>Sun, 30 Jul 2006 11:00:00 -0800</pubDate>
    </item>

    <item>
      <title>Short Social OSCON Notes</title>
      <link>http://paulhammant.com/blog/short-social-oscon-notes.html</link>
      <description>Some notes not so much on the technology presented at OSCON, but on some social message speakers</description>
      <pubDate>Thu, 27 Jul 2006 12:20:00 -0800</pubDate>
    </item>

    <item>
      <title>Un-Agile Things</title>
      <link>http://paulhammant.com/blog/un-agile-things.html</link>
      <description>Some ranting on Unified Process (UP) being painted as an Agile methodology.</description>
      <pubDate>Wed, 19 Jul 2006 07:05:00 -0800</pubDate>
    </item>

    <item>
      <title>Derby's arrival in Java 6 surprises me too (and I'm a Java 6 committee member)</title>
      <link>http://paulhammant.com/blog/derby-db-in-java6.html</link>
      <description><![CDATA[<b>Grumble grumble...</b><br/>
	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.<br/>
	<br/> 
	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?<br/>
	<br/>
	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.<br/>]]>
	</description>
	<pubDate>Mon, 19 Jun 2006 07:35:00 -0800</pubDate>
	
    </item>


    <item>
      <title>Using XStream to forward JSON to a browser</title>
      <link>http://paulhammant.com/blog/xstream-json.html</link>
      <description>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. </description>
      <pubDate>Wed, 14 Jun 2006 23:30:00 -0800</pubDate>
    </item>

    <item>
      <title>Using XStream to process standardized XML types like RSS</title>
      <link>http://paulhammant.com/blog/xstream-rss.html</link>
      <description>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</description>
      <pubDate>Sun, 21 May 2006 13:00:00 -0800</pubDate>
    </item>

    <item>
      <title>My 'Agile India' presentation on Dependency Injection vs Big Up-Front Architecture</title>
      <link>http://paulhammant.com/blog/dependency-injection-vs-BUFA.html</link>
      <description>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.</description>
      <pubDate>Mon, 08 May 2006 13:30:00 -0700</pubDate>
    </item>

    <item>
      <title>Very Simple Java interop with .Net over the wire without Web Services.</title>
      <link>http://paulhammant.com/blog/simple-java-and-dotnet-interop-paper.html</link>
      <description>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.</description>
      <pubDate>Sat, 06 May 2006 06:00:00 +0500</pubDate>
    </item>

    <item>
      <title>iSights, magnets, Powerbooks and tripods</title>
      <link>http://paulhammant.com/blog/magnets-and-laptops.html</link>
      <description>Laptops and magnets don't mix plus a $3 home made tripod mount for the iSight</description>
      <pubDate>Sat, 06 May 2006 05:30:00 +0530</pubDate>
    </item>

    <item>
      <title>Parameter names for Java 6 (Mustang) answer</title>
      <link>http://paulhammant.com/blog/parameter-names-for-java6-answer.html</link>
      <description>The distilled wisdom from the question I posed on a Java 6 feature from a month or so ago</description>
      <pubDate>Sat, 06 May 2006 03:00:00 +0530</pubDate>
    </item>

      <item>
        <title>Parameter names for Java 6 (Mustang) question</title>
        <link>http://paulhammant.com/blog/parameter-names-for-java6-question.html</link>
        <description>A question/issue from inside the Java 6 (Mustang) committee discussions on parameter names.</description>
       <pubDate>Mon, 20 Mar 2006 11:00:00 -0000</pubDate>
      </item>

    <item>
      <title>NanoContainer Presentation</title>
      <link>http://paulhammant.com/blog/NanoContainer-Presentation.html</link>
      <description>A downloadable Shockwave or PDF presentation as shown at the Chicago Java user's group a week ago.</description>
      <pubDate>Fri, 27 Jan 2006 14:00:00 -0000</pubDate>
    </item>

      <item>
        <title>Ruby versus JavaScript for Web3.0</title>
        <link>http://paulhammant.com/blog/ruby-versus-javascript-for-web3.0.html</link>
        <description>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.</description>
        <pubDate>Tue, 10 Jan 2006 08:00:00 -0600</pubDate>
      </item>

    <item>
      <title>Selenium The Movie / Directors Cut</title>
      <link>http://paulhammant.com/blog/selenium-the-movie-directors-cut.html</link>
      <description>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......</description>
      <pubDate>Mon, 7 Mar 2005 19:00:00 -0600</pubDate>
    </item>

    <item>
      <title>Selenium The Movie</title>
      <link>http://paulhammant.com/blog/selenium-the-movie.html</link>
      <description>OK, here is a movie of Selenium in action. Most of the hard work for Selenium...</description>
      <pubDate>Tue, 26 Apr 2005 01:20:00 -0600</pubDate>
    </item>

    <item>
      <title>JMock Crash Course</title>
      <link>http://paulhammant.com/blog/jmock-crash-course.html</link>
      <description>A seven page presentation of JMock, otherwise told as a Crash Course for a client.</description>
      <pubDate>Tue, 26 Apr 2005 01:00:00 -0600</pubDate>
    </item>

    <item>
      <title>Content Editing Nirvana</title>
      <link>http://paulhammant.com/blog/content-editing-nirvana.html</link>
      <description>I was chatting to Brian Behlendorf about the integration between Microsoft's Sharepoint, IE and Word 2003.....</description>
       <pubDate>Mon, 11 Apr 2005 19:45:00 -0600</pubDate>
    </item>

    <item>
      <title>Agility Alliance</title>
      <link>http://paulhammant.com/blog/agility-alliance.html</link>
      <description>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'.....</description>
      <pubDate>Sat, 09 Apr 2005 04:33:00 -0600</pubDate>
    </item>

    <item>
      <title>European Software Patent Spectre</title>
      <link>http://paulhammant.com/blog/eu-software-patent-spectre.html</link>
      <description>We (Europeans) really need a 'Get Firefox' style button programme to marshal efforts against software patents. ...</description>
      <pubDate>Thu, 03 Mar 2005 02:33:00 -0600</pubDate>
    </item>

    <item>
      <title>Selenium</title>
      <link>http://paulhammant.com/blog/selenium.html</link>
      <description>Selenium: kick ass web testing for free. In the fall of last year, Jason Huggins showed me "JavaScript Functional ...</description>
      <pubDate>Wed, 02 Mar 2005 23:44:00 -0600</pubDate>
    </item>

    <item>
      <title>Transparency</title>
      <link>http://paulhammant.com/blog/transparency.html</link>
      <description>Casting an eye over the eXtreme Programming 'rules' page - I can't help feeling ...</description>
      <pubDate>Sun, 30 Jan 2005 23:44:00 -0600</pubDate>
    </item>

    <item>
      <title>Ward on Dependency Injection</title>
      <link>http://paulhammant.com/blog//000300.html</link>
      <description>Ward Cunningham, on an Agile versus Traditional panel at a testing conference, when posed a question ...</description>
      <pubDate>Tue, 19 Oct 2004 13:44:00 -0600</pubDate>
    </item>

    <item>
      <title>txt2tags - good for books</title>
      <link>http://paulhammant.com/blog//000290.html</link>
      <description>Inspired by our use of txt2tags for the CDI book,  Aurelio Marinho Jargas has made some docs changes to the Python txt2tags...</description>
       <pubDate>Sun, 17 Oct 2004 10:00:00 -0000</pubDate>
    </item>

    <item>
      <title>Constructor Dependency Injection Book</title>
      <link>http://paulhammant.com/blog//000280.html</link>
      <description>The PicoContainer committers and friends are writing a book called Constructor Dependency Injection. It is going to be a bit of a mob development with fair credit for the proportion of work done by each contributor...</description>
      <pubDate>Tue, 12 Oct 2004 10:00:00 -0000</pubDate>
    </item>

    <item>
      <title>My OSCON PicoNirvana slideshow</title>
      <link>http://paulhammant.com/blog//000270.html</link>
      <description>Just given at O'Reilly's OSCON, my
PicoContainer/NanoContainer/MicroContainer sideshow (PDF)...</description>
      <pubDate>Fri, 30 Jul 2004 12:30:10 -0800</pubDate>
    </item>

    <item>
      <title>Tools with Proprietary Source Control? Be Careful.</title>
      <link>http://paulhammant.com/blog//000260.html</link>
      <description>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...</description>
      <pubDate>Fri, 11 Jun 2004 21:35:10 -0600</pubDate>
    </item>

    <item>
      <title>PicoContainer 1.0 released (finally)</title>
      <link>http://paulhammant.com/blog//000250.html</link>
      <description>OK so its been over a
year since Aslak and I got drunk at my flat and started PicoContainer.
Anyway, in short, pairing over Yahoo Instant Messanger, we've just
released the 1.0 Java version...</description>
       <pubDate>Sat, 05 Jun 2004 10:15:10 +0000</pubDate>
    </item>

    <item>
      <title>WinRunner Best Practices</title>
      <link>http://paulhammant.com/blog//000245.html</link>
      <description><![CDATA[<p>I was quite surprised to find that google had no entries at all for <a href="http://www.google.com/search?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=UTF-8&amp;q=%22winrunner+best+practices%22">WinRunner best practices</a>. So I guess


 this is the first. The only one I guess for a short while :-)</p>

<p>The first observable fact is that WinRunner tests script creation is not normally a development deliverable. Developers typically throw completed changes over the fence to testers.  The testers typically place tests in a different place to developers' 


Java/JSP or C#/ASP source.  Thus the developers are not in the habit of running WinRunner test suites or (shock horror) modifying them after a refactoring. As a consequence testing remains a high science that developers shun, and the software world is not


 much closer to true one click builds, when using WinRunner.</p>

<p><span class="caps">OK,</span> so <a href="http://www.testing.com">Brian Marick</a> asserts (correctly) that developers and testers should get a lot closer to each other to increase the agility of software delivery. In this posting I detail some of the 


things that I've learned about the technical aspects of a closer working relationship.  That people have to change too, is left for others to discuss.  I'd like to credit Kevin Raymen and John Englezou (at my previous client site - large energy trading co


mpany) and Dawn C at my current client site.  For constant encouragement and a significant amount of contribution during the attempts to prove the actual worth of these ideas, I'd like to suggest that <a href="http://cgi.nfletcher.plus.com/blog/">Neil Fle


tcher</a> is my co-conspiritor.</p>

<p><b>Use real Source control</b></p>

<p>In reality that means the same choice that the developent team have chosen.  In fact it means the same depot/module.  The proprietary version control build into the more enterprise versions of the dominant grapical testing tools is just simply wrong (a


s is all proprietary source/version control).</p>

<p>So, in order to use an arbitarty source control package(subversion and perforce are the pinnacle <span class="caps">IMHO</span>), we must understand how WinRunner scripts can be saved for that vision. Here is view of part of a directory structure conta


ining three tests:-</p>

<p>SomeLogicalDir/<br />
&nbsp;&nbsp;SomeTestOrOther/<br />
&nbsp;&nbsp;&nbsp;&nbsp;db/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crvx.asc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm.asc<br />
&nbsp;&nbsp;&nbsp;&nbsp;debug/ - this dir needed, even if empty<br />
&nbsp;&nbsp;&nbsp;&nbsp;exp/ - this dir needed, even if empty<br />
&nbsp;&nbsp;&nbsp;&nbsp;header<br />
&nbsp;&nbsp;&nbsp;&nbsp;script - the actual test script<br />
&nbsp;&nbsp;AnotherTest/ <br />
&nbsp;&nbsp;&nbsp;&nbsp;(etc)<br />
&nbsp;&nbsp;YetAotherTest/ <br />
&nbsp;&nbsp;&nbsp;&nbsp;(etc)</p>

<p>'SomeTestOrOther' (and the other two tests) - rename as appropriate for your test. Please no more Test01 thru 99. Names should be representative of what they are testing.  That way someone perusing the file system with windows explorer can easily see w


hat is what.</p>

<p>There are two empty directories that need to exist for WinRunner to run.  Some source control packages will delete the dir if empty, so place a dummy.txt file in there to stop this.  The other files are strictly necessary. The actual file that does the


 business is script (more later).  If you book the above in to source control and ignore all the other extraneous files (including the artifacts of each run), you'll be in a position where others can do a perfect check-out/sync to get the latest versions 


of each test in the suite.</p>

<p><b>Test Data and Script Separation</b></p>

<p>It is very common for people to separate test scripts and test data nowadays. It seems the <span class="caps">EMOS </span>Framework is often used.  To me, this keeps the whole realm of testing in the voodoo world from the developers point of view.  As 


<span class="caps">EMOS</span> uses Excel spreadsheets we find that people find source control difficult (merge a binary file anyone?).  <span class="caps">EMOS</span> is something that I actively discourage. However, one of the problems it was trying to 


solve is worthy - separating test data from scripts.</p>

<p>What we feel now is best practice is the using of <span class="caps">INI</span> files for data, and a simple library to pull fields from them into scripts. In a spike that we kicked off at my current client (internet bank), we proved that it would all 


work. Dawn C pointed out that we did not need to code a properties file mechanism as there was already an <span class="caps">INI</span> file technique available. She also suggested that teams may prefer <span class="caps">CSV</span> as it is a better repr


esentation for repeating rows of data.  Perhaps the sweet spot is a mixture of both.  Anyway what we are left with is a textual form that is mergable if needs be for a arbitary source control package.</p>

<p><b>Recording Scripts</b></p>

<p>It is perfectly possible to record scripts using the standard tools, then work on them to separate the data/scripts and reuse existing functions. Yes, you may well build libraries of functions to do often repeated things like login.  Teams may choose t


o hand craft all scripts, or refactor a recorded script.</p>

<p><b>Summary</b></p>

<p>We we are rolling out here leverages the following best practices:</p>

<p><ul><br />
 <li>Source under standard source control</li><br />
 <li>Text is better than binary for mergability and search</li><br />
 <li>Separation of data and function</li><br />
 <li>Separation of different tests (modularity)</li><br />
</ul></p>

<p>With these steps, we are close to the developers way of working. If you have a WinRunner installation for all staff (or one of those n-users at a time licenses) your developers can be in a position to join in with the writing of WinRunner tests.  As su


ch, Brian's vision of having developers and testers pairing might be more likely to be realised.  Implicitly, we are also suggesting that TestDirector and Mercury's other enterprise offerings are not the correct path.  That last might get me into some tro


uble, so I'll state that that is my own claim. It is not the opinion of any clients of mine nor my employer ThoughtWorks.</p>]]></description>
     <pubDate>Wed, 28 Apr 2004 08:51:10 +0000</pubDate>
    </item>
    <item>
      <title>Identity Card : Identity Harvesting?</title>
      <link>http://paulhammant.com/blog//000243.html</link>
      <description><![CDATA[<p>Like many others, the <span class="caps">UK</span> government is mulling an identity card system.  I welcome it, with reservation...</p>

<p>If the card will electronically provide multiple identifying characteristics for an individual, then it is possible that there could be at least some market for the characteristics of that individual. An identity harvesting crime similar to <a href="ht


tp://money.msn.co.uk/Bank_Plan/Cards/SpecFeat/TakeTheCredit/CreditCardSkimming/default.asp">skimming</a> could have some some commercial benefit, even if it is impossible to clone the <span class="caps">ID</span> card itself.</p>

<p>The point I am trying to make is that the card should not say &quot;Paul has brown hair, is 6ft 1/2inch, is male, lives in Henry on Toast in the <span class="caps">UK</span>&quot;,  It should say &quot;That is Paul&quot; while at the same time authenti


cating itself using <span class="caps">PKI</span> with the <span class="caps">UK</span> government.  It might suggest, &quot;Paul turn to the left&quot; or &quot;Smile Paul&quot; as it scans you via a provided video stream. Following that interactive sess


ion, it could pass judgement. It should be self contained, rather than delegate to some gate keeping computer, in the same way that a private key should not leave the machine doing the authentication in classic <span class="caps">PKI</span> authentication


.</p>

<p>This, in summary, the <i>very</i> smart card could do all or any of these depending on the gate in question:-</p>

<p>1) Authenticate itself with issuing state, for the sake of trust from the gatekeeping entity [ Airline | Passport control | Traffic Cop] via <span class="caps">PKI.</span><br />
2) Purport to be for a person [ Picture, Name, <span class="caps">ID</span> number, Nationality ]<br />
3) Authenticate person [ on card <span class="caps">CPU</span>/ROM, requires inputs, gives instruction; face recognition, fingerprint recognition, retina recognition, etc ]. The perils of the <a href="http://business.cisco.com/glossary/tree.taf-asset_id=9


2887&amp;word=90017&amp;public_view=true&amp;kbns=2&amp;DefMode=.htm#">replay attack</a> and corrupt gatekeeper acknowledged.</p>

<p>Oh, <span class="caps">PKI</span> in itself is not necessarily enough - the card could be physically tampered with after theft, and before revocation. Photographs have been able to be replaced in all generations of passport.</p>

<p>Prisoners of War are only required to give name rank and serial number, why should free citizens be required to give 20 other characteristics?</p>

<p>No doubt <span class="caps">ID</span> cards will come in the <span class="caps">UK</span> and be fucked up in more ways than just being a different size to Credit Cards.</p>]]></description>
             <pubDate>Thu, 22 Apr 2004 12:00:00 +0000</pubDate>
    </item>
    
  </channel>
</rss>
