<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5116471530866808083</id><updated>2011-12-23T22:01:50.403-08:00</updated><category term='ruby'/><category term='mocks'/><category term='couchdb'/><category term='visualization'/><category term='provenance'/><category term='IoC'/><category term='PWR'/><category term='eventmachine'/><category term='Selenium'/><category term='CLA'/><category term='github'/><category term='thoughtworks'/><category term='parsing'/><category term='mockobjects'/><category term='Java'/><category term='chrome-watir'/><category term='chrome'/><category term='OSS'/><category term='jbehave'/><category term='copyright'/><category term='mocking'/><category term='metrics'/><category term='PicoContainer'/><category term='functional testing'/><category term='ioke'/><category term='OSS agile apachecon thoughtworks apache jboss'/><category term='Google conference'/><category term='swtbot'/><category term='nosql'/><category term='ccnet release'/><category term='programming language'/><category term='watir'/><category term='cc.rb'/><category term='release'/><category term='london'/><category term='bdd'/><category term='stubs'/><category term='em-couchdb'/><category term='qdox'/><category term='web testing'/><title type='text'>ThoughtWorkers on Open Source</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-1172695768338835346</id><published>2011-05-18T08:51:00.000-07:00</published><updated>2011-05-18T09:38:40.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='provenance'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='CLA'/><title type='text'>Extending the Provenance Commits idea</title><content type='html'>Context: Refer my &lt;a href="http://tw-oss.blogspot.com/2008/01/open-source-provenance-idea.html"&gt;2008 posting&lt;/a&gt;, particularly the "Provenance Commits Idea" 2/3 of the way down.&lt;br /&gt;&lt;br /&gt;A person who's not a committer, and who's made a change on their (say) Github fork of a project, with a consequential &lt;a href="http://help.github.com/pull-requests/"&gt;'pull request&lt;/a&gt;' for the originator to consume the change as a contribution, could sign each commit. &lt;br /&gt;&lt;br /&gt;Whether the CLA is as I penned it, or one like Apache's or Google's for accepting back contributions, the contributor could a line detailing the hash of the contribution they have made.  &lt;br /&gt;&lt;br /&gt;It gets merged in too, along with the actual change, and consequentially has a lasting presence in the bottom of a "contributions.txt" file that has the CLA as the first few paragraphs in "we, the undersigned" style.  &lt;br /&gt;&lt;br /&gt;Source control gets to prove that the contribution is correlated with the CLA signing. Such contributors have to keep re-signing &lt;span style="font-style:italic;"&gt;subsequent&lt;/span&gt; contributions to cover for the eventuality that they are one day going to change employers.&lt;br /&gt;&lt;br /&gt;Full blown committers should be exempt from this process of course, but then they are likely to &lt;span style="font-weight:bold;"&gt;not&lt;/span&gt; do business in nom-de-plume style, be be known to the other developers.&lt;br /&gt;&lt;br /&gt;Note also that committers could reject pull requests until the contributor had completed the workflow of adding to the contributions.txt file.&lt;br /&gt;&lt;br /&gt;Maybe Github could add some workflow/automation around this....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;A question from an OSS buddy: &lt;span style="font-style:italic;"&gt;Is that "sign" as in "cryptographically sign" or some other sense?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The hashes of changes are irrefutable an part of git's way of working. The follow-up addition of that hash to the contributions.txt file would be committed by the same user (by convention), and also hashed as a change in the same way.&lt;br /&gt;&lt;br /&gt;Now the person COULD effect both of those without PKI being involved, but they are authenticated as far as Github is concerned, but virtue of other their id/password.  Its as good as cryptographic signing to all intents and purposes.  Provided Github has no XSS issues (etc) where someone can commit in the name of another.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-1172695768338835346?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/1172695768338835346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=1172695768338835346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1172695768338835346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1172695768338835346'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2011/05/extending-provenance-commits-idea.html' title='Extending the Provenance Commits idea'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2605463507613688462</id><published>2010-12-22T08:06:00.000-08:00</published><updated>2010-12-22T08:28:35.929-08:00</updated><title type='text'>Selenium 2.0-beta-1 (WebDriver) released.</title><content type='html'>Of course, the 'beta' label for WebDriver is somewhat late, seeing as many companies have been relying on it for at least three years, but the beta-1 was pushed out yesterday.&lt;br /&gt;&lt;br /&gt;WebDriver started at ThoughtWorks a few years ago. Its lead, Simon Stewart, and his now Google colleagues have spent a lot of time on it since.  The Selenium-1.x team (Jason Huggins, Pat Lightbody, Dan Fabulich, &amp; many more) and new committers and friends have helped production harden WebDriver to the extent where its an admirable replacement for Selenium-RC (1.x).&lt;br /&gt;&lt;br /&gt;There is a little brand confusion as to whether this is Selenium 2.0 or WebDriver that will resolve in time, but it is true however that Selenium 1.x will have no more major releases.  That means no more Selenium-Core  or Selenium-RC (other than bug fix releases).  The &lt;a href="http://en.wikipedia.org/wiki/Reverse_takeover"&gt;reverse takeover&lt;/a&gt; that is WebDriver emulating the old Selenium is good enough for prime-time usage.  Actually it has probably been good enough for some time.&lt;br /&gt;&lt;br /&gt;As a side note, when Jason and I charted the course for 'Driven Selenium' (which became Selenium-RC) we noted that it was an ill-advised idea. We were committing to porting driver code to half a dozen languages, and maintaining a JavaScript hairball that was the in-browser 'core' runner.  We shuddered at the scale of the Continuous Integration build needed to make that.  Simon's fresh start with WebDriver was no less ill-concieved in terms of the hodge-podge of technologies needed to complete it.  The reverse take over nature of the merger back then gave us much relief because we knew that sooner or later the 1.x codeline would be dead and we would toast that overdue demise!&lt;br /&gt;&lt;br /&gt;Good work Simon and all involved!&lt;br /&gt;&lt;br /&gt;Watch &lt;a href="http://seleniumhq.org/download/"&gt;http://seleniumhq.org/download/&lt;/a&gt; for updates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2605463507613688462?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2605463507613688462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2605463507613688462' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2605463507613688462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2605463507613688462'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/12/selenium-20-beta-1-webdriver-released.html' title='Selenium 2.0-beta-1 (WebDriver) released.'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-5363052404285190213</id><published>2010-08-31T13:13:00.000-07:00</published><updated>2010-08-31T13:28:42.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jbehave'/><category scheme='http://www.blogger.com/atom/ns#' term='bdd'/><title type='text'>JBehave 3.0 released</title><content type='html'>The team is happy to announce the release of JBehave 3.0.  This major milestone has been lead by friend of ThoughtWorks, Mauro Talevi (still no blog) and pushes the usability and nomenclature of JBehave quite a bit.&lt;br /&gt;&lt;br /&gt;Read the &lt;a href="http://jbehave.org/2010/08/31/jbehave-3-0-released/"&gt;announcement&lt;/a&gt; and &lt;a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10680&amp;version=16302"&gt;release notes.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Summarizing the release notes a little: 7 bugs, 45 improvements, and 11 new features later, JBehave 3.0 is now happily a Git citizen, with repos mirrored from Codehaus to &lt;a href="http://github.com/jbehave"&gt;Github&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;If thought of as a JUnit plugin (which is an over-simplification) JBehave 3.0 is perfect for "in the box" enterprise development now.  Note also there are now plugins for Guice, Spring and PicoContainer to allow Dependency Injection to play a part in the composition of &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development"&gt;Behavior Driven Development (BDD)&lt;/a&gt; tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-5363052404285190213?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/5363052404285190213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=5363052404285190213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/5363052404285190213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/5363052404285190213'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/08/jbehave-30-released.html' title='JBehave 3.0 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-8719425906626673324</id><published>2010-07-25T21:05:00.000-07:00</published><updated>2010-07-25T21:07:22.884-07:00</updated><title type='text'>Frank: Automated Acceptance Tests for iPhone and iPad</title><content type='html'>&lt;p&gt;Announcing &lt;a href="http://github.com/moredip/Frank"&gt;Frank&lt;/a&gt;, a lightweight UI automation framework for iPhone and iPad applications.&lt;/p&gt;&lt;p&gt;&lt;object id="scPlayer" class="embeddedObject" width="400" height="300" type="application/x-shockwave-flash" data="http://content.screencast.com/users/PeteHodgson/folders/Jing/media/0f35802c-684a-49bd-bb7a-b141e4d2c689/jingswfplayer.swf" &gt;  &lt;param name="movie" value="http://content.screencast.com/users/PeteHodgson/folders/Jing/media/0f35802c-684a-49bd-bb7a-b141e4d2c689/jingswfplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/PeteHodgson/folders/Jing/media/0f35802c-684a-49bd-bb7a-b141e4d2c689/FirstFrame.jpg&amp;containerwidth=400&amp;containerheight=300&amp;content=http://content.screencast.com/users/PeteHodgson/folders/Jing/media/0f35802c-684a-49bd-bb7a-b141e4d2c689/00000015.swf&amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/PeteHodgson/folders/Jing/media/0f35802c-684a-49bd-bb7a-b141e4d2c689/" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;a target="_blank" href="http://sl.thepete.net/frank_ea_demo"&gt;[Click Here to watch the screencast in a more sensible size!]&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Frank sews together several open source tools, notably &lt;a target="_blank" href="http://uispec.googlecode.com/"&gt;UISpec&lt;/a&gt;, &lt;a arget="_blank" href="http://cocoahttpserver.googlecode.com/"&gt;cocoahttpserver&lt;/a&gt;, and &lt;a target="_blank" href="http://cukes.info/"&gt;Cucumber&lt;/a&gt;. The goal is to automate basic UI-level acceptance testing of an iPhone or iPad application, integrated into a Continuous Integration system.&lt;p&gt;&lt;p&gt;You can read more about Frank &lt;a href="http://http://blog.thepete.net/2010/07/frank-automated-acceptance-tests-for.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-8719425906626673324?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/8719425906626673324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=8719425906626673324' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/8719425906626673324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/8719425906626673324'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/07/frank-automated-acceptance-tests-for.html' title='Frank: Automated Acceptance Tests for iPhone and iPad'/><author><name>Pete Hodgson</name><uri>http://www.blogger.com/profile/18168828113119060764</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_rzQrByr0AIg/ScgMvzg39fI/AAAAAAAACwU/EpvdvJcsSGo/s1600-R/092bdd341837502345cd9ceebda740c9%3Fs%3D128%26d%3Didenticon%26r%3Dpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2504788792791373545</id><published>2010-07-20T20:01:00.000-07:00</published><updated>2010-07-20T20:19:26.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Code Complexity Visualization for Ruby</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8ScwVcHk5-E/TEZkOCNv7DI/AAAAAAAAEVw/gY8lQ67-WvU/s1600/wtfm.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 377px;" src="http://4.bp.blogspot.com/_8ScwVcHk5-E/TEZkOCNv7DI/AAAAAAAAEVw/gY8lQ67-WvU/s400/wtfm.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5496190587527752754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;small&gt;Image from http://www.osnews.com/story/19266/WTFs_m&lt;/small&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;WTF implies lack of clarity. Clear code is easier to understand, easier to maintain and easier to extend.&lt;br /&gt;&lt;br /&gt;Announcing &lt;a href="http://github.com/ThoughtWorksStudios/saikuro_treemap"&gt;saikuro_treemap&lt;/a&gt; -- an easy to setup tool to generate complexity treemaps of ruby code.&lt;br /&gt;&lt;br /&gt;See a &lt;a href="http://thoughtworksstudios.github.com/rake.ccn.html"&gt;demo&lt;/a&gt; for yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2504788792791373545?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2504788792791373545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2504788792791373545' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2504788792791373545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2504788792791373545'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/07/code-complexity-visualization-for-ruby.html' title='Code Complexity Visualization for Ruby'/><author><name>KetanPadegaonkar</name><uri>http://www.blogger.com/profile/00708547712729097047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_8ScwVcHk5-E/R1GEUo3iBaI/AAAAAAAABW4/aDhkOWalsj4/S220/ketan-bike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8ScwVcHk5-E/TEZkOCNv7DI/AAAAAAAAEVw/gY8lQ67-WvU/s72-c/wtfm.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-7887852764332188282</id><published>2010-06-03T05:53:00.000-07:00</published><updated>2010-06-03T06:05:05.749-07:00</updated><title type='text'>Mockpico beta</title><content type='html'>Mockpico is an interesting tool.  It leverages Mockito and PicoContainer to allow easy instantiation of Spring Controllers for unit testing.  Often controllers have many dependencies injected into it via constructors, setters, fields. Sometimes these would be annotated with @Autowired, sometimes not (old fashioned XML composition).  When in unit tests, you don't really want to have to specify every injectee as the particular request mapping you want to test might not use them all.  With Constructor Injection you kinda have to specify them all of course, though 'null' might be an OK thing to specify.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, Mockpico makes it easier :- &lt;a href="http://github.com/paul-hammant/mockpico"&gt;http://github.com/paul-hammant/mockpico&lt;/a&gt; (scroll down for colorful diagram)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is pushed out as beta-1d as you can see here &lt;a href="http://oss.sonatype.org/index.html#nexus-search;quick~mockpico"&gt;http://oss.sonatype.org/index.html#nexus-search;quick~mockpico&lt;/a&gt;. A Maven/gpg learning curve conspired to make this work on its fourth attempt (a thru d).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-7887852764332188282?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/7887852764332188282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=7887852764332188282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7887852764332188282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7887852764332188282'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/06/mockpico-beta.html' title='Mockpico beta'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-7180983357230126395</id><published>2010-05-10T12:12:00.000-07:00</published><updated>2010-05-10T12:36:08.651-07:00</updated><title type='text'>ProxyToys 1.0 released</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Five or so years in development prior to the 1.0 moment, &lt;a href="http://proxytoys.codehaus.org"&gt;ProxyToys&lt;/a&gt; has finally shipped.  Well it was perfectly usable in its 0.21 incarnation, but 1.0 makes ProxyToys fully JDK 5 compatible, and &lt;a href="http://proxytoys.codehaus.org/changes.html"&gt;changes&lt;/a&gt; much more too:&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: helvetica, arial, sans-serif; font-size: 12px; "&gt;&lt;ul style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-bottom: 12px; margin-left: 20px; "&gt;&lt;li style="margin-bottom: 6px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Use JDK 5 language features.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 6px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Added builder classes for all toys (refer Martin Fowler's &lt;/span&gt;&lt;a href="http://martinfowler.com/bliki/FluentInterface.html" style="color: rgb(43, 165, 39); text-decoration: underline; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;FluentInterface&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;).&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 6px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;New FutureToy to run methods asynchronously&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 6px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;New PrivilegeToy to run methods as privileged actions.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;In case you did not know, ProxyToys takes Java Classes/Interfaces and makes specialized implementations like NullObject, Pooled, Multicaster, Decorated.  The project was first started by (now ex) ThoughtWorker Dan North, and pushed forward by many others since then.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-7180983357230126395?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/7180983357230126395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=7180983357230126395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7180983357230126395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7180983357230126395'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/05/proxytoys-10-released.html' title='ProxyToys 1.0 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-7945782476521350632</id><published>2010-02-21T13:29:00.000-08:00</published><updated>2010-02-21T13:35:19.458-08:00</updated><title type='text'>PicoContainer 2.10 released</title><content type='html'>Perhaps the last version of PicoContainer 2.x before focussing on 3.x, 2.10 was released earlier today.  Changes:&lt;br /&gt;&lt;br /&gt;1. String converters can now be overridden, and added to.  &lt;br /&gt;2. There's a new type of method injection that matches on method name.  &lt;br /&gt;3. The first piece of JSR 330 compatibility has been ushered it - the @Named annotation is recognized.&lt;br /&gt;&lt;br /&gt;Aside from those feature changes, bugs have been fixed in FactoryInjectors and Provided lifecycles.&lt;br /&gt;&lt;br /&gt;- Paul&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-7945782476521350632?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/7945782476521350632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=7945782476521350632' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7945782476521350632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7945782476521350632'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/02/picocontainer-210-released.html' title='PicoContainer 2.10 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-8244545074245780549</id><published>2010-01-20T10:03:00.000-08:00</published><updated>2010-01-20T10:55:33.707-08:00</updated><title type='text'>JBehave 2.4 released</title><content type='html'>JBehave continues to push forwards.  This time with a 2.4 release, we have better output from scenario runs, new statistics gathering and reporting, and steps classes themselves can now optionally be POJOs (there had to extend a base class before).   It is mostly non-ThoughtWorkers and ex-ThoughtWorkers steering JBehave now, but we still remain involved with each release contributing things that are important to us.  See the &lt;a href="http://jbehave.org/2010/01/20/jbehave-2-4-released/"&gt;release notes&lt;/a&gt;. Great work gang!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-8244545074245780549?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/8244545074245780549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=8244545074245780549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/8244545074245780549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/8244545074245780549'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/01/jbehave-24-released.html' title='JBehave 2.4 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-1733938294457470448</id><published>2010-01-02T10:25:00.001-08:00</published><updated>2010-01-02T10:41:29.820-08:00</updated><title type='text'>QDox and Paranamer releases</title><content type='html'>&lt;a href="http://qdox.codehaus.org/"&gt;QDox's&lt;/a&gt; backlog of issues has been reduced by a decent percentage again by Robert Scholte and it has been released as version 1.10.1.  Joe Walnes (who started the project) suggests that Robert becomes lead going forward.  Codehaus encourages this sort of thing, and Robert has been defacto lead for much of last year.  See the &lt;a href="http://jira.codehaus.org/browse/QDOX#selectedTab=com.atlassian.jira.plugin.system.project%3Aroadmap-panel"&gt;road-map&lt;/a&gt; for more information on where QDox is heading.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://paranamer.codehaus.org/"&gt;Paranamer&lt;/a&gt; 2.2 has been released too.  It often follows QDox as one of the sub-modules uses it.  This time though there's a new functionality too.  There is a new implementation called AnnotationParanamer that can leverage the @Named annotation of JSR 330 for parameter name data.  By nesting Paranamer implementations, you can allow @Named to override the natural parameter name of the method or constructor selectively.  Paranamer has also dropped JDK 1.4 compatibility.  Strictly speaking it could have remained mixed-mode 1.4 and 5.0 compatible, but by now only laggards are stuck on 1.4, and the old versions of Paranamer are still available.  It is a very niche project, but does push the Java bar a little. Enjoy!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-1733938294457470448?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/1733938294457470448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=1733938294457470448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1733938294457470448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1733938294457470448'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2010/01/qdox-and-paranamer-releases.html' title='QDox and Paranamer releases'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2381334865496620196</id><published>2009-12-31T03:10:00.000-08:00</published><updated>2009-12-31T05:58:38.759-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='eventmachine'/><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><category scheme='http://www.blogger.com/atom/ns#' term='nosql'/><category scheme='http://www.blogger.com/atom/ns#' term='em-couchdb'/><title type='text'>Announcing EventMachine CouchDB (em-couchdb)</title><content type='html'>I thought it will be a good idea to end the year with a bang.. So here is the announcement for an awesome client for CouchDB based on EventMachine.&lt;br /&gt;&lt;br /&gt;People who follow me on twitter (&lt;a href="http://twitter.com/sai_venkat"&gt;@sai_venkat&lt;/a&gt;) know that I am crazy about things like EventMachine, node.js, eventlet and NoSql databases. This is one of my attempts to dive into the NoSql world. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was looking for clients for CouchDB in Ruby and found most to be using Net/Http and blocking in nature. So I began my quest of writing an asynchronous non blocking awesome EventMachine based CouchDB client inspired by EventMachine::Redis client. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Here is a sample code to enjoy... It creates a database, saves a document inside it, reads the doc, deletes it and then deletes the database.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;rubygems&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;eventmachine&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;../lib/em-couchdb&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="comment"&gt;# Need to write test for updating doc...&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;# But before that write example test framework :)&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;# Also need to implement get all docs in db&lt;/span&gt;&lt;br /&gt;&lt;span class="constant"&gt;EventMachine&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;run&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;couch&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;EventMachine&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Protocols&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;CouchDB&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;connect&lt;/span&gt; &lt;span class="symbol"&gt;:host&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;localhost&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:port&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;5986&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;get_all_dbs&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;dbs&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dbs&lt;/span&gt;&lt;span class="punct"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;create_db&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;test-project&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;get_all_dbs&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;dbs&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;dbs&lt;/span&gt;&lt;span class="punct"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;get_db&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;test-project&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;db&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;save&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;db_name&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;],&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:name&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;couchd&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;description&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;awesome&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;})&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;doc&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;br /&gt;      &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;get&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;db_name&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;],&lt;/span&gt; &lt;span class="ident"&gt;doc&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;id&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;])&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;doc&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;        &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;doc&lt;/span&gt;&lt;br /&gt;        &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;delete&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;db_name&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;],&lt;/span&gt; &lt;span class="ident"&gt;doc&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;&lt;br /&gt;          &lt;span class="ident"&gt;couch&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;delete_db&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;db&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;db_name&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;]){&lt;/span&gt;&lt;br /&gt;            &lt;span class="constant"&gt;EventMachine&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;stop&lt;/span&gt;&lt;br /&gt;          &lt;span class="punct"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;      &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The current version supports database manipulation like creation and deletion and document manipulation. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looks cool but still there are things to improve (a lot of things actually). One to start off with is the Continuation Passing Style. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the current response to em-couchdb from one of the committers of CouchDb is ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', sans-serif; font-size: 14px; color: rgb(60, 57, 64); line-height: 16px; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;em-couchdb looks right-on. Streaming JSON parsing would let large views and docs be processed without memory bloat.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Georgia, serif; line-height: normal; font-size: 16px; "&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please feel free to fork and contribute and happy hacking :).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The code is available at http://github.com/saivenkat/em-couchdb&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2381334865496620196?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2381334865496620196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2381334865496620196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2381334865496620196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2381334865496620196'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/12/announcing-eventmachine-couchdb-em.html' title='Announcing EventMachine CouchDB (em-couchdb)'/><author><name>Sai Venkatakrishnan</name><uri>http://www.blogger.com/profile/14442693638745288134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://1.bp.blogspot.com/_fSsd65KlPiM/SYAZKHZO_3I/AAAAAAAAALU/Wspf_SefPkM/S220/Sun-Wukong-Monkey-King.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2098864225374196135</id><published>2009-09-30T19:43:00.000-07:00</published><updated>2009-09-30T19:54:15.774-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome-watir'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='watir'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><title type='text'>ChromeWatir and FireDriver updates</title><content type='html'>Latest News - ChromeWatir is in github now.&lt;br /&gt;&lt;br /&gt;I have finally managed to move ChromeWatir to &lt;a href="http://github.com/saivenkat/chrome_watir"&gt;Github&lt;/a&gt; at &lt;a href="http://github.com/saivenkat/chrome_watir"&gt;http://github.com/saivenkat/chrome_watir&lt;/a&gt;. I was planning to move to Github as the first Watir project and now I am  the last. Anyhow I am now working towards using Chrome's test framework to make the integration with Chrome more stable.&lt;br /&gt;&lt;br /&gt;The other project I have been working on is FireDriver (FireWatir + WebDriver). If anyone is wondering why I am doing this please read my &lt;a href="http://developer-in-test.blogspot.com/2009/04/firedriver-firewatir-webdriver.html"&gt;blog post&lt;/a&gt; on this. In short, this is an attempt to replace the legacy Jssh code with something stable and I am using WebDriver's XPCom based core to do it. The code is at &lt;a href="http://github.com/saivenkat/firedriver"&gt;http://github.com/saivenkat/firedriver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If anyone is interested in contributing, please feel free to fork :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2098864225374196135?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2098864225374196135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2098864225374196135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2098864225374196135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2098864225374196135'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/09/chromewatir-and-firedriver-updates.html' title='ChromeWatir and FireDriver updates'/><author><name>Sai Venkatakrishnan</name><uri>http://www.blogger.com/profile/14442693638745288134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://1.bp.blogspot.com/_fSsd65KlPiM/SYAZKHZO_3I/AAAAAAAAALU/Wspf_SefPkM/S220/Sun-Wukong-Monkey-King.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-3674275790069004702</id><published>2009-09-06T16:48:00.000-07:00</published><updated>2009-09-06T17:07:56.650-07:00</updated><title type='text'>Paranamer 2.1 released</title><content type='html'>Paranamer gives you a String array of parameter names for a Java method:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Method doFoo = Foo.class.getMethod("doFoo", &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new', serif;"&gt;  String.class, String.class);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  String[] paramNames &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  = paranamer.lookupParameterNames(doFoo);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is very embeddable and can either retrieve this parameter information from a class' debug tables, or from an added static field (added by QDox and ASM).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are writing a Java IDE, as web-framework, a SOAP transport, a DI Framework (etc), you are going to want to depend on Paranamer (and maybe consume the 27K or less of bytecode into your jar using &lt;a href="http://code.google.com/p/jarjar/"&gt;JarJar&lt;/a&gt; or &lt;a href="http://maven.apache.org/plugins/maven-shade-plugin/"&gt;Maven's Shade&lt;/a&gt;). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This release updated QDox and ASM dependencies and added a NullParanamer implementation (&lt;a href="http://en.wikipedia.org/wiki/Null_Object_pattern"&gt;NullObject pattern&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See the &lt;a href="http://paranamer.codehaus.org/"&gt;project site&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-3674275790069004702?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/3674275790069004702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=3674275790069004702' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3674275790069004702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3674275790069004702'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/09/paranamer-21-released.html' title='Paranamer 2.1 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-7666011311255530523</id><published>2009-09-05T14:33:00.000-07:00</published><updated>2009-09-05T14:57:21.173-07:00</updated><title type='text'>QDox 1.10 released</title><content type='html'>&lt;div&gt;QDox parses Java source (much like Javac does) but spits out an object model rather than bytecode and does not process method bodies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;QDox remains widely used, and a very neat demonstration of highly decomposed Java project.  It is beautifully tested with small snippets of Java code, making tests very readable. &lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since Robert Scholte came on board as a committer, QDox has seen it's outstanding feature requests and bugs reduced with each release.  The latest is 1.10 leaving only a couple of outstanding minor bugs and a few requests and tasks for the team. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the next release we may clear both remaining bugs, and leave only a wish-list for a 2.0 version.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out the &lt;a href="http://qdox.codehaus.org/"&gt;project site&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-7666011311255530523?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/7666011311255530523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=7666011311255530523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7666011311255530523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7666011311255530523'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/09/qdox-110-released.html' title='QDox 1.10 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-1242555952576072607</id><published>2009-06-30T13:15:00.000-07:00</published><updated>2009-06-30T13:25:43.192-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='cc.rb'/><title type='text'>CruiseControl.rb 1.4.0 released!</title><content type='html'>We are happy to announce the release of &lt;a href="http://cruisecontrolrb.thoughtworks.com"&gt;CruiseControl.rb&lt;/a&gt; 1.4.0. This release adds support for three distributed version control systems - Git, Mercurial and Bazaar - in addition to Subversion.&lt;br /&gt;&lt;br /&gt;CC.rb remains easy to install, pleasant to use and simple to hack. Since the source has now moved to a &lt;a href="http://github.com/thoughtworks/cruisecontrol.rb"&gt;git repository&lt;/a&gt;, it is easier than ever to fork and contribute. We're looking forward to your pull requests!&lt;br /&gt;&lt;br /&gt;Downloads are available from both &lt;a href="http://rubyforge.org/frs/?group_id=2918"&gt;Rubyforge&lt;/a&gt; and &lt;a href="http://github.com/thoughtworks/cruisecontrol.rb/tree/v1.4.0"&gt;Github&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-1242555952576072607?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/1242555952576072607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=1242555952576072607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1242555952576072607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1242555952576072607'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/06/cruisecontrolrb-140-released.html' title='CruiseControl.rb 1.4.0 released!'/><author><name>Sidu</name><uri>http://www.blogger.com/profile/11938300811286150164</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/74/186326016_765e6e2222_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-7685096896656065430</id><published>2009-05-29T06:22:00.000-07:00</published><updated>2009-05-29T06:23:54.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='swtbot'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Announcing a new release of SWTBot</title><content type='html'>You can download the latest and greatest from the &lt;a href="http://www.eclipse.org/swtbot/downloads.php"&gt;SWTBot download page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A listing of some of the new features available:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=263036"&gt;Bug 263036&lt;/a&gt; - SWTBot finally has an icon that was missing since two years!&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=269919"&gt;Bug 269919&lt;/a&gt; - Added support for toggle buttons&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=271246"&gt;Bug 271246&lt;/a&gt; - Better support for handling editors. This should serve as a good start towards providing support for multipage, forms based editors&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=271132"&gt;Bug 271132&lt;/a&gt; - Using Display#post() to support sending native click events instead of fake events. This is still work in progress and not all widgets support native events yet.&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=273624"&gt;Bug 273624&lt;/a&gt; - Use native keyboard events for typing. SWTBot currently defaults to using AWT robot. SWT's Dispay#post() is available as well -- it is however buggy across platforms and swt versions. Since SWTBot uses native keyboard events, it needs to understand various &lt;a href="http://wiki.eclipse.org/SWTBot/Keyboard_Layouts"&gt;Keyboard Layouts&lt;/a&gt;.&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=267189"&gt;Bug 267189&lt;/a&gt; - Support capturing screenshots of widgets.&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=277093"&gt;Bug 277093&lt;/a&gt; - Support for Link widgets.&lt;br /&gt;&lt;br /&gt;There are also a lot of minor bugs that were fixed in this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-7685096896656065430?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/7685096896656065430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=7685096896656065430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7685096896656065430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7685096896656065430'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/05/announcing-new-release-of-swtbot.html' title='Announcing a new release of SWTBot'/><author><name>KetanPadegaonkar</name><uri>http://www.blogger.com/profile/00708547712729097047</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_8ScwVcHk5-E/R1GEUo3iBaI/AAAAAAAABW4/aDhkOWalsj4/S220/ketan-bike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-5638718254916579582</id><published>2009-05-27T19:16:00.001-07:00</published><updated>2009-05-27T19:33:55.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Selenium'/><title type='text'>Selenium 1.0 released!!</title><content type='html'>Well, something that ThoughtWorks started about 5 years ago is now reaching the formal &amp;amp; final 1.0 state.  It is of course already an open source success despite being not 1.0 yet.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have had some 20 ThoughtWorks staff work on it over the years, and as many non-ThoughtWorks folks, but principal amongst developers is Jason Huggins who started "Selenium Core" in 2004 when he was at ThoughtWorks.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To herald this wonderful moment, we also have a new documentation set, that is a 10x improvement over the previous set, and has been almost entirely contributed by the user community.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Going forward the Selenium team thinks it will get busy with 1.0.x and 1.x releases, not withstanding the effort already in place for Selenium 2.0 (nee WebDriver) also by a former ThoughtWorker, Simon Stewart. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a Meetup &lt;a href="http://www.meetup.com/seleniumsanfrancisco/calendar/10290535/"&gt; event in play right now&lt;/a&gt;. Watch out for Twitter tags #sfse and more formal event snapshots and write-ups. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-5638718254916579582?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/5638718254916579582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=5638718254916579582' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/5638718254916579582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/5638718254916579582'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/05/selenium-10-released.html' title='Selenium 1.0 released!!'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-4982346181464681312</id><published>2009-03-14T05:57:00.001-07:00</published><updated>2009-03-14T05:58:33.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ccnet release'/><title type='text'>CruiseControl.NET 1.4.3 Released</title><content type='html'>CruiseControl.Net 1.4.3 is packaged up and waiting to be downloaded from SourceForge:&lt;br /&gt;http://sourceforge.net/project/showfiles.php?group_id=71179&amp;amp;package_id=83198&amp;amp;release_id=668117&lt;br /&gt;&lt;br /&gt;There have been bucket loads of improvements. The highlights:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;New ccnet.config validation program&lt;/li&gt;&lt;li&gt;Source Control errors during GetModifications will now fail the build&lt;/li&gt;&lt;li&gt;Email Publisher has been improved again&lt;/li&gt;&lt;li&gt;Breakers of a build are listed on the Dashboard and in CCTray&lt;/li&gt;&lt;li&gt;Custom Icons now work in CCTray&lt;/li&gt;&lt;li&gt;Dashboard Improvements&lt;/li&gt;&lt;li&gt;Console/Service Improvements&lt;/li&gt;&lt;li&gt;Svn and Cvs updates&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;More details are available from the release notes:&lt;br /&gt;http://confluence.public.thoughtworks.org/display/CCNET/CCNet+1.4.3+Release+Notes&lt;br /&gt;&lt;br /&gt;I want to once again thank your for all your support. It's your questions, bug reports, suggestions and of course patches that make this all possible. The next release, 1.5, is going to have some big features that many people have asked for over the years and the team is very excited about bringing it to you.&lt;br /&gt;&lt;br /&gt;Cheers!&lt;br /&gt;Dave Cameron&lt;br /&gt;CruiseControl.NET - http://ccnet.thoughtworks.com&lt;br /&gt;Twitter: @davcamer&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-4982346181464681312?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/4982346181464681312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=4982346181464681312' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/4982346181464681312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/4982346181464681312'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/03/cruisecontrolnet-143-released.html' title='CruiseControl.NET 1.4.3 Released'/><author><name>Dave Cameron</name><uri>http://www.blogger.com/profile/17376052931741222150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-8005816145094423588</id><published>2009-02-19T23:16:00.000-08:00</published><updated>2009-02-19T23:32:27.072-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome-watir'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='watir'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><title type='text'>ChromeWatir 1.5.0 Released</title><content type='html'>I am happy to announce that we have released a new version of ChromeWatir. You can get the gem or source from the &lt;a href="http://code.google.com/p/chrome-watir"&gt;project page&lt;/a&gt;. We have been working on it for quite sometime and it is me whom you should blame for doing a long spike on Chrome AutomationProxy which I did not complete till now :).&lt;br /&gt;&lt;br /&gt;What is new in this release&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for table and file field elements&lt;/li&gt;&lt;li&gt;Support for Element Collections like links, images, etc.&lt;/li&gt;&lt;li&gt;Refactoring and fixing defects in launcher code.&lt;/li&gt;&lt;/ul&gt;ChromeWatir is still in alpha but we have got some really good feedback and support make it better. Thanks for everyone who helped and encouraged us.&lt;br /&gt;&lt;br /&gt;Now that we are done with the release, I think it is time to start working on C++ code to use AutomationProxy for the next release now ;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-8005816145094423588?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/8005816145094423588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=8005816145094423588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/8005816145094423588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/8005816145094423588'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/02/chromewatir-150-released.html' title='ChromeWatir 1.5.0 Released'/><author><name>Sai Venkatakrishnan</name><uri>http://www.blogger.com/profile/14442693638745288134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://1.bp.blogspot.com/_fSsd65KlPiM/SYAZKHZO_3I/AAAAAAAAALU/Wspf_SefPkM/S220/Sun-Wukong-Monkey-King.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2141630832552471663</id><published>2009-01-31T10:36:00.000-08:00</published><updated>2009-01-31T10:41:21.715-08:00</updated><title type='text'>QDox 1.8 released</title><content type='html'>QDox with 1.8 released moments ago, is much closer to being a perfect Java 5 citizen now.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;New committer Robert Scholte was very busy with a backlog of patches, and fix-ups of his own, and things are looking good for the remaining 12 outstanding issues. Resolving even the very-niche issues and feature requests for the next release is a distinct possibility.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10103&amp;amp;fixfor=14826"&gt;Here&lt;/a&gt; are the changes since last release.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2141630832552471663?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2141630832552471663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2141630832552471663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2141630832552471663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2141630832552471663'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/01/qdox-18-released.html' title='QDox 1.8 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2279363107661638446</id><published>2009-01-21T16:54:00.000-08:00</published><updated>2009-01-21T17:03:27.802-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IoC'/><category scheme='http://www.blogger.com/atom/ns#' term='PicoContainer'/><category scheme='http://www.blogger.com/atom/ns#' term='PWR'/><title type='text'>PicoContainer and PicoContainer-Web releases</title><content type='html'>PicoContainer has been &lt;a href="http://picocontainer.org/news.html"&gt;upgraded to 2.7&lt;/a&gt;, and PicoContainer-Web has been &lt;a href="http://picocontainer.org/web/news.html"&gt;upgraded to 2.2&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The newest piece is 'PicoContainer-Web Remoting' (PWR).  Ideas that were pioneered in Waffle some years ago have been reborn as a separate framework for directly calling into scoped components over HTTP.  Objects essentially get URLs, including their method names.  The results of method calls are turned into JSON transparently. Parameters to methods are matched by parameter name.  Read more about it &lt;a href="http://picocontainer.org/web/remoting.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can use it on its own, or with Struts 1/2, or WebWork 1/2&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are many similarities to recent editions of Spring MVC, and Direct Web Remoting (DWR) of course.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2279363107661638446?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2279363107661638446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2279363107661638446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2279363107661638446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2279363107661638446'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/01/picocontainer-and-picocontainer-web.html' title='PicoContainer and PicoContainer-Web releases'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2762497729421070980</id><published>2009-01-21T05:26:00.000-08:00</published><updated>2009-01-21T05:28:14.131-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome-watir'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='watir'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><title type='text'>ChromeWatir new release is available!!!</title><content type='html'>It just feels like yesterday... And now we have a new release of ChromeWatir-1.4.0.&lt;br /&gt;&lt;br /&gt;Whats new in this release?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for element containers like frames, SPAN, div.&lt;/li&gt;&lt;li&gt;Refactored the locators and made them better :)&lt;/li&gt;&lt;li&gt;More test coverage and improved doc. (Check out the wiki)&lt;/li&gt;&lt;/ul&gt;This release has been quicker than we expected but a good one. Get the downloads from the &lt;a href="http://code.google.com/p/chrome-watir"&gt;project page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Future releases... They are quiet far ;). We have lots of things planned. Using the Automation Framework of Chrome is one of them. Compatibility with Watir API, support for table and element collections are also in the list. If you have anything in mind, add it to the wish list we will be putting up in the wiki soon.&lt;br /&gt;&lt;br /&gt;I also added the ChromeWatir page in the Watir wiki. Check out the page &lt;a href="http://wiki.openqa.org/display/WTR/ChromeWatir"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download the gem, install, use and let us know the feedback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2762497729421070980?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2762497729421070980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2762497729421070980' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2762497729421070980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2762497729421070980'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/01/chromewatir-new-release-is-available.html' title='ChromeWatir new release is available!!!'/><author><name>Sai Venkatakrishnan</name><uri>http://www.blogger.com/profile/14442693638745288134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://1.bp.blogspot.com/_fSsd65KlPiM/SYAZKHZO_3I/AAAAAAAAALU/Wspf_SefPkM/S220/Sun-Wukong-Monkey-King.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-7430093441126151429</id><published>2009-01-13T11:19:00.000-08:00</published><updated>2009-01-13T11:25:50.746-08:00</updated><title type='text'>Selenium 1.0-beta-2 released</title><content type='html'>The Selenium team has released 1.0-beta-2 of Selenium Core and Selenium-Remote Control yesterday.  ThoughtWorks is of course proud to have started Selenium and to see many more committers helping us on the project these days.  It could be that 1.0 &lt;span class="Apple-style-span" style="font-style: italic;"&gt;final&lt;/span&gt; is released soon, then we can concentrate on Selenium 2.0 (yay!). &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Read the &lt;a href="http://seleniumhq.org/about/news.jsp"&gt;news page&lt;/a&gt; at SeleniumHQ&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-7430093441126151429?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/7430093441126151429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=7430093441126151429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7430093441126151429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/7430093441126151429'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/01/selenium-10-beta-2-released.html' title='Selenium 1.0-beta-2 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2955043613987668107</id><published>2009-01-12T01:46:00.000-08:00</published><updated>2009-01-12T02:29:48.475-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome-watir'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='watir'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><title type='text'>Announcing ChromeWatir release 1.0.0</title><content type='html'>I am happy to announce that the first version of ChromeWatir has been released today. ChromeWatir gives a way to test web applications in Google Chrome browser. It follows a &lt;a href="http://wtr.rubyforge.org/"&gt;Watir&lt;/a&gt; like API though there are a few differences we are trying to iron out. Please visit the ChromeWatir &lt;a href="http://code.google.com/p/chrome-watir"&gt;Google code website&lt;/a&gt; for more details &lt;br /&gt;&lt;br /&gt;We are in the process of making it better by stabilizing it as well adding more functionality like containers and elements support. Details about the next release will be put into the wiki once finalized.&lt;br /&gt;&lt;br /&gt;The first release is available as gem in the &lt;a href="http://code.google.com/p/chrome-watir/downloads/list"&gt;downloads&lt;/a&gt; page.&lt;br /&gt;As well the source can be checked out through SVN. Please see the &lt;a href="http://code.google.com/p/chrome-watir/source/checkout"&gt;source&lt;/a&gt; tab of the project for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2955043613987668107?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2955043613987668107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2955043613987668107' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2955043613987668107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2955043613987668107'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2009/01/announcing-chromewatir-release-100.html' title='Announcing ChromeWatir release 1.0.0'/><author><name>Sai Venkatakrishnan</name><uri>http://www.blogger.com/profile/14442693638745288134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://1.bp.blogspot.com/_fSsd65KlPiM/SYAZKHZO_3I/AAAAAAAAALU/Wspf_SefPkM/S220/Sun-Wukong-Monkey-King.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2610044843991079252</id><published>2008-12-25T11:26:00.000-08:00</published><updated>2008-12-25T11:28:20.142-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='ioke'/><title type='text'>Ioke 0 released</title><content type='html'>I am very happy to announce the first release of Ioke! &lt;p&gt;Ioke is a dynamic language targeted at the Java Virtual Machine. It’s been designed from scratch to be a highly flexible general purpose language. It is a prototype-based programming language that is inspired by Io, Smalltalk, Lisp and Ruby.&lt;/p&gt; &lt;p&gt;Homepage: &lt;a href="http://ioke.org"&gt;http://ioke.org&lt;/a&gt;&lt;br /&gt;Download: &lt;a href="http://ioke.org/download.html"&gt;http://ioke.org/download.html&lt;/a&gt;&lt;br /&gt;Programming guide: &lt;a href="http://ioke.org/guide.html"&gt;http://ioke.org/guide.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Ioke 0 is the first release of Ioke, and as such is not production ready. I would appreciate if people tried it out and reported bugs, thoughts and ideas.&lt;/p&gt; &lt;p&gt;Features:&lt;br /&gt;- Strong, dynamic typing&lt;br /&gt;- Prototype based object orientation&lt;br /&gt;- Homoiconic language&lt;br /&gt;- Simple syntax&lt;br /&gt;- Powerful macro facilities&lt;br /&gt;- Condition system&lt;br /&gt;- Developed using TDD&lt;br /&gt;- Documentation system that combines documentation with specs&lt;br /&gt;- Wedded to the JVM&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2610044843991079252?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2610044843991079252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2610044843991079252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2610044843991079252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2610044843991079252'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/12/ioke-0-released.html' title='Ioke 0 released'/><author><name>Ola Bini</name><uri>http://www.blogger.com/profile/15793488672952593953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_1lBEb_G23HM/SLBT8jx5SGI/AAAAAAAAACY/185ayarRwqk/s1600-R/onormal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-3039310476225619754</id><published>2008-12-23T07:39:00.000-08:00</published><updated>2008-12-23T07:53:47.384-08:00</updated><title type='text'>Paranamer 1.1.6 released</title><content type='html'>Many think that Java needs parameter names for methods to be accessible. The Java 6 team ran out of time to deliver the functionality, and the Java 7 team does not appear to have it on their radar (sadly).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Luckily &lt;a href="http://paranamer.codehaus.org/"&gt;Paranamer&lt;/a&gt; delivers parameter name access for Java classes for versions of Java 1.4 onwards.  It has two modes of operation : generating parameter names from source, and extracting parameter names from a class file's debug table (if present).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is an ideal library to use for binding URLs to objects, command line arguments to components, and other configuration saving designs.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Version of Paranamer 1.1.6 was released yesterday and fixed some bugs with both the source generating and bytecode extracting modes of Paranamer.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-3039310476225619754?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/3039310476225619754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=3039310476225619754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3039310476225619754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3039310476225619754'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/12/paranamer-116-released.html' title='Paranamer 1.1.6 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2490619365167575897</id><published>2008-12-23T07:28:00.000-08:00</published><updated>2008-12-23T07:59:56.911-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='qdox'/><title type='text'>QDox 1.7 released</title><content type='html'>&lt;a href="http://qdox.codehaus.org/"&gt;QDox&lt;/a&gt; is lagging a little in respect of Java 5 compatibility.  Yesterday saw the release of 1.7, and before that it lagged quite a lot.  See the &lt;a href="http://jira.codehaus.org/browse/QDOX?report=com.atlassian.jira.plugin.system.project:changelog-panel"&gt;changelog&lt;/a&gt; for details of the fixes and improved annotation support.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You would use QDox to parse Java source and make an object model.  It is pretty neat, but perhaps will be sidelined by Sun-sponsored equivalents that tap into the javac tool-chain. For now though this pioneering technology still serves a niche, and will push forward with releases in years to come.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If anyone wants to see an elegant code-base, that is was perfectly test-driven-designed and also see a simple use of BYacc/J &amp;amp; JFlex, &lt;a href="http://xircles.codehaus.org/projects/qdox/repo"&gt;this Joe Walnes project&lt;/a&gt; is one to look at.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2490619365167575897?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2490619365167575897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2490619365167575897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2490619365167575897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2490619365167575897'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/12/qdox-17-released.html' title='QDox 1.7 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-3672454765727983728</id><published>2008-12-16T03:43:00.000-08:00</published><updated>2008-12-16T03:48:36.826-08:00</updated><title type='text'>CruiseControl.NET 1.4.2 Released</title><content type='html'>CruiseControl.Net 1.4.2 released&lt;br /&gt;&lt;br /&gt;The full &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/CCNet+1.4.2+Release+Notes"&gt;release notes&lt;/a&gt; are on the CruiseControl.Net wiki.&lt;br /&gt;&lt;br /&gt;1.4.2 was a bug fix release to correct problems introduced in 1.4.1. The 1.4.1 release had over &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/CCNet+1.4.1+Release+Notes"&gt;a hundred fixes and enhancements&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Work continues, with the introduction of user-based permissions around forcing and aborting builds expected for the next release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-3672454765727983728?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/3672454765727983728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=3672454765727983728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3672454765727983728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3672454765727983728'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/12/cruisecontrolnet-142-released.html' title='CruiseControl.NET 1.4.2 Released'/><author><name>Dave Cameron</name><uri>http://www.blogger.com/profile/17376052931741222150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-5406556798550272351</id><published>2008-10-16T13:40:00.000-07:00</published><updated>2008-10-16T13:48:50.729-07:00</updated><title type='text'>PicoContainer 2.6 + PicoContainer-Web 2.1 released</title><content type='html'>&lt;span style="font-weight: bold;"&gt;PicoContainer 2.6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picocontainer.org/news.html"&gt;From the relevant news page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;New (since 2.5.1):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CompositeLifecycleStrategy supports a mix of LifecycleStrategies in one container tree &lt;/li&gt;&lt;li&gt;Method Injection changed to also allow a specific reflection method to be implicated &lt;/li&gt;&lt;li&gt;Reinjection added to allow components to be injected into a second time (reflection method injection only)&lt;/li&gt;&lt;/ul&gt;Changes (versus 2.5.1):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Permissions fix for AdaptingInjection&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;PicoContainer Web 2.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picocontainer.org/web/news.html"&gt;From the relevant news page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;New (since 2.0.1):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Above and beyond the capability of the web-technology in question (Struts/Webwork etc), actions can now require one or more of HttpServletRequest, HttpServletResponse and HttpSession to be injected.&lt;/li&gt;&lt;/ul&gt;ThoughWorkers involved: Paul Hammant. PicoContainer is worked on my many non-ThoughtWorkers too though!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-5406556798550272351?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/5406556798550272351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=5406556798550272351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/5406556798550272351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/5406556798550272351'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/10/picocontainer-26-picocontainer-web-21.html' title='PicoContainer 2.6 + PicoContainer-Web 2.1 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-4424249191147723767</id><published>2008-05-19T22:51:00.000-07:00</published><updated>2008-05-19T22:56:51.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mocks'/><category scheme='http://www.blogger.com/atom/ns#' term='london'/><category scheme='http://www.blogger.com/atom/ns#' term='stubs'/><category scheme='http://www.blogger.com/atom/ns#' term='OSS'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='mockobjects'/><category scheme='http://www.blogger.com/atom/ns#' term='mocking'/><title type='text'>London Geek Night - Mocking 28th May 2008</title><content type='html'>On Thursday May 28th 2008 there will be a Mocking focussed Geek Night at the ThoughtWorks London office, covering various Open Source Java mocking projects:&lt;br /&gt;&lt;br /&gt;Mocking can make code more reliable, more comprehensible and allow you to spot problems in design long before your code is deployed. Speakers will include Steve Freeman and Nat Pryce, developers of JMock and Felix Leipold of ThoughtWorks.&lt;br /&gt;&lt;br /&gt;Time permitting there will also be a mocking dojo to allow you to get&lt;br /&gt;&lt;br /&gt;See:&lt;br /&gt;&lt;br /&gt;&lt;a class="snap_shots" href="http://londongeeknights.wetpaint.com/"&gt;http://londongeeknights.wetpaint.co&lt;wbr&gt;m&lt;img id="snap_com_shot_link_icon" class="snap_preview_icon" style="border: 0pt none ; margin: 0pt ! important; padding: 1px 0pt 0pt; max-height: 2000px; max-width: 2000px; min-width: 0px; min-height: 0px; font-style: normal; font-weight: normal; font-family: &amp;quot;trebuchet ms&amp;quot;,arial,helvetica,sans-serif; float: none; position: static; left: auto; top: auto; line-height: normal; background-image: url(http://i.ixnp.com/images/v3.30/theme/silver/palette.gif); background-color: transparent; visibility: visible; width: 14px; height: 12px; background-position: -1058px 0pt; background-repeat: no-repeat; text-decoration: none; vertical-align: top; display: inline;" src="http://i.ixnp.com/images/v3.30/t.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="snap_shots" href="http://upcoming.yahoo.com/event/498162/"&gt;http://upcoming.yahoo.com/event/498162/&lt;wbr&gt;&lt;img id="snap_com_shot_link_icon" class="snap_preview_icon" style="border: 0pt none ; margin: 0pt ! important; padding: 1px 0pt 0pt; max-height: 2000px; max-width: 2000px; min-width: 0px; min-height: 0px; font-style: normal; font-weight: normal; font-family: &amp;quot;trebuchet ms&amp;quot;,arial,helvetica,sans-serif; float: none; position: static; left: auto; top: auto; line-height: normal; background-image: url(http://i.ixnp.com/images/v3.30/theme/silver/palette.gif); background-color: transparent; visibility: visible; width: 14px; height: 12px; background-position: -1058px 0pt; background-repeat: no-repeat; text-decoration: none; vertical-align: top; display: inline;" src="http://i.ixnp.com/images/v3.30/t.gif" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-4424249191147723767?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/4424249191147723767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=4424249191147723767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/4424249191147723767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/4424249191147723767'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/05/london-geek-night-mocking-28th-may-2008.html' title='London Geek Night - Mocking 28th May 2008'/><author><name>Paul Nasrat</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-1723044413079782490</id><published>2008-05-10T07:42:00.000-07:00</published><updated>2008-05-10T07:55:34.065-07:00</updated><title type='text'>PicoContainer 2.2 released</title><content type='html'>PicoContainer 2.2 has been released with a slew of new features and a bug fix.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;a href="http://picocontainer.org/news.html"&gt;news page&lt;/a&gt; from the project's site details the changes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the uninitiated it is an container for components that follow the Inversion of Control and Dependency Injection  principles. When it first started as a project in 2003, it was the only container that did the auto wiring of Constructor Injection. There are plenty of choices in this field these days, but PicoContainer is still used inside Intellij IDEA and JIRA.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also using PicoContainer: Waffle is a Rails "convention over configuration" inspired web framework that some suggest is a deal more pleasant to develop with than Struts/WebWork.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-1723044413079782490?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/1723044413079782490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=1723044413079782490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1723044413079782490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1723044413079782490'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/05/picocontainer-22-released.html' title='PicoContainer 2.2 released'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-6777925902734951205</id><published>2008-05-02T08:16:00.000-07:00</published><updated>2008-05-02T08:20:34.569-07:00</updated><title type='text'>Buildix 2.1 Released</title><content type='html'>I'm happy to announce that Buildix 2.1 is now available from &lt;a href="http://buildix.thoughtworks.com"&gt;buildix.thoughtworks.com&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;One of the major highlights of this release is that it now integrates with Mingle 2.0 and uses the wonderful new API they provide to make it a faster and more stable experience!&lt;br /&gt;&lt;br /&gt;More info available at &lt;a href="http://buildix.thoughtworks.com/index.php/2008/04/30/buildix-21-is-here/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Chris&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-6777925902734951205?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/6777925902734951205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=6777925902734951205' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/6777925902734951205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/6777925902734951205'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/05/buildix-21-released.html' title='Buildix 2.1 Released'/><author><name>Chris Read</name><uri>http://www.blogger.com/profile/17158037591497763511</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-4368566029327363077</id><published>2008-04-22T08:47:00.000-07:00</published><updated>2008-04-22T09:01:54.442-07:00</updated><title type='text'>Linux.com article: Open source testing tools target varied tasks</title><content type='html'>On &lt;a href="http://linux.com/"&gt;Linux.com&lt;/a&gt; there is an article on &lt;a href="http://www.linux.com/feature/131069"&gt;open source testing tools&lt;/a&gt;. It is a thorough run down of the field.  Of note from a ThoughtWorks point of view is our part in the field's history. Mark Aberdour (from OST) is quoted in the article:&lt;br /&gt;&lt;blockquote&gt;"In functional testing there are a number of really great tools &lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Selenium&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; Abbot, Jameleon, &lt;span style="font-weight: bold;"&gt;jWebUnit&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Marathon&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Sahi&lt;/span&gt;, soapui, and Watin/&lt;span style="font-weight: bold;"&gt;Watir&lt;/span&gt; to name a few) with strong feature sets"&lt;br /&gt;&lt;/blockquote&gt;&lt;div&gt;Those in bold were either started by ThoughtWorkers or one of the lead developers was a ThoughtWorker.  It makes us proud!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-4368566029327363077?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/4368566029327363077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=4368566029327363077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/4368566029327363077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/4368566029327363077'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/04/linuxcom-article-open-source-testing.html' title='Linux.com article: Open source testing tools target varied tasks'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-1257277678553766295</id><published>2008-03-06T08:17:00.000-08:00</published><updated>2008-03-06T09:23:00.457-08:00</updated><title type='text'>Selenium User Meetup videos</title><content type='html'>Meeting up at Google for the user evening was great fun.  It was short notice, but we managed to fill the 100 slots on the attendee list, and get two pieces where video recorded, while still leaving time for mingling. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first video was the lightening talks by the developers and some friends. Its up on &lt;a href="http://www.youtube.com/watch?v=EDb8yOM3Vpw"&gt;YouTube&lt;/a&gt;.  Its 92 minutes long.  Dan Fabulich (ex of Bea, now Redfin) if he is not a star already, should be as his segment &lt;span class="Apple-style-span" style="font-style: italic;"&gt;How not to run a Successful open source project&lt;/span&gt; is a very entertaining few minutes. Fast forward to 51 mins to see &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Fabulich by name, Fabulous by nature&lt;/span&gt;.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;ThoughtWorks was represented by me (Paul Hammant) and Philippe Hanrigou.  My piece was on release roadmap (19 mins, 20 secs in), Philippe's was on Selenium-Grid (23 mins in). His featured a very impressive movie showing Selenium-Grid running dozens of windows on Philippe's MacBook.  Jennifer Bevan of Google also talked of their farm and use of Selenium for QA of some of the web applications, and the problems/successes of scaling (28 mins, 40 secs in).  The other segments were great too. Thanks to all the friends of ThoughtWorks who did a segment, and have helped make Selenium the success it is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second piece was a Q&amp;amp;A session (which we kinda had to cut short, because the lightening talks speakers were not following the suggested 5 minute limit :).  That was just the selenium developers (minus Nelson Sproul of Bea who could not make it).  See &lt;a href="http://www.youtube.com/watch?v=4y-3bllkkPc"&gt;the video&lt;/a&gt; (18 mins)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We were at Google for two days in all. On Sunday 24th the developers met up and talked/coded through the day. On the Monday it was a regular work day for Google, so we were able to see the campus a bit more busy than the Sunday.  Planning the release of 1.0, and the assimilation of Simon Stewart's WebDriver into a 2.0 code-line was key.  Selenium users will be pleased to know that we talked about the two pending Flash/Flex enablers for Selenium that might get merged in shortly.  We sadly ran out of time, and could not speak about or merge in an Erlang driver for Selenium (coded in a matter of days by Brian O'Rourke before the meetup).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-1257277678553766295?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/1257277678553766295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=1257277678553766295' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1257277678553766295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1257277678553766295'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/03/selenium-user-meetup-videos.html' title='Selenium User Meetup videos'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-69694841004132252</id><published>2008-02-19T19:58:00.000-08:00</published><updated>2008-02-19T21:48:12.369-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Google conference'/><title type='text'>Selenium: User Event at Google on Monday</title><content type='html'>When ThoughtWorks open sourced Selenium many years ago, we kinda hoped it would be big.  A coming of age of any technology/product is when a conference is organized around it. &lt;br /&gt;&lt;br /&gt;Well, that day has come.  On Monday 25th February (sorry that is not much notice) there will be a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Selenium User Open Evening&lt;/span&gt; at the Googleplex in Mountain View, California.  The ten or so coders that develop the various bits of Selenium will be there for a panel session and some lightning talks at 6:30pm. There will be nibbles too.&lt;br /&gt;&lt;br /&gt;The other developers and I hope the audience will be pleased with what they see/hear.&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Signup here: &lt;a href="http://selenium.openqa.org/meetup.jsp"&gt;http://selenium.openqa.org/meetup.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Here is the official blurb:&lt;br /&gt;&lt;blockquote&gt;With representatives from all the major Selenium projects on hand to present ideas, discuss the future of Selenium and answer audience questions, the Selenium Open Evening is an opportunity to get involved in the future of the project. With Selenium developers from as far apart as London, Tokyo and the US and Lightning Talks on related subjects, this is a great way to meet Selenium users and meet some of the other brightest minds in web testing and Agile development!&lt;/blockquote&gt;For those that do not know, Selenium is an open source web application functional testing technology that is cross platform, and targets Internet Explorer, Firefox and Safari.  It is steerable from Java, C#, Ruby, Python, Perl (and more). For Firefox you can record/playback/save tests. Lastly it has a grid capability for massively distributed test runs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Site links&lt;/span&gt;&lt;br /&gt;The core (beginners) version - &lt;a href="http://selenium.openqa.org/"&gt;http://selenium.openqa.org/&lt;/a&gt;&lt;br /&gt;Remote Control mode (advanced) - &lt;a href="http://selenium-rc.openqa.org/"&gt;http://selenium-rc.openqa.org/&lt;/a&gt;&lt;br /&gt;The Firefox record/playback plug-in - &lt;a href="http://selenium-ide.openqa.org/"&gt;http://selenium-ide.openqa.org/&lt;/a&gt;&lt;br /&gt;The Grid (distributed) technology - &lt;a href="http://selenium-grid.openqa.org/"&gt;http://selenium-grid.openqa.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-69694841004132252?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/69694841004132252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=69694841004132252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/69694841004132252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/69694841004132252'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/02/selenium-user-event-at-google-on-monday.html' title='Selenium: User Event at Google on Monday'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-1603127622815289173</id><published>2008-02-08T00:31:00.000-08:00</published><updated>2008-02-08T00:40:49.703-08:00</updated><title type='text'>White, automate windows applications</title><content type='html'>&lt;span id="ctl00_ctl00_Content_TabContentPanel_Content_wikiSourceLabel"&gt;Its hosted here&lt;br /&gt;http://www.codeplex.com/white&lt;br /&gt;&lt;br /&gt;Key features:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="ctl00_ctl00_Content_TabContentPanel_Content_wikiSourceLabel"&gt;Automates Win32, WinForm, WPF and SWT applications&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="ctl00_ctl00_Content_TabContentPanel_Content_wikiSourceLabel"&gt;Hides the complexity of window messages and Microsoft UIAutomation library under object based API&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="ctl00_ctl00_Content_TabContentPanel_Content_wikiSourceLabel"&gt;Consistent API for all kinds of application&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="ctl00_ctl00_Content_TabContentPanel_Content_wikiSourceLabel"&gt;Use any .NET language&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;No need to learn any proprietory script. Use your favourite language/IDE/tools for writing scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-1603127622815289173?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/1603127622815289173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=1603127622815289173' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1603127622815289173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/1603127622815289173'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/02/white-automate-windows-applications.html' title='White, automate windows applications'/><author><name>Vivek Singh</name><uri>http://www.blogger.com/profile/02301711735934657068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-2529053617142594126</id><published>2008-01-20T14:03:00.000-08:00</published><updated>2008-01-20T15:04:31.983-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copyright'/><category scheme='http://www.blogger.com/atom/ns#' term='provenance'/><category scheme='http://www.blogger.com/atom/ns#' term='qdox'/><title type='text'>Open Source: Provenance Idea</title><content type='html'>&lt;span style="font-weight: bold;"&gt;The Problem....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The QDox team were contacted about the provenance of their commits recently. Questions were posed because there is a project that uses QDox wanting to relocate to the Eclipse Foundation, and that the latter is pretty keen on ensuring there are no copyright issues after arrival.  A fellow from that team in question contacted us all to ask questions.  I wrote 4% of QDox apparently, though I think that's Joe being generous.&lt;br /&gt;&lt;br /&gt;Lets summarize the concerns as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Does any current or former employer of the committer/contributor reserves exclusivity in respect of the donated portions of code?&lt;/li&gt;&lt;li&gt;The portions in question were in fact authored by the committer/contributor and not mal-appropriated from another codebase (commercial or open source) obscuring their origin?&lt;/li&gt;&lt;li&gt;The committer/contributor is happy to see their contribution noted with a simple copyright that fits the entire work?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;- For Apache that would be the very uniform: '(C) Apache Software Foundation, CCYY'&lt;/li&gt;&lt;li&gt;For Joe Walnes' QDox, the pragmatic: 'Copyright 2003-2006 Joe Walnes and QDox Project Team'&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;In short:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Are the portions of code donated by the committer/contributor correctly copyrighted?&lt;/li&gt;&lt;/ul&gt;Despite Joe being incredibly busy he has helped identify the contributions and the contacting of us directly for the Eclipse matter. But what if the QDox &lt;span style="font-style: italic;"&gt;Christmas Party&lt;/span&gt; was hit by a meteorite though?  What lasting way can you illustrate your attempts to secure provenance on the contributions, that will negate the need for actual conversation in latter months/years?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Provenance Commits Idea&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If there a text file that new committers checked-in to source control signifying their forthcoming agreement on copyright, then we could have a permanent audit trail as to provenance for open source.  The file would be from a template, and would be a fact-filled and pseudo-contractual claim by the person committing it. The template could look something like:&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;     I {person}, in respect of my forthcoming commits to this project, in addition to my own implicit copyright, can also be claimed as copyright to {organization} in the year in which they are committed. I suggest that am authorized to do so my current employer, even though they normally retain exclusive rights to my software copyright by contract that I have with them.&lt;br /&gt;&lt;br /&gt;{organization} may do whatever it seems appropriate with my contributions, without further consent from me, or my employers (past, present or future).&lt;br /&gt;&lt;br /&gt;I suggest that this agreement dates from today, {today's date} until such time as I set an end date for my patronage of this project, or my death. In either case the copyright for any historical contributions I may have made are not called into question by the end of my patronage.&lt;br /&gt;&lt;br /&gt;By my committing this text in a file to the source control this project for {organization}, using my user ID {user id} and password, I am attesting that it is in fact me, {person}, and this commit in effect is my electronic signature.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;In the first paragraph, "this project" - would it need to be named explicitly? It could be that the location of the file in source control would be enough.&lt;br /&gt;&lt;br /&gt;There are some conventions that would need to be legally accepted, like:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;source control is well understood beast that allows for contributions from authenticated and authorized users (committers).&lt;/li&gt;&lt;li&gt;a text file contributed through a secure account without a physical signature is representative as legal consent.&lt;/li&gt;&lt;li&gt;the whole business of publicly available source control is non-repudiable&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The idea is that the new committer first takes a template, modifies and commits it via their new account as outlined  Then, and only then, they carry on with real commits (work) for the project in question.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Consequential questions -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What if instead of an organization, or an individual, there was a more woolly group like "Foobar project team" that's not legally well defined?&lt;br /&gt;&lt;br /&gt;Also, what of contributors (patch donators) as opposed to full blown committers?  They do not normally get source control accounts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-2529053617142594126?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/2529053617142594126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=2529053617142594126' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2529053617142594126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/2529053617142594126'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/01/open-source-provenance-idea.html' title='Open Source: Provenance Idea'/><author><name>Paul Hammant</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5116471530866808083.post-3012692072563115297</id><published>2008-01-11T20:39:00.000-08:00</published><updated>2008-01-12T19:03:44.795-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSS agile apachecon thoughtworks apache jboss'/><title type='text'>Agile/OSS Presentation at ApacheCon 2008 EU</title><content type='html'>I'll be in Amsterdam from April 7 to April 11 for ApacheCon.  The conference committee has graciously invited me to present at &lt;a href="http://www.eu.apachecon.com/eu2008/"&gt;ApacheCon 2008 EU&lt;/a&gt;.  Here's the abstract:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Where do Open Source and Agile Methods meet?&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Come listen to one man’s tirade on the differences between his day job at an Agile consulting firm and his weekends with Apache and JBoss.  Open Source and Agile are often preferred by the same people, but do they succeed or fail for the same reasons?  This session compares and contrasts open source projects with agile projects along several key dimensions: team size, co-location, communication, feedback loops, testing, time to market, and leadership structure.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5116471530866808083-3012692072563115297?l=tw-oss.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tw-oss.blogspot.com/feeds/3012692072563115297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5116471530866808083&amp;postID=3012692072563115297' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3012692072563115297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5116471530866808083/posts/default/3012692072563115297'/><link rel='alternate' type='text/html' href='http://tw-oss.blogspot.com/2008/01/jsf-anti-patterns-presentation-at.html' title='Agile/OSS Presentation at ApacheCon 2008 EU'/><author><name>Not Dennis Byrne</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_YxhewqfVcgQ/TJAMleY3LiI/AAAAAAAAAEw/r49UhW4tDew/S220/dennis_byrne_drw_trading.jpg'/></author><thr:total>2</thr:total></entry></feed>
