<?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, scaling, testing and other tech</description>
	<lastBuildDate>Thu, 09 Jun 2011 20:43:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.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>Joining in the global agile conversation</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/OV7ie3CxifI/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2011/06/joining-in-the-global-agile-conversation/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 18:05:59 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[xp]]></category>
		<category><![CDATA[agile scrum xp lean twitter]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=700</guid>
		<description><![CDATA[It took me a while to understand why I would want to use twitter lists and now I am finally starting to see the benefits. For the last few months I&#8217;ve spent a few minutes each day exploring twitter people &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2011/06/joining-in-the-global-agile-conversation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It took me a while to understand why I would want to use twitter lists and now I am finally starting to see the benefits. For the last few months I&#8217;ve spent a few minutes each day exploring twitter people who are actively participating in the global discourse on Agile, Lean, Scrum, Kanban, XP typically in relation to IT. I&#8217;ve come across lots of interesting reads and the resulting list I&#8217;ve pulled together is 350+ people and growing in fits and spurts, depending on when I find spots of time.</p>
<p>The great thing, for me, about managing a list like this is:</p>
<ul>
<li>It&#8217;s opt-in &#8211; my main twitter stream isn&#8217;t nearly as noisy or hard to follow</li>
<li>Conversely, it&#8217;s contextual: i see the broad thread of the global conversation and nothing else</li>
<li>It&#8217;s more dynamic than Top 100/200 lists</li>
<li>I get daily emails from it&#8217;s corresponding <a title="Agile, Lean and Scrum News" href="http://paper.li/franklywatson/global-agile-6" target="_blank">paper.li</a> which summarizes all the linked articles from the list, even if i can&#8217;t spend time following the tweet stream</li>
<li>Anyone else can also follow the list</li>
</ul>
<p>The criteria applied to adding to the list is farily loose, but in general terms something like:</p>
<ul>
<li>More than 100 followers</li>
<li>Last 10 tweets refer to #agile, #lean, #scrum , #kanban or #xp, or..</li>
<li>Last 10 tweets shows active participation with someone else in the subject</li>
</ul>
<p>Feel free to <a title="J Pimmel's Global Agile Twitter List" href="https://twitter.com/#!/franklywatson/global-agile-6" target="_blank">check it out and/or subscribe</a> or else suggest people to add to the list!</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2011/06/joining-in-the-global-agile-conversation/"></g:plusone></div><img src="http://feeds.feedburner.com/~r/actualise/tech/~4/OV7ie3CxifI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2011/06/joining-in-the-global-agile-conversation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2011/06/joining-in-the-global-agile-conversation/</feedburner:origLink></item>
		<item>
		<title>Xubuntu 11.04: Rolling back to Xfce</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/LDT43tj88e4/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2011/05/xubuntu-11-04-rolling-back-to-xfce/#comments</comments>
		<pubDate>Wed, 18 May 2011 04:00:36 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[annoyances]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[11.04]]></category>
		<category><![CDATA[natty narwhal]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[xfce]]></category>
		<category><![CDATA[xubuntu]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=667</guid>
		<description><![CDATA[Since Ubuntu released version 11.04 (Natty Narwhal), there&#8217;ve been some complaints about it. It&#8217;s buggy and slow, perhaps it&#8217;s lost it&#8217;s way, and based on my own personal experience upgrading from 10.04 it is indeed a drag&#8230; I&#8217;ve always used Xubuntu, &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2011/05/xubuntu-11-04-rolling-back-to-xfce/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since Ubuntu released version 11.04 (<a title="Ubuntu Releases: Natty Narwhal" href="http://releases.ubuntu.com/natty/" target="_blank">Natty Narwhal</a>), there&#8217;ve been some complaints about it. It&#8217;s <a title="Bupahs: Ubuntu 11.04 - Verdict" href="http://www.bupahs.com/2011/04/ubuntu-1104-part-2.html" target="_blank">buggy and slow</a>, perhaps it&#8217;s <a title="elliotth: Ubuntu, The Rise and Fall" href="http://elliotth.blogspot.com/2011/05/ubuntu-1104.html" target="_blank">lost it&#8217;s way</a>, and based on my own personal experience upgrading from 10.04 it is indeed a drag&#8230; I&#8217;ve always used Xubuntu, so my upgrade didn&#8217;t seem to switch me over to the gleaming new <a title="Ars reviews Unity in Ubuntu 11.04" href="http://arstechnica.com/open-source/reviews/2011/05/riding-the-narwhal-ars-reviews-unity-in-ubuntu-1104.ars/" target="_blank">Unity desktop</a> however I found myself suffering some pretty frustrating performance degradation &#8211; none of which seemed to burn the CPU or cause excessive IO wait. Puzzling.</p>
<p>I attempted to improve matters with some <a title="Ubuntu 11.04 choppy or slow" href="http://www.jondev.net/articles/Ubuntu_11.04_choppy_or_slow" target="_blank">CompizConfig settings changes</a>, although my 4 core desktop still felt like a Pentium 2. Then I found the following article on reverting from <a title="Reverting from Unity Desktop to Classic" href="http://www.liberiangeek.net/2011/05/enable-ubuntu-classic-desktop-in-ubuntu-11-04-natty-narwhal/" target="_blank">Unity Desktop to the Classic</a>.</p>
<p>As an XUbuntu user the &#8216;Login Settings&#8217; screen referred to in the last article isn&#8217;t hidden away much at all, but resides under System -&gt; Login Screen. From there just pick &#8216;Xfce Session&#8217; instead of &#8216;XUbuntu Session&#8217;.</p>
<p>Now it would seem I have my speedy old machine back.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2011/05/xubuntu-11-04-rolling-back-to-xfce/"></g:plusone></div><img src="http://feeds.feedburner.com/~r/actualise/tech/~4/LDT43tj88e4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2011/05/xubuntu-11-04-rolling-back-to-xfce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2011/05/xubuntu-11-04-rolling-back-to-xfce/</feedburner:origLink></item>
		<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. &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/10/10gui-multitouch-to-lust-for/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/10/10gui-multitouch-to-lust-for/"></g:plusone></div><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>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 &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/07/json-webtests-with-grails/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/07/json-webtests-with-grails/"></g:plusone></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>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 &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/07/no-fluff-just-stuff-2009-in-seattle-wa/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/07/no-fluff-just-stuff-2009-in-seattle-wa/"></g:plusone></div><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 &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/07/google-reader-keyboard-shortcuts/">Continue reading <span class="meta-nav">&#8594;</span></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>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/07/google-reader-keyboard-shortcuts/"></g:plusone></div><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 &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/07/viewing-grails-in-memory-hsqldb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/07/viewing-grails-in-memory-hsqldb/"></g:plusone></div><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>7</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/07/viewing-grails-in-memory-hsqldb/</feedburner:origLink></item>
		<item>
		<title>Flickr on DevOps</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[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 &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/06/respect-flickr/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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" allowfullscreen="true" allowscriptaccess="always"></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>
<p><script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;c2=7400849&amp;c3=1&amp;c4=&amp;c5=&amp;c6="></script></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/06/respect-flickr/"></g:plusone></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>
		<item>
		<title>Protectionism in development: An extreme faction</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/pSb4b6gydIc/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/05/protectionism-in-development-an-extreme-faction/#comments</comments>
		<pubDate>Thu, 14 May 2009 15:33:30 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[job protection]]></category>
		<category><![CDATA[low quality]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=455</guid>
		<description><![CDATA[BoingBoing just posted about an analysis of the breathalyzer system written by AlcoTest where the following *stunning* failures were revealed in a report assessing the fitness of the code for a court case: Readings are Not Averaged Correctly: When the &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/05/protectionism-in-development-an-extreme-faction/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>BoingBoing just <a title="Breathlyzer source-code sucks" href="http://www.boingboing.net/2009/05/14/breathlyzer-source-c.html" target="_blank">posted</a> about an analysis of the breathalyzer system written by AlcoTest where the following *stunning* failures were <a title="SUMMARY OF THE SOFTWARE HOUSE FINDINGS FOR THE SOURCE CODE OF THE DRAEGER ALCOTEST 7110 MKIII-C" href="http://www.dwi.com/new-jersey/state-v-chun/" target="_blank">revealed in a report</a> assessing the fitness of the code for a court case:</p>
<ul>
<li><em>Readings are Not Averaged Correctly: When the software takes a series of readings, it first averages the first two readings. Then, it averages the third reading with theaverage just computed. Then the fourth reading is averaged with the new average, and so on. There is no comment or note detailing a reason for this calculation, which would cause the first reading to have more weight than successive readings. Nonetheless, the comments say that the values should be averaged, and they are not.</em></li>
<li><em>Catastrophic Error Detection Is Disabled: An interrupt that detects that the microprocessor is trying to execute an illegal instruction is disabled, meaning that the Alcotest software could appear to run correctly while executing wild branches or invalid code for a period of time. Other interrupts ignored are the Computer Operating Property (a watchdog timer), and the Software Interrupt.</em></li>
<li><em>Code Does Not Detect Data Variations.</em></li>
<li><em>Error Detection Logic: The software design detects measurement errors, but ignores these errors unless they occur a consecutive total number of times. For example, in the airflow measuring logic, if a flow measurement is above the prescribed maximum value, it is called an error, but this error must occur 32 consecutive times for the error to be handled and displayed. This means that the error could occur 31 times, then appear within range once, then appear 31 times, etc., and never be reported. The software uses different criteria values (e.g. 10 instead of 32) for the measurements of the various Alcotest components, but the error detection logic is the same as described.</em></li>
<li><em>Defects In Three Out Of Five Lines Of Code: A universal tool in the open-source community, called Lint, was used to analyze the source code written in C. This program uncovers a range of problems from minor to serious problems that can halt or cripple the program operation. This Lint program has been used for many years. It uncovered that there are 3 error lines for every 5 lines of source code in C.</em></li>
</ul>
<p>Reading the full report is a damning indictment on a piece of software which has failings in so many ways, it&#8217;s hard to believe it even actually got to production. As BoingBoing pointed out the software companies who develop these kinds of systems  (voting machines &amp; breathalyzers) cry foul of &#8216;trade secrets&#8217; at the mention of a review of the source.  This tactic is to software what Monsanto flexes in genetic engineering (interesting that <a title="Pollan calls for Open Source GM" href="http://fora.tv/2009/05/05/Michael_Pollan_Deep_Agriculture#Michael_Pollan_Calls_for_Open_Source_Genetic_Engineering" target="_blank">open-source GM</a> has been mooted).</p>
<p>This rare insight reminded me again why Agile methods, openness and transparency and holding oneself and one another to a high standard of quality are central to knowing you are delivering software which is fit for purpose (at the very least), and which ideally is well made, thoroughly tested and makes both the customer and the developers happy.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/05/protectionism-in-development-an-extreme-faction/"></g:plusone></div><img src="http://feeds.feedburner.com/~r/actualise/tech/~4/pSb4b6gydIc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/05/protectionism-in-development-an-extreme-faction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/05/protectionism-in-development-an-extreme-faction/</feedburner:origLink></item>
		<item>
		<title>Mother and Ubuntu</title>
		<link>http://feedproxy.google.com/~r/actualise/tech/~3/Kma7L1oL8hc/</link>
		<comments>http://act.ualise.com/blogs/continuous-innovation/2009/03/mother-and-ubuntu/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 01:24:59 +0000</pubDate>
		<dc:creator>j pimmel</dc:creator>
				<category><![CDATA[os]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[canonical]]></category>
		<category><![CDATA[silver surfers]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://act.ualise.com/blogs/continuous-innovation/?p=414</guid>
		<description><![CDATA[A fun post by our friend Ivanka who recently joined Canonical to head up the User Experience side, a role which will no doubt prove challenging but has huge potential. Those who&#8217;ve already used Ubuntu, myself included, have something of a &#8230; <a href="http://act.ualise.com/blogs/continuous-innovation/2009/03/mother-and-ubuntu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Canonical" rel="nofollow" src="http://www.ubuntu.com/themes/ubuntu07/images/icon-ubuntu.png" alt="" width="40" height="40" />A fun post by our friend Ivanka who recently joined <a title="Canonical Ltd." href="http://www.canonical.com/" target="_blank">Canonical</a> to head up the User Experience side, a role which will no doubt prove challenging but has huge potential. Those who&#8217;ve already used <a rel="nofollow" title="Ubuntu" href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>, myself included, have something of a love/hate relationship with it; likely this is because we hardcore techies are no longer their target market.</p>
<p>In the spirit of eating dogfood Ivanka steeled herself and installed it as her <a title="Mother and Ubuntu" href="http://www.ivankamajic.com/?p=83" target="_blank" rel="nofollow">mother&#8217;s primary OS</a> FTW!</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://act.ualise.com/blogs/continuous-innovation/2009/03/mother-and-ubuntu/"></g:plusone></div><img src="http://feeds.feedburner.com/~r/actualise/tech/~4/Kma7L1oL8hc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://act.ualise.com/blogs/continuous-innovation/2009/03/mother-and-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://act.ualise.com/blogs/continuous-innovation/2009/03/mother-and-ubuntu/</feedburner:origLink></item>
	</channel>
</rss>

