<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>act:ualise | technology</title>
	
	<link>http://act.ualise.com/blogs/continuous-innovation</link>
	<description>agile software development, software quality, grails and testing</description>
	<lastBuildDate>Wed, 14 Oct 2009 04:37:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/actualise/tech" /><feedburner:info uri="actualise/tech" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>10/GUI: Multitouch to lust for</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/nw_L53Z8E2I/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/10/10gui-multitouch-to-lust-for/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 04:34:07 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[information visualisation]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[10/gui]]></category>
		<category><![CDATA[multitouch]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=629</guid>
		<description><![CDATA[Hands down the coolest thing I have seen in weeks. Who will deliver this first, Apple or Google? Either way, can we have the 21st century now please&#8230; i&#8217;m seeing a dusty film forming on my mouse at this moment. (Original article, by @fastcompany)]]></description>
			<content:encoded><![CDATA[<p>Hands down the coolest thing I have seen in weeks. Who will deliver this first, Apple or Google? Either way, can we have the 21st century now please&#8230; i&#8217;m seeing a dusty film forming on my mouse at this moment.</p>
<p><a href="http://act.ualise.com/blogs/continuous-innovation/2009/10/10gui-multitouch-to-lust-for/"><em>Click here to view the embedded video.</em></a></p>
<p>(<a title="Fast Company: Multi-Touch Interface Concept Blows Away Touchscreens" rel="nofollow" href="http://www.fastcompany.com/blog/cliff-kuang/design-innovation/hunt-new-grammar-multi-touch" target="_blank">Original article</a>, by <a title="Twitter: fastcompany" rel="nofollow" href="http://twitter.com/fastcompany" target="_blank">@fastcompany</a>)</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/nw_L53Z8E2I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/10/10gui-multitouch-to-lust-for/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/10/10gui-multitouch-to-lust-for/</feedburner:origLink></item>
		<item>
		<title>Google Chrome Frame</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/O9LfOQDt_Wc/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/09/google-chrome-frame/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 03:14:03 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=621</guid>
		<description><![CDATA[I&#8217;d pretty much agree with most of the points set out in this Ajaxian article about Chrome Frame, though I would add one further point. This isn&#8217;t being done because of audience, or technical savvy, but entirely for the sheer fun of hearing yet another story of Steve Ballmer throwing several chairs across the room. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d pretty much agree with most of the points set out in this <a title="Ajaxian: Google Chrome Frame" rel="nofollow" href="http://ajaxian.com/archives/chrome-frame-no-one-will-care-but-it%E2%80%99s-fantastic" target="_blank">Ajaxian article</a> about Chrome Frame, though I would add one further point.</p>
<p>This isn&#8217;t being done because of audience, or technical savvy, but entirely for the sheer fun of hearing yet another story of Steve Ballmer <a title="Ballmer and chairs" rel="nofollow" href="http://arstechnica.com/microsoft/news/2005/09/1106.ars" target="_blank">throwing several chairs</a> across the room.</p>
<p>It&#8217;s Microsoft baiting on an awesome scale, one mahoosive company getting massive press for something so esoteric and ostensibly useless and which most certainly <a title="Microsoft warns against Google Chrome" rel="nofollow" href="http://mashable.com/2009/09/24/google-chrome-frame-ie/" target="_blank">pisses off</a> MS.</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/O9LfOQDt_Wc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/09/google-chrome-frame/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/09/google-chrome-frame/</feedburner:origLink></item>
		<item>
		<title>Selenium has evolved; enter Bromine</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/daR-liK0k2U/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/selenium-has-evolved-enter-bromine/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 15:10:22 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[functional tests]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[acceptance test driven]]></category>
		<category><![CDATA[bromine]]></category>
		<category><![CDATA[functional testing]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=550</guid>
		<description><![CDATA[As a long time user and advocate of Selenium I have found that using it on large projects ultimately consumes a lot of time with the following concerns: Organising tests into logical groups Executing testcases against multiple target browsers Parallel execution of testcases The motivation for these is to speed development; as the number of tests [...]]]></description>
			<content:encoded><![CDATA[<p>As a long time user and advocate of <a title="Selenium" rel="nofollow" href="http://seleniumhq.org/" target="_blank">Selenium</a> I have found that using it on large projects ultimately consumes a lot of time with the following concerns:</p>
<ul>
<li>Organising tests into logical groups</li>
<li>Executing testcases against multiple target browsers</li>
<li>Parallel execution of testcases</li>
</ul>
<p>The motivation for these is to speed development; as the number of tests grow you eventually hit a crunch point where tests are too numerous (ie: 1000&#8242;s) for teams to realistically run every last available test prior to a check in.</p>
<p>Handrolling solutions to the points mentioned is entirely possible; indeed we used <a title="Hudson Build Server" rel="nofollow" href="https://hudson.dev.java.net/" target="_blank">Hudson</a> running parallelised Selenium test groups on multiple slave nodes against Firefox and IE. But wouldn&#8217;t it be nice if it we&#8217;re made even easier? <a title="Bromine" rel="nofollow" href="http://bromine.seleniumhq.org/" target="_blank">Bromine</a> proposes just this.</p>
<p>Whilst I haven&#8217;t yet had the chance to use it, <a title="Bromine Screencast" rel="nofollow" href="http://bromine.seleniumhq.org/brscreencast/brscreencast.html" target="_blank">this impressive 9 minute screencast</a> has at (the very least) convinced me to try it out.</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/daR-liK0k2U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/selenium-has-evolved-enter-bromine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/selenium-has-evolved-enter-bromine/</feedburner:origLink></item>
		<item>
		<title>JSON Webtests with Grails</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/bSrEBRPXzGw/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/json-webtests-with-grails/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 00:46:11 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[functional tests]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[webtest]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=529</guid>
		<description><![CDATA[I recently figured out how to use WebTest for functional testing of Grails controller actions that render JSON. That said, I&#8217;m not convinced it&#8217;s the best way &#8211; I&#8217;m fairly sure the gFunc plugin would do it nicely, though I ran into problems with it clean compiling the whole app on every run. Custom steps [...]]]></description>
			<content:encoded><![CDATA[<p>I recently figured out how to use WebTest for functional testing of Grails controller actions that render JSON. That said, I&#8217;m not convinced it&#8217;s the best way &#8211; I&#8217;m fairly sure the <a title="Grails Functional testing Plugin" rel="nofollow" href="http://www.grails.org/plugin/functional-test" target="_blank">gFunc</a> plugin would do it nicely, though I ran into problems with it clean compiling the whole app on every run.</p>
<p><strong>Custom steps</strong></p>
<p>It&#8217;s been possible to add custom steps to Webtests <a title="Lee Butts: Grails Webtest 0.6 plugin released" rel="nofollow" href="http://leebutts.com/2009/01/grails-webtest-plugin-06-released.html" target="_blank">for some time</a>. Assuming you have v0.6 of the plugin (or you use Grails 1.1), then <a title="Custom Webtest steps for the Grails Webtest Plugin" rel="nofollow" href="http://sothmann.blogspot.com/2009/05/custom-webtest-steps-for-grails-webtest.html" target="_blank">this writeup</a> provides some useful background and also a &#8216;Hello, World&#8217; type example.</p>
<p><strong>In an ideal world</strong></p>
<p>On the surface it seems that we could therefore have a jsonVerify step which is quite simply:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family: monospace;">class JsonVerifyStep extends Step {

    String expected

    void doExecute() {
        def jsonServed = context.currentResponse.inputStream as JSON
        def jsonExpected = expected as JSON
        assert jsonExpected, jsonServed
    }

}</pre>
</div>
</div>
<p>Annoyingly, it&#8217;s not this easy.</p>
<p><strong>Grails, Webtest and (sigh) Classpath&#8217;s</strong></p>
<p>Webtest is spawned by a forked <a title="Apache Ant" rel="nofollow" href="http://ant.apache.org/" target="_blank">Ant</a> process (see ${pluginDir}/webtest-n.n/scripts/call-webtest.xml) which means you get a  limited classpath due to JAR version conflicts.</p>
<p>So it&#8217;s not possible to add the Grails classpath (or even just $GRAILS_HOME/dist/grails-web-n.n.jar) which contains all the handy JSON library code that we&#8217;re so accustomed to when rendering JSON responses.</p>
<p><strong>Solution (has some camembert)<br />
</strong></p>
<p>My &#8220;solution&#8221; was to add two jars (<a title="JSON-Lib" rel="nofollow" href="http://json-lib.sourceforge.net/" target="_blank">json-lib</a> &amp; <a title="EZMorph" rel="nofollow" href="http://ezmorph.sourceforge.net/" target="_blank">ezmorph</a>) to your Grails lib and also tweak the call-webtest.xml file with the following change:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family: monospace;">&lt;fileset dir="${grailsHome}/lib" includes="commons-cli*.jar,commons-beanutils*.jar"/&gt;</pre>
</div>
</div>
<p>With the resulting custom step you can test your JSON response</p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family: monospace;">import com.canoo.webtest.steps.Step
import net.sf.json.JSON
import net.sf.json.groovy.GJson
import org.apache.commons.io.IOUtils
import org.apache.log4j.Logger
import net.sf.json.test.JSONAssert

class JsonVerifyStep extends Step {
    private static Logger log = Logger.getLogger(JsonVerifyStep)

    String expected

    void doExecute() {
        GJson.enhanceClasses() // neccessary for the net.sf.JSON stuff in Groovy
        def jsonServed = IOUtils.toString(context.currentResponse.inputStream) as JSON // wants a string
        def jsonExpected = expected as JSON
        JSONAssert.assertEquals jsonExpected, jsonServed
    }
}</pre>
</div>
</div>
<p>And you would implement your webtest as follows:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family: monospace;">    def testSomeJSONResponse() {
        webtest('Example JSON webtest') {
            invoke('/controller/actionJSON')
            jsonVerify(expected: '{"totalRecords":2,"results":[{"id":16,"year":2009,"name":"ZZ Top"},{"id":2,"year":2009,"name":"Aerosmith"}')
        }

    }</pre>
</div>
</div>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/bSrEBRPXzGw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/json-webtests-with-grails/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/json-webtests-with-grails/</feedburner:origLink></item>
		<item>
		<title>Evening reading…</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/oz2aQze0ad8/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/evening-reading/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 03:51:21 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=517</guid>
		<description><![CDATA[Two recently released books I&#8217;m working through are Grails In Action and Unlocking Android, both published by Manning. Notwithstanding the unusual covers, these are very handy, intermediate level books for their respective focuses which I&#8217;ve found useful for reference and learning. Reviews for these books are plenty (GIA, UA) saving me the trouble, though it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://act.ualise.com:8080/awsLocalizer/?uid=JP01&amp;searchIndex=Books&amp;asin=Grails+In+Action"><img class="alignleft" title="Grails In Action" src="http://ecx.images-amazon.com/images/I/51a0-VuqmSL._SL160_AA115_.jpg" alt="" width="115" height="115" /></a>Two recently released books I&#8217;m working through are <a title="Amazon: Grails In Action" rel="nofollow" href="http://act.ualise.com:8080/awsLocalizer/?uid=JP01&amp;searchIndex=Books&amp;asin=Grails+In+Action" target="_blank">Grails In Action</a> and <a title="Amazon: Unlocking Android" rel="nofollow" href="http://act.ualise.com:8080/awsLocalizer/?uid=JP01&amp;searchIndex=Books&amp;asin=Unlocking+Android" target="_blank">Unlocking Android</a>, both published by <a title="Manning" rel="nofollow" href="http://www.manning.com" target="_blank">Manning</a>.</p>
<p>Notwithstanding the unusual covers, these are very handy, intermediate level books for their respective focuses which I&#8217;ve found useful for reference and learning.<a rel="nofollow" href="http://act.ualise.com:8080/awsLocalizer/?uid=JP01&amp;searchIndex=Books&amp;asin=Unlocking+Android"><img class="alignright" title="Unlocking Android" src="http://ecx.images-amazon.com/images/I/514p8HC3PyL._SL160_AA115_.jpg" alt="" width="115" height="115" /></a></p>
<p>Reviews for these books are plenty (<a title="Book Review: Grails In Action" rel="nofollow" href="http://www.suryasuravarapu.com/2009/04/book-review-grails-in-action.html" target="_blank">GIA</a>, <a title="Slashdot: Review of Unlocking Android" rel="nofollow" href="http://books.slashdot.org/story/09/06/29/139256/Unlocking-Android?from=rss" target="_blank">UA</a>) saving me the trouble, though it&#8217;s worth mentioning that <em><strong>at least</strong></em> these books &#8211; and probably many others by Manning &#8211; come with a front cover insert to download your free eBook copy. The eBook PDF is sold separately online, but owners of the printed version get it free too.</p>
<p>Sweeeeet!</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/oz2aQze0ad8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/evening-reading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/evening-reading/</feedburner:origLink></item>
		<item>
		<title>Wolfram Alpha: the promise of divine intelligence?</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/LcLLz_BNVq0/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/wolfram-alpha-the-promise-of-divine-intelligence/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 21:14:45 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[information visualisation]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[control interface]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wolfram alpha]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=503</guid>
		<description><![CDATA[The hype that surrounded Wolfram Alpha bore similarities to the Segway hype machine of 7 years ago: not for the first time was the media abuzz with promises of a revolution in some small part of our lives, that hackneyed &#8216;paradigm shift&#8217;; the &#8216;game changer&#8217;. Some weeks later, the news that their traffic levels have [...]]]></description>
			<content:encoded><![CDATA[<p>The hype that surrounded <a title="Wolfram Alpha" rel="nofollow" href="http://wolframalpha.com" target="_blank">Wolfram Alpha</a> bore similarities to the <a title="&quot;Segway&quot;" rel="nofollow" href="http://www.wired.com/wired/archive/11.03/segway.html" target="_blank">Segway hype</a> machine of 7 years ago: not for the first time was the media abuzz with promises of a revolution in some small part of our lives, that hackneyed &#8216;paradigm shift&#8217;; the &#8216;game changer&#8217;.</p>
<p>Some weeks later, the news that their traffic levels <a title="Mashable: Wolfram Alpha plummets" rel="nofollow" href="http://mashable.com/2009/07/09/web-in-numbers-twitter-wolfram-alpha/" target="_blank">have plummeted</a> is hardly surprising, though it dovetails nicely with a <a title="Wolfram Alpha and hubristic user interfaces " rel="nofollow" href="http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html" target="_blank">wonderfully incisive piece</a> about WolframAlpha&#8217;s UI as an intelligent control interface.</p>
<p style="padding-left: 30px;"><em>&#8220;There is actually a useful tool inside Wolfram Alpha, which hopefully will be exposed someday. Unfortunately, this would require Stephen Wolfram to amputate what he thinks is the beautiful part of the system, and leave what he thinks is the boring part.&#8221;</em></p>
<p>This article centres on the UI problem being solved Wolfram Alpha, opting for natural language interpretation.</p>
<p style="padding-left: 30px;"><em>&#8220;WA is two things: a set of specialized, hand-built databases and data visualization apps, each of which would be cool, the set of which almost deserves the hype; and an intelligent UI, which translates an unstructured natural-language query into a call to one of these tools. The apps are useful and fine and good. The natural-language UI is a monstrous encumbrance, which needs to be taken out back and shot. It won&#8217;t be.&#8221;</em></p>
<p>My personal experience with WA is very much as a &#8216;false affordance&#8217; as the article details so well:</p>
<p style="padding-left: 30px;"><em>&#8220;For serious UI geeks, one way to see an intelligent control interface is as a <a rel="nofollow" href="http://www.interaction-design.org/encyclopedia/affordances.html"><span style="font-style: italic;">false affordance</span></a> &#8211; like a knob that cannot be turned, or a chair that cannot be sat in.  The worst kind of false affordance is an <span style="font-style: italic;">unreliable</span> affordance &#8211; a knob that can be turned except when it can&#8217;t, a chair that&#8217;s a cozy place to sit except when it rams a hidden metal spike deep into your tender parts.</em></p>
<p style="padding-left: 30px;"><em>Wolfram&#8217;s natural-language query interface is an unreliable affordance because of its implicit promise of divine intelligence. The tool-guessing UI implicitly promises to read your mind and do what you want. Sometimes it even does. When it fails, however, it leaves the user angry and frustrated &#8211; a state of mind seldom productive of advertising revenue.&#8221;</em></p>
<p>The <a title="Wolfram Alpha and hubristic user interfaces " rel="nofollow" href="http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html" target="_blank">full article</a> is a good read and though relatively long, it&#8217;s conclusion is not: <a title="Keep it Simple, Stupid" rel="nofollow" href="http://www.techcrunch.com/2009/04/28/keep-it-simple-stupid/">Keep it Simple, Stupid</a>.</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/LcLLz_BNVq0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/wolfram-alpha-the-promise-of-divine-intelligence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/wolfram-alpha-the-promise-of-divine-intelligence/</feedburner:origLink></item>
		<item>
		<title>No Fluff, Just Stuff 2009. Seattle WA</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/yI8tCyXCmIo/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/no-fluff-just-stuff-2009-in-seattle-wa/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 20:06:10 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[no fluff just stuff]]></category>
		<category><![CDATA[seattle]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=494</guid>
		<description><![CDATA[The No Fluff, Just Stuff 2009 Tour rolls into Seattle on September 18-20th. The line-up has some interesting speakers: Brian Goetz, Author of Java Concurrency in Practice Brian Sletten, REST Expert David Geary, Author of Graphic Java and co-author of Core JSF Howard Lewis Ship, Creator of Tapestry and HiveMind Ken Sipe, Technology Director, Perficient, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="No Fluff, Just Stuff. Seattle, WA" rel="nofollow" href="http://www.nofluffjuststuff.com/conference/seattle/2009/09/home" target="_blank">No Fluff, Just Stuff 2009</a> Tour rolls into Seattle on September 18-20th. The line-up has some interesting speakers:</p>
<ul>
<li>Brian Goetz, Author of Java Concurrency in Practice</li>
<li>Brian Sletten, REST Expert</li>
<li>David Geary, Author of Graphic Java and co-author of Core JSF</li>
<li>Howard Lewis Ship, Creator of Tapestry and HiveMind</li>
<li>Ken Sipe, Technology Director, Perficient, Inc. (PRFT)</li>
<li>Mark Richards, SOA and Enterprise Architect, Author of Java Message Service</li>
<li>Matthew McCullough, Open Source Application Architect at Ambient Ideas</li>
<li>Nathaniel Schutta, Author, speaker, software engineer focused on user interface design.</li>
<li>Scott Davis, Author of &#8220;Groovy Recipes&#8221; &amp; TDD Expert</li>
<li>Ted Neward, Enterprise, Virtual Machine and Language Wonk</li>
<li>Venkat Subramaniam, Founder of Agile Developer, Inc</li>
</ul>
<p>Attendance is limited to 250 and no Vendors, no Sales Pitches, no Marketecture.</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/yI8tCyXCmIo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/no-fluff-just-stuff-2009-in-seattle-wa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/no-fluff-just-stuff-2009-in-seattle-wa/</feedburner:origLink></item>
		<item>
		<title>Google reader keyboard shortcuts</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/90QRDFQhHH0/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/google-reader-keyboard-shortcuts/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 16:45:45 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[user experience]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google reader]]></category>
		<category><![CDATA[keyboard shortcuts]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=489</guid>
		<description><![CDATA[I&#8217;m a daily user of Google Reader and find it very useful for helping me manage information. Despite having used it for a year, and maybe because it&#8217;s quite well made to start with, I hadn&#8217;t stopped to ponder whether or not it had keyboard shortcuts until I accidentally pressed &#8216;g&#8217; then &#8216;f&#8217; in a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a daily user of <a title="Google Reader" rel="nofollow" href="http://www.google.com/reader" target="_blank">Google Reader</a> and find it very useful for helping me manage information. Despite having used it for a year, and maybe because it&#8217;s quite well made to start with, I hadn&#8217;t stopped to ponder whether or not it had keyboard shortcuts until I accidentally pressed &#8216;g&#8217; then &#8216;f&#8217; in a fit of crappy typing.</p>
<p>So Reader users, avail yourselves of a <a rel="nofollow" href="http://www.google.com/support/reader/bin/answer.py?hl=en&amp;answer=69973" target="_blank">whole host of shortcuts</a>!</p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/90QRDFQhHH0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/google-reader-keyboard-shortcuts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/google-reader-keyboard-shortcuts/</feedburner:origLink></item>
		<item>
		<title>Viewing Grails’ in memory HSQLDB</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/3UQbkxe5ei8/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/07/viewing-grails-in-memory-hsqldb/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 18:39:42 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[hsqldb]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=469</guid>
		<description><![CDATA[Grails comes with HSQLDB as it&#8217;s in-memory db and it&#8217;s not difficult to inspect it, but there&#8217;s a simpler way than many realise and it&#8217;s built into every Grails installation, bundled in the HSQLDB jar lib. I have found this trick is useful when inspecting DB state during integration test execution. Just add the following [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-471" title="Database Manager prompt window" src="http://act.ualise.com/blogs/continuous-innovation/wp-content/uploads/2009/07/DBManager-Prompt-240x300.png" alt="DatabaseManager" width="240" height="300" />Grails comes with HSQLDB as it&#8217;s in-memory db and it&#8217;s <a title="Using DBVisualizer to connect to Grails' in-memory DB" rel="nofollow" href="http://jlorenzen.blogspot.com/2008/01/how-to-connect-to-grails-hsql-database.html" target="_blank">not difficult</a> to inspect it, but there&#8217;s a simpler way than many realise and it&#8217;s built into every Grails installation, bundled in the HSQLDB jar lib.</p>
<p>I have found this trick is useful when inspecting DB state during integration test execution.</p>
<p>Just add the following line of code to somewhere in your application.</p>
<p style="padding-left: 30px;">org.hsqldb.util.DatabaseManager.main()</p>
<p>When that line gets triggered from a running grails app you will see the prompt window above appear on your desktop.</p>
<p>All you need to then do is tweak the DB url (remove the . and replace with DB name) to reflect your datasource properties for the in-memory DB, in my case</p>
<p style="padding-left: 30px;">jdbc:hsqldb:mem:devDB</p>
<p>That&#8217;s it! You should then see the Database schema browser below.</p>
<p><img class="alignleft size-medium wp-image-472" title="DatabaseManager session" src="http://act.ualise.com/blogs/continuous-innovation/wp-content/uploads/2009/07/DBMgr-300x195.png" alt="DatabaseManager_session" width="300" height="195" /></p>
<p>One important caveat &#8211; this DB tool issues a System.exit() which terminates your Grails app when you close so be sure to remove that line when you have done inspecting!<br />
<br clear="all"/></p>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/3UQbkxe5ei8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/07/viewing-grails-in-memory-hsqldb/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/viewing-grails-in-memory-hsqldb/</feedburner:origLink></item>
		<item>
		<title>Respect @ Flickr</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/OkixHk1ulCM/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/06/respect-flickr/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 20:42:47 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[ops]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[one click deploy]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=461</guid>
		<description><![CDATA[There isn&#8217;t much more to say than Flickr, ur doin it right! Respect.. The way that metrics are being used for the continual feedback and ongoing health and monitoring of system and features is very Lean and not something I get to see too often. 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr [...]]]></description>
			<content:encoded><![CDATA[<p>There isn&#8217;t much more to say than Flickr, ur doin it right! Respect..</p>
<p>The way that metrics are being used for the continual feedback and ongoing health and monitoring of system and features is very Lean and not something I get to see too often.</p>
<div style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="10+ Deploys Per Day: Dev and Ops Cooperation at Flickr" href="http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr?type=powerpoint">10+ Deploys Per Day: Dev and Ops Cooperation at Flickr</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=allspawhammondvelocity2009-090623161942-phpapp01&amp;rel=0&amp;stripped_title=10-deploys-per-day-dev-and-ops-cooperation-at-flickr" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=allspawhammondvelocity2009-090623161942-phpapp01&amp;rel=0&amp;stripped_title=10-deploys-per-day-dev-and-ops-cooperation-at-flickr" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div id="__ss_1628368" style="width: 425px; text-align: left;">
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">Microsoft Word documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/jallspaw">John Allspaw</a>.</div>
</div>
<img src="http://feeds.feedburner.com/~r/actualise/tech/~4/OkixHk1ulCM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/06/respect-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/06/respect-flickr/</feedburner:origLink></item>
	</channel>
</rss>
