<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>CITCON Blog Aggregator</title>
      <description>Aggregates the blogs from various CITCON participants, and filters out the dupes amongst them. Filters out posts not related to CI &amp; Testing.</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=b787fd1ec5db6b74feb6129e9d55dfe8</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=b787fd1ec5db6b74feb6129e9d55dfe8&amp;_render=rss&amp;page=2" />
      <pubDate>Mon, 20 May 2013 11:29:56 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CitconBlogs" /><feedburner:info uri="citconblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>ElasticSearch on EC2 in less than 60 seconds</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/Ujk-OCIojkA/</link>
         <description>&lt;p&gt;&lt;img class="left" src="http://aglover.github.com/images/mine/es-bonzai.jpg"&gt;Curious to see what all the &lt;a rel="nofollow" target="_blank" href="http://www.elasticsearch.org/"&gt;ElasticSearch&lt;/a&gt; hubbub is about? Wanna see it in action without a lot of elbow grease? Then look no further, friend &amp;#8211; in less than 60 seconds, I&amp;#8217;ll show you how to install &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/java/library/j-javadev2-24/"&gt;ElasticSearch&lt;/a&gt; on an &lt;a rel="nofollow" target="_blank" href="http://aws.amazon.com/"&gt;AWS AMI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You&amp;#8217;ll first &lt;a rel="nofollow" target="_blank" href="http://www.drdobbs.com/web-development/getting-started-with-the-cloud-amazon-we/231601598"&gt;need an AWS account&lt;/a&gt; along with an SSH key pair. If you don&amp;#8217;t already have those two steps done, go ahead and do that. The steps that follow suggest a particular AMI; however, you are free to select the &lt;a rel="nofollow" target="_blank" href="http://aws.amazon.com/ec2/instance-types/"&gt;instance type&lt;/a&gt;. &lt;a rel="nofollow" target="_blank" href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html"&gt;Micro instance types&lt;/a&gt; are free to use; consequently, you can get &lt;a rel="nofollow" target="_blank" href="http://thediscoblog.com/blog/2013/05/14/the-democratization-of-search/"&gt;up and running with ElasticSearch&lt;/a&gt; in less than a minute &lt;em&gt;for free&lt;/em&gt;.&lt;/p&gt;




&lt;p&gt;Now that you&amp;#8217;ve got an &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/web/library/j-s3/"&gt;AWS&lt;/a&gt; account and an SSH key pair, go ahead and create a new security group (or edit an existing one). It&amp;#8217;s important that the &lt;a rel="nofollow" target="_blank" href="http://www.elasticsearch.org/tutorials/elasticsearch-on-ec2/"&gt;following ports&lt;/a&gt; are open:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;22 (required for SSH)&lt;/li&gt;
&lt;li&gt;80 (ElasticSearch uses HTTP for standard API calls)&lt;/li&gt;
&lt;li&gt;9200 (required for ElasticSearch)&lt;/li&gt;
&lt;li&gt;9300 (required for ElasticSearch)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Next, fire up a Linux AMI. I, for example, prefer &lt;a rel="nofollow" target="_blank" href="http://cloud-images.ubuntu.com/locator/ec2/"&gt;ami-c30360aa&lt;/a&gt; (this is Ubuntu Server version 13.04) and I configure the AMI to use the security group that I just covered.&lt;/p&gt;

&lt;p&gt;Now, SSH to your newly instantiated AMI.  Once on the AMI, you&amp;#8217;ll need to install Java. Never fear though, I&amp;#8217;ve got you covered. All you need to do is run a handy script via the &lt;a rel="nofollow" target="_blank" href="https://github.com/aglover/ubuntu-equip"&gt;Ubuntu-Equip project&lt;/a&gt;, that I use frequently just for this sorta thing:&lt;/p&gt;

&lt;span&gt;installing Java&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;wget --no-check-certificate https://github.com/aglover/ubuntu-equip/raw/master/equip_java.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash equip_java.sh
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;You&amp;#8217;ll need to accept the license from Oracle. Once that script completes, go ahead and type  &lt;code&gt;java -version&lt;/code&gt; and you should see Oracle&amp;#8217;s JDK (i.e Java version &amp;#8220;1.7.0_21&amp;#8221;).&lt;/p&gt;

&lt;p&gt;Next, download and install ElasticSearch via another nifty &lt;a rel="nofollow" target="_blank" href="https://github.com/aglover/ubuntu-equip"&gt;Ubuntu-Equip&lt;/a&gt; script:&lt;/p&gt;

&lt;span&gt;installing elasticsearch&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;wget --no-check-certificate https://github.com/aglover/ubuntu-equip/raw/master/equip_elasticsearch.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash equip_elasticsearch.sh
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;This script doesn&amp;#8217;t start ElasticSearch for you; thus, go ahead and change directories into the &lt;code&gt;elasticsearch&lt;/code&gt; directory and fire it up like so:&lt;/p&gt;

&lt;span&gt;starting elasticsearch&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;~/elasticsearch&lt;span class="nv"&gt;$ &lt;/span&gt;bin/elasticsearch -f
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;Take a deep breath (but not too deep, as I need you to finish in less than 60 seconds) and find the Public DNS of the AMI you&amp;#8217;ve been working on. Go ahead and copy it, then fire up a browser on your local machine and go to http://YOUR_AMI_DNS_NAME.com:9200/_plugin/inquisitor/ (be sure to note the port).&lt;/p&gt;

&lt;p&gt;By the way, &lt;a rel="nofollow" target="_blank" href="https://github.com/polyfractal/elasticsearch-inquisitor"&gt;Inquisitor&lt;/a&gt; is a handy web application that lets you query your indexes. It was installed via the Ubuntu-Equip script &amp;#8211; this tool is invaluable in figuring out how to properly query your indexes.&lt;/p&gt;

&lt;p&gt;And that is it. In less than 60 seconds you&amp;#8217;ve got ElasticSearch running in the cloud for you. Want to create a cluster? No problem, just follow these steps again to fire up another ElasticSearch instance and then &lt;a rel="nofollow" target="_blank" href="http://www.elasticsearch.org/videos/three-nodes-and-one-cluster/"&gt;configure the cluster accordingly&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve not gone over &lt;a rel="nofollow" target="_blank" href="http://www.elasticsearch.org/guide/reference/setup/configuration/"&gt;configuring ElasticSearch&lt;/a&gt; nor have I showed you how to create ElasticSearch as a service on a Linux instance, but for one minute, what do you expect?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/Ujk-OCIojkA" height="1" width="1"/&gt;</description>
         <author />
         <guid isPermaLink="false">http://aglover.github.com/blog/2013/05/17/elasticsearch-on-ec2-in-less-than-60-seconds</guid>
         <pubDate>Fri, 17 May 2013 21:24:00 +0000</pubDate>
      <feedburner:origLink>http://aglover.github.com/blog/2013/05/17/elasticsearch-on-ec2-in-less-than-60-seconds/</feedburner:origLink></item>
      <item>
         <title>Maintaining Play Framework 2.0.x with Select Backports from 2.1.x</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/-V8_AdwfHTE/</link>
         <description>tl;dr - Our fork of Play 2.0.x with select backports from 2.1.x is available here (pre-built packages here). Overall, we&amp;#8217;ve had a great experience at TIM Group (f/k/a youDevise) developing new applications for the financial world using the Play Framework in Scala. It &amp;#8230; &lt;a rel="nofollow" target="_blank" href="https://devblog.timgroup.com/2013/05/16/maintaining-play-framework-2-0-x-with-select-backports-from-2-1-x/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;</description>
         <author>Marc SiegelMarc Siegel</author>
         <guid isPermaLink="false">https://devblog.timgroup.com/?p=517</guid>
         <pubDate>Thu, 16 May 2013 16:03:57 +0000</pubDate>
         <content:encoded><![CDATA[<p><strong>tl;dr</strong> - Our fork of Play 2.0.x with select backports from 2.1.x is <a rel="nofollow" target="_blank" href="https://github.com/youdevise/Play20">available here</a> (pre-built packages <a rel="nofollow" target="_blank" href="https://github.com/youdevise/Play20/tree/packages-2.0.x-yd">here</a>).</p>
<p>Overall, we&#8217;ve had a great experience at <a rel="nofollow" target="_blank" href="http://timgroup.com/">TIM Group</a> (f/k/a youDevise) developing new applications for the financial world using the <a rel="nofollow" target="_blank" href="http://www.playframework.com/">Play Framework</a> in <a rel="nofollow" target="_blank" href="http://www.scala-lang.org/">Scala</a>. It has allowed us to rapidly iterate new products, without sacrificing virtues such as production-quality performance and test coverage, and allowed us to introduce new and robust approaches to asynchronous programming (Futures and Actors).</p>
<p>However, there has been one sore spot: there have been no official releases in the 2.0.x series since <a rel="nofollow" target="_blank" href="https://groups.google.com/forum/?fromgroups=#!topic/play-framework/e16pHojeSvs">2.0.4 on 1-Oct-2012</a>.</p>
<p>As is often the case with new, exciting, open-source software, there are a lot of changes between 2.0.x and 2.1.x. In order to migrate a product, for example, <a rel="nofollow" target="_blank" href="https://github.com/playframework/Play20/blob/master/documentation/manual/Migration.md">one must switch Scala versions and port all JSON serialization to a new interface</a>, among other changes.</p>
<p>We&#8217;re planning to make these changes to our apps and libraries over the coming months. In the meantime, we&#8217;ve begun to maintain a set of backports of features and fixes that we need:</p>
<ul>
<li><span style="line-height:15px;">Fix for <a rel="nofollow" target="_blank" href="http://play.lighthouseapp.com/projects/82401-play-20/tickets/692">#692</a> Jaxen / maven-cobertura-plugin dependency error</span></li>
<li>Fix for <a rel="nofollow" target="_blank" href="http://play.lighthouseapp.com/projects/82401-play-20/tickets/470">#470</a> Deadlock in DEV mode</li>
<li>Fix for <a rel="nofollow" target="_blank" href="http://play.lighthouseapp.com/projects/82401-play-20/tickets/158">#158</a> GZip all output, not only static files</li>
<li>Fix for <a rel="nofollow" target="_blank" href="http://play.lighthouseapp.com/projects/82401-play-20/tickets/632">#632</a> Stop plugins in reverse order that they were started</li>
<li>Make WS timeout configurable per request</li>
<li>Update <a rel="nofollow" target="_blank" href="https://github.com/FluentLenium/FluentLenium">FluentLenium</a> dependency to 0.8.0</li>
</ul>
<p>In case this set of backports is useful to others, our fork is <a rel="nofollow" target="_blank" href="https://github.com/youdevise/Play20">available here</a>, with pre-built binary packages on an orphan branch <a rel="nofollow" target="_blank" href="https://github.com/youdevise/Play20/tree/packages-2.0.x-yd">here</a>.</p><img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/-V8_AdwfHTE" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>https://devblog.timgroup.com/2013/05/16/maintaining-play-framework-2-0-x-with-select-backports-from-2-1-x/</feedburner:origLink></item>
      <item>
         <title>Conference appearances, 2013</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/Wb1_FLkW_p8/</link>
         <description>My blogging break has been so long, I feel like a vampire emerging from the grave in a Hammer Horror film. I&amp;#8217;m interrupting my relentless working day to announce that I&amp;#8217;ll be at: ASWEC 2013 &amp;#8211; I&amp;#8217;ll be presenting the Neo4j Tutorial on the 4th of June Agile Australia &amp;#8211; I&amp;#8217;ll be doing a talk [...]&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.build-doctor.com/2013/05/14/conference-appearances-2013/"&gt;Conference appearances, 2013&lt;/a&gt; is a post from: &lt;a rel="nofollow" target="_blank" href="http://www.build-doctor.com"&gt;The Build Doctor&lt;/a&gt;.  Sponsored by &lt;a rel="nofollow" target="_blank" href="http://www.anthillpro.com/html/products/anthillpro/default.html?utm_source=doctor&amp;utm_medium=rss&amp;utm_campaign=sponsor"&gt;AnthillPro&lt;/a&gt;, the build and deployment automation server that lets you release with confidence.&lt;/p&gt;</description>
         <author>Julian SimpsonJulian Simpson</author>
         <guid isPermaLink="false">http://www.build-doctor.com/?p=2792</guid>
         <pubDate>Tue, 14 May 2013 05:27:33 +0000</pubDate>
         <content:encoded><![CDATA[<p>My blogging break has been so long, I feel like a vampire emerging from the grave in a Hammer Horror film.</p>
<p>I&#8217;m interrupting my relentless working day to announce that I&#8217;ll be at:</p>
<ul>
<li><span style="line-height:13px;"><a rel="nofollow" target="_blank" href="http://aswec2013.ict.swin.edu.au/">ASWEC 2013</a> &#8211; I&#8217;ll be presenting the Neo4j Tutorial on the 4th of June</span></li>
<li><a rel="nofollow" target="_blank" href="http://www.agileaustralia.com.au/index.php">Agile Australia</a> &#8211; I&#8217;ll be doing a talk that mixes up Cloud, PaaS, Devops and NoSQL.  Bingo!</li>
<li>I&#8217;ve proposed a talk for <a rel="nofollow" target="_blank" href="http://www.agileaustralia.com.au/index.php">DevOps Down Under</a> in July</li>
<li>I&#8217;ll also be at <a rel="nofollow" target="_blank" href="http://www.graphconnect.com/san-francisco/">Graph Connect San Francisco</a></li>
</ul>
<p>Back to flogging Ruby code.</p>
<p><a rel="nofollow" target="_blank" href="http://www.build-doctor.com/2013/05/14/conference-appearances-2013/">Conference appearances, 2013</a> is a post from: <a rel="nofollow" target="_blank" href="http://www.build-doctor.com">The Build Doctor</a>.  Sponsored by <a rel="nofollow" target="_blank" href="http://www.anthillpro.com/html/products/anthillpro/default.html?utm_source=doctor&utm_medium=rss&utm_campaign=sponsor">AnthillPro</a>, the build and deployment automation server that lets you release with confidence.</p>
<div class="feedflare">
<a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/TheBuildDoctor?a=H9gmgP1wiJM:wGas-bWkEK0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheBuildDoctor?d=yIl2AUoC8zA" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/TheBuildDoctor?a=H9gmgP1wiJM:wGas-bWkEK0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TheBuildDoctor?i=H9gmgP1wiJM:wGas-bWkEK0:F7zBnMyn0Lo" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/TheBuildDoctor?a=H9gmgP1wiJM:wGas-bWkEK0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TheBuildDoctor?i=H9gmgP1wiJM:wGas-bWkEK0:V_sGLiPBpWU" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/TheBuildDoctor?a=H9gmgP1wiJM:wGas-bWkEK0:ZWQ2tSG2k2o"><img src="http://feeds.feedburner.com/~ff/TheBuildDoctor?d=ZWQ2tSG2k2o" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/TheBuildDoctor?a=H9gmgP1wiJM:wGas-bWkEK0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/TheBuildDoctor?d=I9og5sOYxJI" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/TheBuildDoctor?a=H9gmgP1wiJM:wGas-bWkEK0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TheBuildDoctor?i=H9gmgP1wiJM:wGas-bWkEK0:gIN9vFwOqvQ" border="0"></a>
</div><img src="http://feeds.feedburner.com/~r/TheBuildDoctor/~4/H9gmgP1wiJM" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/Wb1_FLkW_p8" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://feedproxy.google.com/~r/TheBuildDoctor/~3/H9gmgP1wiJM/</feedburner:origLink></item>
      <item>
         <title>Hold your horses! It's still only a two horse race.</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/qJU4p8AHJzw/</link>
         <description>&lt;p&gt;&lt;img class="left" src="http://aglover.github.com/images/mine/2horsesracesm.jpg"&gt;There has been a lot of excitement in recent months regarding a few new entrants to the mobile operating systems arena including &lt;a rel="nofollow" target="_blank" href="http://www.mozilla.org/en-US/firefox/partners/"&gt;Firefox OS&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="https://www.tizen.org/"&gt;Tizen&lt;/a&gt;, and &lt;a rel="nofollow" target="_blank" href="https://wiki.ubuntu.com/Touch"&gt;Ubuntu Touch&lt;/a&gt;. These relatively nascent projects, which are all built on top of a Linux kernel, appear to have fully embraced HTML 5 apps; indeed, HTML 5 apps on these operating systems are first class citizens that can run without a browser. Moreover, the ubiquity of HTML 5 means the same app can run on all 3 of these operating systems plus Android and iOS!&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s also exciting is that there are some major players behind these projects &amp;#8211; Mozilla is, of course behind Firefox OS, Canonical is behind Ubuntu Touch, and quite a few large players are behind Tizen, including Samsung. &lt;a rel="nofollow" target="_blank" href="http://www.forbes.com/sites/haydnshaughnessy/2013/04/13/how-mozillas-firefox-os-will-open-up-the-smartphone-market/"&gt;Firefox OS even appears to be courting carriers with an opportunity to run their own app stores&lt;/a&gt;. This app store opportunity naturally has carriers foaming at the mouth to re-assert some semblance of control: behold the Verizon app store! All apps are $0.99 and we&amp;#8217;ll just bill you at the end of the month (like we used to do for all those ringtones you were accustomed to download back when we were in control of all things device-related before Apple destroyed that cash cow).&lt;/p&gt;




&lt;p&gt;Naturally, we&amp;#8217;re all eager to see how these new entrants fair. It reminds me of how interested I was in learning more about &lt;a rel="nofollow" target="_blank" href="http://www.windowsphone.com/en-us/how-to/wp8/start/whats-new-in-windows-phone"&gt;Windows Phone 8&lt;/a&gt; and even &lt;a rel="nofollow" target="_blank" href="http://global.blackberry.com/blackberry-10.html"&gt;Blackberry&amp;#8217;s latest and greatest attempt&lt;/a&gt; at regaining some composure.&lt;/p&gt;

&lt;p&gt;But then I remember this stunning fact: Apple and Google&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;together control nearly 9 out of 10 smartphones sold globally.&lt;/p&gt;&lt;strong&gt;Tomi Ahonen&lt;/strong&gt; &lt;cite&gt;&lt;a rel="nofollow" target="_blank" href='http://www.forbes.com/sites/haydnshaughnessy/2013/04/09/ios-vs-android-can-competitors-break-apple-and-googles-stranglehold/'&gt;Can These Competitors Break Apple and Google&amp;#8217;s Stranglehold on the Mobile OS?&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt; 


&lt;p&gt;Even with industry heavyweight contenders (who are not new to mobile!) like &lt;a rel="nofollow" target="_blank" href="http://www.windowsphone.com/en-us"&gt;Microsoft&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://us.blackberry.com/"&gt;Blackberry&lt;/a&gt; (who, we all should remember, &lt;em&gt;owned&lt;/em&gt; the smartphone market before Apple got involved) haven&amp;#8217;t really made a dent. Granted, it&amp;#8217;s early to rush to conclusions, however, preliminary signs don&amp;#8217;t bode well for either company.&lt;/p&gt;

&lt;p&gt;The co-CEO of Samsung had some stinging criticism for Microsoft:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Smartphones and tablets based on Microsoft&amp;#8217;s Windows operating system aren&amp;#8217;t selling very well. There is a preference in the market for Android. In Europe, we&amp;#8217;re also seeing lackluster demand for Windows-based products.&lt;/p&gt;&lt;strong&gt;JK Shin&lt;/strong&gt; &lt;cite&gt;&lt;a rel="nofollow" target="_blank" href='http://www.theverge.com/2013/3/15/4106980/samsung-ceo-jk-shin-says-windows-isnt-selling-very-well'&gt;New Samsung CEO Says There Is &amp;#8216;Lackluster Demand&amp;#8217; for Windows Tablets and Phones&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt; 


&lt;p&gt;Blackberry appears to have some demand in the UK and Canada, a recently analyst T. Michael Walkley had this to say:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;While we anticipate stronger near-term results for BlackBerry as higher margin BB10 smartphones sell into the channel, we do not believe BlackBerry can achieve sell-through market share levels to return to sustained profit levels&lt;/p&gt;&lt;strong&gt;T. Michael Walkley&lt;/strong&gt; &lt;cite&gt;&lt;a rel="nofollow" target="_blank" href='http://business.financialpost.com/2013/05/06/blackberry-estimates-cut-despite-q10-strength-likely-offsetting-z10-weakness/'&gt;BlackBerry Sales Forecast Cut Despite Strong Demand for Q10&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt; 


&lt;p&gt;The salient point, nevertheless, is that neither Microsoft or Blackberry have yet to make a dent into the Google-Apple duopoly. And so while it&amp;#8217;s easy to get excited about new entrants like Ubuntu Touch, the reality, at least for the time being, is that these operating systems will have little impact in the smartphone market.&lt;/p&gt;

&lt;p&gt;After all, when your competition essentially owns 9 out of every 10 smartphones, evolutionary enhancements aren&amp;#8217;t enough to break that stranglehold: you have to do something &lt;em&gt;revolutionary&lt;/em&gt;. Besides, we&amp;#8217;ve already seen this before: the iPhone was not an evolutionary offshoot of the Blackberry. It was revolutionary. Sadly, neither Ubuntu Touch, Tizen, nor Firefox OS appear revolutionary.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/qJU4p8AHJzw" height="1" width="1"/&gt;</description>
         <author />
         <guid isPermaLink="false">http://aglover.github.com/blog/2013/05/09/hold-your-horses-its-still-only-a-two-horse-race</guid>
         <pubDate>Thu, 09 May 2013 16:49:00 +0000</pubDate>
      <feedburner:origLink>http://aglover.github.com/blog/2013/05/09/hold-your-horses-its-still-only-a-two-horse-race/</feedburner:origLink></item>
      <item>
         <title>Two ways to react</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/uPWqFU1MlHQ/</link>
         <description>&lt;p&gt;Every organisation that makes software, makes mistakes. Sometimes, despite everybody&amp;#8217;s best efforts, you end up releasing a bug into production. Customers are confused and angry; stakeholders are panicking.&lt;/p&gt;

&lt;p&gt;Despite the pressure, you knuckle down and fix the bug.&lt;/p&gt;

&lt;p&gt;Now it gets interesting: you have to deploy your fix to production. Depending on how your organisation works, this could take anywhere between a couple of minutes and a couple of weeks. You might simply run a single command, or you might spend hours shuffling emails around between different managers trying to get your change signed off. Meanwhile, your customers are still confused and angry. Perhaps they&amp;#8217;ve started leaving you for your competitors. Perhaps you feel like leaving your job.&lt;/p&gt;

&lt;p&gt;With the bug fixed, you sit down and try to learn some lessons. What can you do to avoid this from happening again?&lt;/p&gt;

&lt;p&gt;There are two very different ways you can react to this kind of incident. The choice you make speaks volumes about your organisation.&lt;/p&gt;

&lt;h2&gt;Make it harder to make mistakes&lt;/h2&gt;

&lt;p&gt;A typical response to this kind of incident is to go on the defensive. Add more testing phases, hire more testers. Introduce mandatory code review into the development cycle. Add more bureaucracy to the release cycle, to make sure nobody could ever release buggy code into production again.&lt;/p&gt;

&lt;p&gt;This is a reaction driven by fear.&lt;/p&gt;

&lt;h2&gt;Make it easier to fix mistakes&lt;/h2&gt;

&lt;p&gt;The alternative is to accept the reality. People will always make mistakes, and mistakes will sometimes slip through. From that perspective, it&amp;#8217;s clear that what matters is to &lt;em&gt;make it easier to fix your mistakes&lt;/em&gt;. This means cutting down on bureaucracy, and trusting developers to have access to their production environments. It means investing in test automation, to allow code to be tested quickly, and building continuous delivery pipelines to make releases happen at the push of a button.&lt;/p&gt;

&lt;p&gt;This is a reaction driven by courage.&lt;/p&gt;

&lt;p&gt;I know which kind of organisation I&amp;#8217;d like to work for.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/uPWqFU1MlHQ" height="1" width="1"/&gt;</description>
         <author>Matt</author>
         <guid isPermaLink="false">http://blog.mattwynne.net/?p=520</guid>
         <pubDate>Thu, 09 May 2013 11:37:45 +0000</pubDate>
      <feedburner:origLink>http://blog.mattwynne.net/2013/05/09/two-ways-to-react/</feedburner:origLink></item>
      <item>
         <title>The Rails, CloudFront, and Heroku performance hat-trick</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/fYbnYW4yRoY/</link>
         <description>&lt;p&gt;&lt;img class="right" src="http://aglover.github.com/images/mine/hat-trick.png"&gt;&lt;a rel="nofollow" target="_blank" href="http://aws.amazon.com/cloudfront/"&gt;Amazon CloudFront&lt;/a&gt; is a pay-as-you-go global &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Content_delivery_network"&gt;content delivery network&lt;/a&gt; (or CDN) that provides high availability and high performance serving of static assets. Basically, it means users have to wait less time to view your web app regardless of their location on the globe.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s easy to configure a &lt;a rel="nofollow" target="_blank" href="http://rubyonrails.org/"&gt;Rails&lt;/a&gt; app to take advantage of CloudFront; what&amp;#8217;s more, if your Rails app is hosted on &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/java/library/j-javadev2-21/"&gt;Heroku&lt;/a&gt;, there&amp;#8217;s &lt;a rel="nofollow" target="_blank" href="https://github.com/romanbsd/heroku-deflater"&gt;a nifty gem&lt;/a&gt;, dubbed heroku-deflater, that&amp;#8217;ll enable &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/HTTP_compression"&gt;HTTP compression&lt;/a&gt; of static assets (&lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/12326191/any-way-to-serve-gzip-assets-from-heroku"&gt;other than images&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;To get these three entities to play nicely together requires a few simple steps. Let me show you how.&lt;/p&gt;




&lt;p&gt;First, if you want to enable HTTP gzip compression of static assets other than images from a Heroku app, then add the heroku-deflater gem to your &lt;code&gt;Gemfile&lt;/code&gt;. This gem doesn&amp;#8217;t compress images as in some cases, zipping images creates bigger ones!&lt;/p&gt;

&lt;p&gt;Once you&amp;#8217;ve run &lt;code&gt;bundle install&lt;/code&gt; and deployed your app to Heroku, fire up a terminal and run &lt;code&gt;[cURL](http://thediscoblog.com/blog/2013/04/18/curling-for-wget/)&lt;/code&gt; to verify that the HTTP response Content-Encoding is gzip like so:&lt;/p&gt;

&lt;span&gt;cURL testing gzip response&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;curl -i -H &lt;span class="s2"&gt;&amp;quot;Accept-Encoding: gzip,deflate&amp;quot;&lt;/span&gt; http://your.awesome.web.app
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;You should see in the response this key phrase:&lt;/p&gt;

&lt;span&gt;cURL response&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;Content-Encoding: gzip
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;If you do see the Content-Encoding set to gzip, then you are good to go. If, for some reason, you don&amp;#8217;t see it, check your environment&amp;#8217;s configuration file (which you will have to edit to get CloudFront working anyway) and verify that the property &lt;code&gt;config.serve_static_assets&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Next, sign into the AWS Management Console and enable CloudFront if you haven&amp;#8217;t already. From the CloudFront admin page, create a new distribution via the Create Distribution button on the top left.&lt;/p&gt;

&lt;p&gt;&lt;img class="center" src="http://aglover.github.com/images/mine/cloudfront_1.png"&gt;&lt;/p&gt;

&lt;p&gt;Once the create distribution wizard begins, be sure to select Download as your delivery method.&lt;/p&gt;

&lt;p&gt;&lt;img class="center" src="http://aglover.github.com/images/mine/cloudfront_2.png"&gt;&lt;/p&gt;

&lt;p&gt;In the next screen, there are some important fields you&amp;#8217;ll need to fill out, namely: the Origin Source Name and the Viewer Protocol Policy. For the Origin Source Name, you will need to put in your app&amp;#8217;s URL or the Heroku URL (if you do not map a custom domain name to it). If you web site supports HTTPS, then be sure to set the Viewer Protocol Policy to HTTP and HTTPS.&lt;/p&gt;

&lt;p&gt;&lt;img class="center" src="http://aglover.github.com/images/mine/cloudfront_3.png"&gt;&lt;/p&gt;

&lt;p&gt;The only other important setting after these two is the Price Class. It&amp;#8217;s here where you can set where CloudFront will essentially serve up your content &amp;#8211; the default setting of Use All Edge Locations is most likely what you need.&lt;/p&gt;

&lt;p&gt;&lt;img class="center" src="http://aglover.github.com/images/mine/cloudfront_5.png"&gt;&lt;/p&gt;

&lt;p&gt;Finally, click the Create Distribution button &amp;#8211; once you do that, it&amp;#8217;ll take a bit for things to initialize (basically, the CDN needs to get built and this may take up to 30 minutes).&lt;/p&gt;

&lt;p&gt;Now to configure your Rails app, you&amp;#8217;ll need to open up your target environment&amp;#8217;s configuration file (i.e. &lt;code&gt;production.rb&lt;/code&gt;). The &lt;a rel="nofollow" target="_blank" href="http://bindle.me/blog/index.php/395/caches-cdns-and-heroku-cedar"&gt;two fields&lt;/a&gt; you&amp;#8217;ll want to be sure are properly set are &lt;code&gt;serve_static_assets&lt;/code&gt; and &lt;code&gt;static_cache_control&lt;/code&gt;. In particular, you are setting the cache control variable to one year. This means that once a static asset, like a JavaScript file is downloaded to the browser, it&amp;#8217;ll be cached for one year. Don&amp;#8217;t fret, however, if you think that&amp;#8217;ll inhibit change &amp;#8211; the file that is ultimately downloaded has a hash attached to it (via the magic of &lt;a rel="nofollow" target="_blank" href="http://guides.rubyonrails.org/asset_pipeline.html"&gt;Rail&amp;#8217;s Asset Pipeline&lt;/a&gt;). Consequently, the file that is cached is something like &lt;code&gt;your_js_file-asdf098203820980a980&lt;/code&gt; where that last bit is a hash value that&amp;#8217;ll change if the file itself changes.&lt;/p&gt;

&lt;span&gt;production.rb edited to support CDN&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;serve_static_assets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;static_cache_control&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;public, max-age=31536000&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;The last change you need to make to your environment file is to set the &lt;code&gt;asset_host&lt;/code&gt; to the CloudFront domain that you just created. You can find this in your AWS Management Console &amp;#8211; it&amp;#8217;ll be a cryptic URL like http://asdjlkj2321.cloudfront.net.&lt;/p&gt;

&lt;span&gt;production.rb edited to support asset host&lt;/span&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;action_controller&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;asset_host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;the domain name from AWS Dashboard&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt; 


&lt;p&gt;Commit your changes and deploy your app.&lt;/p&gt;

&lt;p&gt;To verify things are kosher, you&amp;#8217;ll need to give it some time (check the status of your CloudFront CDN &amp;#8211; if it&amp;#8217;s status is Enabled then you are good to go!). If things are ready, then fire up a browser and go to your app.&lt;/p&gt;

&lt;p&gt;In this case, &lt;a rel="nofollow" target="_blank" href="http://thediscoblog.com/blog/2013/04/15/chromes-console-commands/"&gt;I&amp;#8217;m using Chrome&lt;/a&gt;. Go to JavaScript console and hit the Network tab.&lt;/p&gt;

&lt;p&gt;&lt;img class="center" src="http://aglover.github.com/images/mine/cloudfront_6.png"&gt;&lt;/p&gt;

&lt;p&gt;Surf around and you&amp;#8217;ll note a few things &amp;#8211; one, that the assets like images and JavaScript files are being severed up from your CDN (just look at the URL) and that the size will often say &amp;#8220;(from cache)&amp;#8221; &amp;#8211; that means the CDN is handling the load rather than &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/podcast/glover-heroku-110811/"&gt;Heroku&lt;/a&gt;. You should also note that your web app is probably a bit more snappy!&lt;/p&gt;

&lt;p&gt;&lt;img class="center" src="http://aglover.github.com/images/mine/cloudfront_7.png"&gt;&lt;/p&gt;

&lt;p&gt;Check out your Heroku logs and you&amp;#8217;ll note fewer hits in this case &amp;#8211; dynamic pages are still being loaded, however, static assets are not anymore &amp;#8211; that&amp;#8217;s the job of your CDN!&lt;/p&gt;

&lt;p&gt;CloudFront isn&amp;#8217;t free; nevertheless, I think you&amp;#8217;ll find the corresponding cost quite reasonable. Pricing will vary depending on how much content you&amp;#8217;ll be serving up with CloudFront &amp;#8211; this is a function of how many visitors you have &lt;em&gt;along with&lt;/em&gt; how many static assets that are ultimately downloaded to a user&amp;#8217;s browser. For instance, 500GB of average content will cost you less than $75/month.&lt;/p&gt;

&lt;p&gt;CloudFront&amp;#8217;s pay-as-you-go model makes it extremely affordable to add a nice bit of pep to your app&amp;#8217;s performance along with using gzip compression and HTTP caching. And hopefully as I&amp;#8217;ve shown you, it&amp;#8217;s rather easy to do with a Rails app running on Heroku.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/fYbnYW4yRoY" height="1" width="1"/&gt;</description>
         <author />
         <guid isPermaLink="false">http://aglover.github.com/blog/2013/05/01/the-rails-cloudfront-and-heroku-performance-hat-trick</guid>
         <pubDate>Wed, 01 May 2013 13:10:00 +0000</pubDate>
      <feedburner:origLink>http://aglover.github.com/blog/2013/05/01/the-rails-cloudfront-and-heroku-performance-hat-trick/</feedburner:origLink></item>
      <item>
         <title>Kanban in Practice</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/ATAbQYsHGA0/kanban-in-practice.html</link>
         <description>In this posting I talk about my experience using Kanban, why it worked and what is required to make the use of Kanban successful in software development companies. A few things motivated me to write this long overdue posting (sorry &lt;a rel="nofollow" target="_blank" href="http://twitter.com/amazonv"&gt;@amazonv&lt;/a&gt;), specifically a discussion that I had at a recent Meetup group and also that we are thinking about adopting Kanban at &lt;a rel="nofollow" target="_blank" href="http://www.dealeron.com/"&gt;DealerOn&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;This experience goes back to my tenure at &lt;a rel="nofollow" target="_blank" href="http://www.apprenda.com/"&gt;Apprenda&lt;/a&gt;, where we had successfully adopted and utilized classic Agile development practices. We adhered to a two week iteration cycle, and produced fully tested, releasable packages every iteration though we didn't necessarily release every package to the public. While at Apprenda I&amp;nbsp;served as the&amp;nbsp;Test / Release Manager and so some thoughts are from that perspective as well.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why we tried Kanban&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I first heard about Kanban at a conference, and around the same time my colleagues &lt;a rel="nofollow" target="_blank" href="http://twitter.com/B9re9orius"&gt;Bryan&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://twitter.com/dturkenk"&gt;Dan&lt;/a&gt; begun to advocate for it, and finally we gave it a try at the beginning of a major release cycle. There were a couple of reasons why we liked Kanban even though nothing was really "broken" with the Agile cycle:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Too much work tracking metrics for too little benefit&lt;/li&gt;&lt;li&gt;The two week cycle was jarring, providing an inconsistent workload throughout the cycle&lt;/li&gt;&lt;/ul&gt;With Agile we spent a lot of time tracking velocity and attempting to produce accurate and reliable forecasts for the business. We never were particularly good at producing&amp;nbsp;forecasts for the business owner despite all of the time spent trying to do so, but no one noticed anyway&amp;nbsp;because the forecasts were disregarded since we&amp;nbsp;were a startup and change our mind all the time. We ended up manipulating the numbers to make ourselves look productive, and it worked fine for the most part. But one thing was always true: no matter what the velocity, we'd work on the highest priority items and try to release it as soon as possible. The forecasts, quite frankly, were not that useful for any sort of long term planning.&lt;br /&gt;&lt;br /&gt;In Kanban, everyone&amp;nbsp;works on the next highest priority item as determined by the business. When the release date comes, the highest priority items that could successfully be completed by the team during the release cycle are done. In otherwords the business got what the team was capable of producing at the time. &lt;br /&gt;&lt;br /&gt;Another issue we had with our classic&amp;nbsp;Agile approach was due&amp;nbsp;to our&amp;nbsp;strict two week iteration cycle. This was rather jarring for the team. The burden was on development at the beginning of the iteration, and it transfered to the testing team near the end of the cycle. I can remember basically blocking every other Wednesday and Thursday evening to stay late to "test stuff" and rush for basically what amounts to be a false-deadline since we would not actually release every Friday. &lt;br /&gt;&lt;br /&gt;In Kanban, the cycle goes away. The work load is evenly distributed all throughout because there is no start and finish officially defined. There are work limiters for each phase&amp;nbsp;which help prevent the sub-teams from being overburdened. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What about the ceremonies?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Rather than have one of the many "agile ceremonies" for the sake of having it on a schedule, you have them when you need them. If you have a cool new feature to show, schedule a showcase. If you need to plan out a feature implementation, gather the team and conduct a planning meeting. The benefit is the meetings are shorter and more focused. Gone are the 5-minute showcases with nothing but a half-finished feature and bug fixes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What enables&amp;nbsp;Kanban to work?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A major risk to a Kanban team is producing unstable software. Since there is no end to an iteration where the software is tested and stabilized, this has to be enforced in a different way. As a part of the adoption of Kanban at Apprenda, we implemented a policy of requiring a 100% stable trunk. Features were tested and stablized on independent branches (we used Mecurial as a DVCS) and we made the appropriate investment in our testing infrastructure to be able to automatically deploy and run regression tests on all feature branches.&amp;nbsp;This was no small effort, but was absolutely necessary to keep quality high and make Kanban work for us. &lt;br /&gt;&lt;br /&gt;Another key to enable Kanban is discipline.&amp;nbsp;While it is easy to pan the agile ceremonies as artificial and wasteful in a Kanban setting it is necessary to conduct each of the meetings when it is appropriate to do so. Planning meetings are important to&amp;nbsp;ellicit a&amp;nbsp;full understanding of the requirements and get feedback from the business before setting out on a work assignment. The daily standup meeting is important to&amp;nbsp;"walk the board" and make sure all development and testing is progressing. The retrospective is still important to the team's self-improvement.&amp;nbsp;You'll find yourself having less meetings overall but if you are&amp;nbsp;suddenly having no meetings after introducing Kanban that is a problem.&lt;br /&gt;&lt;br /&gt;The final item that is important to Kanban's success is adhearing to&amp;nbsp;work limiters. This forces the team to confront bottlenecks. For example, at one point the testing team had a bit too much on its plate and the development team as a result made improvements to the testing framework and infrastructure that typically would be done by the testing team. At the same time, members of the testing team assist development with advanced debugging, bug fixes, and other development that&amp;nbsp;typically is done by the development team when they reached their work limit.&lt;br /&gt;&lt;br /&gt;In this posting I talked a little bit about how Kanban contrasts with Agile and some of the items that I feel make Kanban work well for software companies. If you have any feedback or questions please feel free to comment or contact me!&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/ATAbQYsHGA0" height="1" width="1"/&gt;</description>
         <author>Miles</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-2101828913602807089.post-2930999095995529432</guid>
         <pubDate>Mon, 29 Apr 2013 09:48:00 +0000</pubDate>
      <feedburner:origLink>http://www.paulmiles.net/2013/04/kanban-in-practice.html</feedburner:origLink></item>
      <item>
         <title>Musings over lunch</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/jUqV_fTypWA/</link>
         <description>&lt;p&gt;Spring is finally here in Colorado. We had a decent snowstorm on Tuesday, with temperatures well below 20 degrees F, but today it is sunny and shirtsleeve weather. I&amp;#8217;m eating my lunch at my desk, but I&amp;#8217;m going to go out and enjoy a walk along the Platte River in a few minutes. I&amp;#8217;ve had [...]&lt;/p&gt;&lt;p&gt;The post &lt;a rel="nofollow" target="_blank" href="http://lisacrispin.com/2013/04/26/musings-over-lunch/"&gt;Musings over lunch&lt;/a&gt; appeared first on &lt;a rel="nofollow" target="_blank" href="http://lisacrispin.com"&gt;Agile Testing with Lisa Crispin&lt;/a&gt;.&lt;/p&gt;</description>
         <author>Lisa CrispinLisa Crispin</author>
         <guid isPermaLink="false">http://lisacrispin.com/?p=1164</guid>
         <pubDate>Fri, 26 Apr 2013 19:30:46 +0000</pubDate>
         <content:encoded><![CDATA[<p>Spring is finally here in Colorado. We had a decent snowstorm on Tuesday, with temperatures well below 20 degrees F, but today it is sunny and shirtsleeve weather. I&#8217;m eating my lunch at my desk, but I&#8217;m going to go out and enjoy a walk along the Platte River in a few minutes.</p>
<p>I&#8217;ve had little time to write lately. I traveled a lot the first quarter of 2013, with a Hawaiian vacation, Belgium Testing Days, and a trip to England for TestBash 2.0 and some advanced agile testing workshops in Cambridge.</p>
<div id="attachment_1165" class="wp-caption alignright" style="width:160px;"><a rel="nofollow" target="_blank" href="http://lisacrispin.com/wp-content/uploads/2013/04/DreyfusWall.jpg"><img class="size-thumbnail wp-image-1165" alt="Dreyfus Model" src="http://lisacrispin.com/wp-content/uploads/2013/04/DreyfusWall-150x150.jpg" width="150" height="150"/></a><p class="wp-caption-text">Dreyfus Model of Skill Acquisition applied to evolving the Whole Team</p></div>
<p>This month I was lucky enough to be able to stay home for a great conference, Mile High Agile 2013. Here is a picture of the presentation that <a rel="nofollow" target="_blank" href="http://blog.risingtideharbor.com/">Matt Barcomb</a> and I did on applying the Dreyfus Model to evolving the Whole Team &#8211; Matt wrote and drew the &#8220;slides&#8221; on the wall as we explained it! (And here are actual <a rel="nofollow" target="_blank" href="http://www.slideshare.net/mgbarcomb/growing-whole-teams-using-the-dreyfus-model">slides</a> which are more readable if you weren&#8217;t there)</p>
<p>At the same time, we&#8217;re doing lots of home improvement projects, and when the weather&#8217;s nice enough, working the donkeys or going on walks with them.</p>
<p>And there&#8217;s my new job. In August, I joined <a rel="nofollow" target="_blank" href="http://pivotallabs.com/tracker">Pivotal Labs</a> to work on the <a rel="nofollow" target="_blank" href="http://pivotaltracker.com">Pivotal Tracker</a> team. I&#8217;m on a &#8220;dream team&#8221; of testers including <a rel="nofollow" target="_blank" href="http://marlenacompton.com">Marlena Compton </a>and Jo Webb, we do support and testing along with the rest of our awesome development team. <a rel="nofollow" target="_blank" href="http://testobsessed.com">Elisabeth Hendrickson</a> also recently joined Pivotal, though she works in a different area, doing magic with the cloud. Someone recently commented to me that we have a &#8220;Justice League&#8221; of testers here at Pivotal, and it is such a thrill to be part of that!</p>
<p>Though I was excited to get to work on the Tracker team, my first couple months were quite difficult for me. That&#8217;s just due to me and my ego, not my wonderful and helpful teammates. In the past, when I joined a new team, I always felt I brought something to the party. I had experience with agile and testing that the team lacked, so even without knowing the domain, I could contribute value right away. But the Tracker team already had agile and testing pretty much nailed. I hadn&#8217;t worked on a Rails project before, I hadn&#8217;t worked with Tracker before, I had so much to learn! And learning is fun, but I missed that end-of-day satisfaction of having contributed my share. I also worried that I&#8217;d never get up to speed, that I would fail.<br />
Fortunately, lots of pairing helped me learn enough to start feeling like a worthwhile member of such a great team. My ping pong skills also helped. As with any job, there are still difficult days, but I look forward to coming to work every day.</p>
<p>All this learning, plus lots of personal life changes (e.g., moving to a horse property, losing my dad), took up all my time and mental bandwidth, and my writing output slowed to a trickle. However, I&#8217;m starting to slowly turn that around.</p>
<p>Having worked on a lot of distributed teams, that&#8217;s always a favorite topic of mine, and I recently wrote articles related to that for both <a rel="nofollow" target="_blank" href="http://searchsoftwarequality.techtarget.com/tip/Success-factors-for-distributed-teams">SearchSoftwareQuality </a>and <a rel="nofollow" target="_blank" href="http://www.methodsandtools.com/archive/distributedsoftwaretesting.php">Methods and Tools</a>. In addition, <a rel="nofollow" target="_blank" href="http://janetgregory.ca">Janet Gregory</a> and I started working on our new book, with the working title <em>More Agile Testing</em>. I still haven&#8217;t found my writing groove. My longer commute means a lot of time away from home, and taking care of donkeys at home, though one of my favorite activities, does eat up the clock! But I&#8217;m livin&#8217; the dream, and with enough practice, discipline and help from family and friends, I&#8217;ll find time to keep sharing my agile testing experiences and those of my team.</p>
<p>Happy spring!</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" target="_blank" href="http://lisacrispin.com/2013/04/26/musings-over-lunch/">Musings over lunch</a> appeared first on <a rel="nofollow" target="_blank" href="http://lisacrispin.com">Agile Testing with Lisa Crispin</a>.</p><img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/jUqV_fTypWA" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://lisacrispin.com/2013/04/26/musings-over-lunch/</feedburner:origLink></item>
      <item>
         <title>Mobile for the masses: gestures and test deployments</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/PGdsHZZM2F8/</link>
         <description>&lt;p&gt;&lt;img class="right" src="http://aglover.github.com/images/mine/mftm_1.jpg"&gt;My second article in &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/"&gt;IBM developerWorks&lt;/a&gt;&amp;#8217; series &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=mobile+for+the+masses"&gt;Mobile for the Masses&lt;/a&gt; is out! &lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/java/library/j-mobileforthemasses2/index.html"&gt;This article&lt;/a&gt; covers how to go about designing a mobile interface from the standpoint of usability via gestures. In essence, eschew buttons and prefer the swipe! What&amp;#8217;s more, I cover at a high level how to test your app on an Android device.&lt;/p&gt;

&lt;p&gt;As the article summary states:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Mobile users are typically distracted, busy, and ergonomically constrained, so build your mobile application UIs accordingly. Andrew Glover discusses key factors that differentiate mobile apps from web apps, then guides you through the creation of a mobile application UI that uses swipe gestures for navigation rather than button clicks.&lt;/p&gt;&lt;strong&gt;IBM DeveloperWorks&lt;/strong&gt; &lt;cite&gt;&lt;a rel="nofollow" target="_blank" href='http://www.ibm.com/developerworks/java/library/j-mobileforthemasses2/index.html'&gt;Mobile for the Masses: Take a Swipe at It! Programming Gestures in Android&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt; 


&lt;p&gt;So what are you waiting for? Check out &amp;#8221;&lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/java/library/j-mobileforthemasses2/index.html"&gt;Mobile for the masses: Take a swipe at it! Programming gestures in Android&lt;/a&gt;&amp;#8221; and trade buttons for swipes in your Android mobile apps! And if you missed the first article, check out &amp;#8221;&lt;a rel="nofollow" target="_blank" href="http://www.ibm.com/developerworks/library/j-mobileforthemasses1/"&gt;Mobile for the masses: A gentle introduction to Android&lt;/a&gt;&amp;#8221; and learn the ins and outs of Android development!&lt;/p&gt;

&lt;p&gt;Stay tuned for more articles in this series and don&amp;#8217;t forget to watch for &lt;a rel="nofollow" target="_blank" href="http://thediscoblog.com/blog/categories/mobile/"&gt;mobile focused articles on this blog&lt;/a&gt; as well.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/PGdsHZZM2F8" height="1" width="1"/&gt;</description>
         <author />
         <guid isPermaLink="false">http://aglover.github.com/blog/2013/04/24/mobile-for-the-masses-gestures-and-test-deployments</guid>
         <pubDate>Thu, 25 Apr 2013 01:13:00 +0000</pubDate>
      <feedburner:origLink>http://aglover.github.com/blog/2013/04/24/mobile-for-the-masses-gestures-and-test-deployments/</feedburner:origLink></item>
      <item>
         <title>Cucumber 1.3.1 released</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/IJtV2zXyse4/</link>
         <description>&lt;p&gt;Over the weekend we released Cucumber version 1.3.0. This was quickly replaced by 1.3.1 when we realised there was a bug 1.3.0 that only appeared on Windows.&lt;/p&gt;

&lt;p&gt;Along with masses of bugfixes, this release contains the early stages of some serious internal refactoring work planned for release in version 2.0. Although our tests continue to pass, it may be that we&amp;#8217;ve changed untested behaviour so that&amp;#8217;s why we&amp;#8217;ve bumped the minor release number. We&amp;#8217;re already aware of one minor bug that&amp;#8217;s been introduced[1]. Please let us know if you find any other issues.&lt;/p&gt;

&lt;h3&gt;New Features&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Faster features, thanks to in-process Aruba. (Aslak Hellesøy)&lt;/li&gt;
&lt;li&gt;Add lib to default load path
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/162"&gt;#162&lt;/a&gt; Steve Tooke)&lt;/li&gt;
&lt;li&gt;Add snippet type to support different type of ruby snippets.
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/pull/390"&gt;#390&lt;/a&gt; Roel van Dijk)&lt;/li&gt;
&lt;li&gt;Call nested steps using any language keywords (&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/pull/433"&gt;#433&lt;/a&gt; Tomohiko Himura)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Bugfixes&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Update WATIR example (&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/427"&gt;#427&lt;/a&gt;) Luiz Guilherme D&amp;#8217;Abruzzo Pereira&lt;/li&gt;
&lt;li&gt;Ensure that cucumber.yml is only parsed once (&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/416"&gt;#416&lt;/a&gt;) Steve Tooke&lt;/li&gt;
&lt;li&gt;Improve rake task report on failure (&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/400"&gt;#400&lt;/a&gt; Andrey Vakarev&lt;/li&gt;
&lt;li&gt;Show details of nested steps in backtraces
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/69"&gt;#69&lt;/a&gt;) Steve Tooke&lt;/li&gt;
&lt;li&gt;Filter out control characters from CDATA section of JUnit formatter output.
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/383"&gt;#383&lt;/a&gt; @teacup-on-rockingchair)&lt;/li&gt;
&lt;li&gt;Fix problem with non-ascii characters in file path
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/150"&gt;#150&lt;/a&gt; Oleg Sukhodolsky)&lt;/li&gt;
&lt;li&gt;Fix problem loading ruby files in project root directory
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/269"&gt;#269&lt;/a&gt; Steve Tooke)&lt;/li&gt;
&lt;li&gt;Fix JsonPretty formatter problem
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/197"&gt;#197&lt;/a&gt; Oleg Sukhodolsky)&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t display multi-line strings when &amp;#8211;no-multiline is passed
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/201"&gt;#201&lt;/a&gt; David Kowis)&lt;/li&gt;
&lt;li&gt;Moved the profile information output to a callback of the formatter
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/175"&gt;#175&lt;/a&gt; David Kowis)&lt;/li&gt;
&lt;li&gt;Fix html formatter to not mark skipped/unimplemented steps as failed
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/337"&gt;#337&lt;/a&gt; Oleg Sukhodolsky)&lt;/li&gt;
&lt;li&gt;Allow duplication for format+output pair in command line
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/434"&gt;#434&lt;/a&gt; David Lantos)&lt;/li&gt;
&lt;li&gt;Better delegation to IO in Cucumber::Formatter::Interceptor::Pipe
(&lt;a rel="nofollow" target="_blank" href="https://github.com/cucumber/cucumber/issues/312"&gt;#312&lt;/a&gt; Oleg Sukhodolsky)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[1] https://github.com/cucumber/cucumber/issues/438&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/IJtV2zXyse4" height="1" width="1"/&gt;</description>
         <author>Matt</author>
         <guid isPermaLink="false">http://blog.mattwynne.net/?p=518</guid>
         <pubDate>Mon, 22 Apr 2013 12:31:27 +0000</pubDate>
      <feedburner:origLink>http://blog.mattwynne.net/2013/04/22/cucumber-1-3-1-released/</feedburner:origLink></item>
      <item>
         <title>How to Enrich ScalaQuery with Nested Sessions and Transactions</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/_Lw0t2Z8zuI/</link>
         <description>Recently, we wrote an integration test in a Play Framework application using ScalaQuery which failed in a way that surprised us: we had misunderstood the library&amp;#8217;s interface for database sessions and transactions. It turns out that nested usage of #withSession / #withTransaction &amp;#8230; &lt;a rel="nofollow" target="_blank" href="https://devblog.timgroup.com/2013/04/19/how-to-enrich-scalaquery-with-nested-sessions-and-transactions/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;</description>
         <author>Marc SiegelMarc Siegel</author>
         <guid isPermaLink="false">https://devblog.timgroup.com/?p=508</guid>
         <pubDate>Fri, 19 Apr 2013 14:09:26 +0000</pubDate>
         <content:encoded><![CDATA[<p>Recently, we wrote an integration test in a <a rel="nofollow" title="Play Framework" target="_blank" href="http://www.playframework.com/documentation/2.0.4/Home">Play Framework</a> application using <a rel="nofollow" title="ScalaQuery" target="_blank" href="http://scalaquery.org/">ScalaQuery</a> which failed in a way that surprised us: we had misunderstood the library&#8217;s interface for database sessions and transactions.</p>
<p><a rel="nofollow" title="It turns out that" target="_blank" href="https://github.com/slick/slick/blob/0.10.0-M1/src/main/scala/org/scalaquery/session/Database.scala#L36">It turns out that</a> nested usage of #withSession / #withTransaction are <strong>not</strong> supported by ScalaQuery 0.10.0-M1 out of the box. Instead, a new session and transaction are created in each nested scope. This causes data write/read inconsistencies (due to separate sessions), and failures of transactional rollback (due to separate active transactions in the nested sessions).</p>
<p>Rather than maintain a fork of ScalaQuery, we used the Scala &#8220;<a rel="nofollow" title="&quot;enrich my library&quot;" target="_blank" href="http://stackoverflow.com/tags/enrich-my-library/info">enrich my library</a>&#8220; pattern to add support for the nested usage in an external library. For examples and usage details, check out the <a rel="nofollow" title="scalaquery_nested github project" target="_blank" href="https://github.com/youdevise/scalaquery_nested">scalaquery_nested github project</a>.</p>
<p>For example:</p>
<pre>database.withNestedSession {
  // add object to database here
  database.withNestedSession {
    // query same object back from database here
    // great! same connection used, so expected object is returned
  }
}</pre><img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/_Lw0t2Z8zuI" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>https://devblog.timgroup.com/2013/04/19/how-to-enrich-scalaquery-with-nested-sessions-and-transactions/</feedburner:origLink></item>
      <item>
         <title>A coding dojo story</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/3tatdkKRSm8/</link>
         <description>&lt;p&gt;It was 2008, and I was at the &lt;a rel="nofollow" target="_blank" href="http://citconf.com/"&gt;CITCON&lt;/a&gt; conference in Amsterdam. I&amp;#8217;d only started going to conferences that year, and was feeling as intimidated as I was inspired by the depth of experience in the people I was meeting. It seemed like everyone at CITCON had written a book, their own mocking framework, or both.&lt;/p&gt;

&lt;p&gt;I found myself in a session on refactoring legacy code. The session used a format that was new to me, and to most of the people in the room: a coding dojo.&lt;/p&gt;

&lt;p&gt;Our objective, I think, was to take some very ugly, coupled code, add tests to it, and then refactor it into a better design. We had a room full of experts in TDD, refactoring, and code design. What could possibly go wrong?&lt;/p&gt;

&lt;p&gt;One thing I learned in that session is the importance of the &amp;#8220;no heckling on red&amp;#8221; rule. I watched as Experienced Agile Consultant after Experienced Agile Consultant cracked under the pressure of criticism from the baying crowd of Other Experienced Agile Consultants. With so many egos in the room, everyone had an opinion about the right way to approach the problem, and nobody was shy of sharing his opinion. It was chaos!&lt;/p&gt;

&lt;p&gt;We got almost nowhere. As each pair switched, the code lurched back and forth between different ideas for the direction it should take. When my turn came around, I tried to shut out the noise from the room, control my quivering fingers, and focus on what my pair was saying. We worked in small steps, inching towards a goal that was being ridiculed by the crowd as we worked.&lt;/p&gt;

&lt;p&gt;The experience taught me how much coding dojo is about collaboration. The rules about when to critique code and when to stay quiet help to keep a coding dojo fun and satisfying, but they teach you bigger lessons about working with each other day to day.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/3tatdkKRSm8" height="1" width="1"/&gt;</description>
         <author>Matt</author>
         <guid isPermaLink="false">http://blog.mattwynne.net/?p=515</guid>
         <pubDate>Fri, 19 Apr 2013 08:42:19 +0000</pubDate>
      <feedburner:origLink>http://blog.mattwynne.net/2013/04/19/coding-dojo-story/</feedburner:origLink></item>
      <item>
         <title>Sonar in the news</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/pbsnRPdX0y8/</link>
         <description>Welcome to the roundup of blog posts and pages that mentioned Sonar last month&amp;#8230; Code Quality Tools Review for 2013: Sonar, Findbugs, PMD and Checkstyle By Adam Koblentz, 12 March 2013 When we released our Developer Productivity Report last year, it was the first time we asked our respondents about Code Quality Tools. Code quality [...]</description>
         <author>Olivier GaudinOlivier Gaudin</author>
         <guid isPermaLink="false">http://www.sonarsource.org/?p=7624</guid>
         <pubDate>Thu, 11 Apr 2013 08:55:09 +0000</pubDate>
         <content:encoded><![CDATA[<p>Welcome to the roundup of blog posts and pages that mentioned Sonar last month&#8230;<br />
<span id="more-7624"></span></p>
<p><a rel="nofollow" target="_blank" href="http://zeroturnaround.com/labs/code-quality-tools-review-for-2013-sonar-findbugs-pmd-and-checkstyle/">Code Quality Tools Review for 2013: Sonar, Findbugs, PMD and Checkstyle</a><br />
By Adam Koblentz, 12 March 2013<br />
 When we released our Developer Productivity Report last year, it was the first time we asked our respondents about Code Quality Tools. Code quality tools fulfill a growing need, as our code bases become larger and more complex, and it’s important to try to automate your code checks as much as possible. They are pretty versatile and customizable, and typically they are integrated into your build process, but can also be run manually in a one-off fashion.</p> 
<p><a rel="nofollow" target="_blank" href="http://www.youtube.com/watch?v=qTfEc1KFrhw"> Dependency Inversion Principle </a><br />
By Monte Wingle, 13 March 2013<br />
 This 20 minute video demo shows: How to install and start Sonar, A very simple java project with no dependency cycles, What creates a red mark (dependency cycle) on the Design page, A Sonar analysis showing the cycle, How to fix that red mark using the Dependency Inversion Principle, A final Sonar analysis showing a clean design page again with the functionality unchanged.</p> 
<p><a rel="nofollow" target="_blank" href="http://qualilogy.com/en/install-sonar-oracle-loopback-adapter/">Install Sonar – Oracle Loopback Adapter</a><br />
By Jean-Pierre Fayolle, 10 March 2013<br />
 We will discuss in this post how to install a Loopback Adapter needed to use Oracle on a standalone station, such as a laptop for example. The first thing to do is to check if you already have one on your machine.</p> 
<p><a rel="nofollow" target="_blank" href="http://scn.sap.com/community/web-dynpro-java/blog/2013/03/21/analyze-a-web-dynpro-java-project-with-sonar">Analyze a Web Dynpro Java project with Sonar</a><br />
By Tobias Hofmann, 21 March 2013<br />
 Sonar offers two “basic” profiles to analyze a project. Sonar uses Findbugs to analyze not only the source code, but the binary version for violations and possible bugs too. “Sonar way” is looking at the source code. This allows for finding the most common violations with minimum effort. “Sonar way with Findbugs” also takes the CLASS files into consideration.</p> 
<p><a rel="nofollow" target="_blank" href="http://qualilogy.com/en/install-sonar-oracle-user/"> Install Sonar – Oracle user </a><br />
By Jean-Pierre Fayolle, 25 March 2013<br />
 Today we will use this console to create an Oracle User that will allow us to have a SONAR schema in our database. If you did not keep the url of the Oracle console, no problem. You should have a Windows menu that allows to launch it. Note that you have as many consoles as databases installed, and a corresponding Windows service. We shall see at the end of this article how to disable it.</p> 
<img src="http://feeds.feedburner.com/~r/Sonar/~4/KdPhnkf99oM" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/pbsnRPdX0y8" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/Sonar/~3/KdPhnkf99oM/</feedburner:origLink></item>
      <item>
         <title>Painless Android swipe detection</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/xaB5RXlS7as/</link>
         <description>&lt;p&gt;&lt;img class="left" src="http://aglover.github.com/images/mine/gesticulate.png"&gt;Why bother building navigation buttons in an Android app when you can easily capture finger swipes? But, if you&amp;#8217;ve ever implemented gesture section in Android there&amp;#8217;s the drudgery of implementing listeners and you also need to do some elementary Cartesian math. Save yourself the boilerplate bother mathematics and use a &lt;a rel="nofollow" target="_blank" href="https://github.com/aglover/gesticulate"&gt;library&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/aglover/gesticulate"&gt;Gesticulate&lt;/a&gt; makes it painless to detect straightforward swiping motions like up, down, left, and right. It&amp;#8217;s a simple jar file you include in your Android &lt;code&gt;libs&lt;/code&gt; directory. Throw Gesticulate&amp;#8217;s &lt;code&gt;SwipeDetector&lt;/code&gt; inside an instance of Android&amp;#8217;s &lt;code&gt;SimpleOnGestureListener&lt;/code&gt;, for example, and you&amp;#8217;re detecting swipes with ease!&lt;/p&gt;

&lt;p&gt;Gesticulate is used in Savvy Words, a flash card vocabulary app found on &lt;a rel="nofollow" target="_blank" href="https://play.google.com/store/apps/details?id=com.b50.savvywords"&gt;Google Play&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://www.amazon.com/Beacon50-Savvy-Words/dp/B00C535D20/ref=sr_1_1?s=mobile-apps&amp;amp;ie=UTF8&amp;amp;qid=1365339189&amp;amp;sr=1-1"&gt;Amazon&amp;#8217;s Appstore for Android&lt;/a&gt;. See the &lt;a rel="nofollow" target="_blank" href="https://github.com/aglover/gesticulate"&gt;Github project&lt;/a&gt; for more details such as code examples for how to use Gesticulate, how to build it, and to see Gesticulate&amp;#8217;s tests. Swipe on, baby!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/xaB5RXlS7as" height="1" width="1"/&gt;</description>
         <author />
         <guid isPermaLink="false">http://aglover.github.com/blog/2013/04/07/painless-android-swipe-detection</guid>
         <pubDate>Sun, 07 Apr 2013 14:37:00 +0000</pubDate>
      <feedburner:origLink>http://aglover.github.com/blog/2013/04/07/painless-android-swipe-detection/</feedburner:origLink></item>
      <item>
         <title>Learning by doing</title>
         <link>http://feedproxy.google.com/~r/CitconBlogs/~3/NHDeNbEYZTY/</link>
         <description>Learning by doing This one came to me through a Scala course. My uncle* suggested me to learn Scala because functional programming is the future of software development. Two years ago read a book about it and also learned FP in &amp;#8230; &lt;a rel="nofollow" target="_blank" href="http://tamasrev.wordpress.com/2013/04/03/learning-by-doing/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tamasrev.wordpress.com&amp;#038;blog=42985234&amp;#038;post=759&amp;#038;subd=tamasrev&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <author>tamasrevtamasrev</author>
         <guid isPermaLink="false">http://tamasrev.wordpress.com/?p=759</guid>
         <pubDate>Wed, 03 Apr 2013 08:16:09 +0000</pubDate>
         <content:encoded><![CDATA[<h1 style="text-align:justify;">Learning by doing</h1>
<p style="text-align:justify;">This one came to me through a <a rel="nofollow" target="_blank" href="https://class.coursera.org/progfun-002/class">Scala course</a>.</p>
<p style="text-align:justify;">My uncle<a rel="nofollow" href="#uncle">*</a> suggested me to learn Scala because functional programming is the future of software development. Two years ago read a <a rel="nofollow" target="_blank" href="http://www.artima.com/shop/programming_in_scala_2ed">book</a> about it and also learned FP in <a rel="nofollow" target="_blank" href="http://dp.iit.bme.hu/">uni</a> - I replied. I was humble enough to tell him: very likely I already forgot most of it.</p>
<p style="text-align:justify;">So I started to take this course. It turned out, I <em>did</em> forgot a lot. There are some things that became clear to me during the exercises. E.g. now I <em>really </em>know how to write tail recursion.</p>
<p style="text-align:justify;">Learning by doing is fucking effective, I concluded.</p>
<h2 style="text-align:justify;">Learning</h2>
<p style="text-align:justify;">There are many ways of learning:</p>
<div id="attachment_776" class="wp-caption alignnone" style="width:160px;"><a rel="nofollow" target="_blank" href="http://tamasrev.files.wordpress.com/2013/03/library.jpg"><img class="size-thumbnail wp-image-776" alt="Books" src="http://tamasrev.files.wordpress.com/2013/03/library.jpg?w=150&#038;h=112" width="150" height="112"/></a><p class="wp-caption-text">Books</p></div>
<ul style="text-align:justify;">
<li>You can learn by reading books</li>
<li>You can learn by listening to / copying others</li>
<li>You can learn by doing, e.g.: experimenting on things and reflecting on your results.</li>
</ul>
<p style="text-align:justify;">In the beginning of ones carrier it&#8217;s useful to copy others, like going through tutorials. It&#8217;s also useful to read books so you can learn what others discovered by doing things. This sort of things can prevent you from reinventing the wheel.</p>
<div id="attachment_786" class="wp-caption alignnone" style="width:160px;"><a rel="nofollow" target="_blank" href="http://tamasrev.files.wordpress.com/2013/04/chariot_wheel_of_konark_temple.jpg"><img class="size-thumbnail wp-image-786" alt="Chariot wheel" src="http://tamasrev.files.wordpress.com/2013/04/chariot_wheel_of_konark_temple.jpg?w=150&#038;h=112" width="150" height="112"/></a><p class="wp-caption-text">Chariot wheel</p></div>
<h2 style="text-align:justify;">What do you mean by &#8220;learning&#8221; ?</h2>
<p style="text-align:justify;">OK, but what is learning? Memorizing a new API, e.g. finding out <a rel="nofollow" target="_blank" href="http://tamasrev.wordpress.com/2013/01/01/legacy-code-in-automated-tests/">how to use FEST</a> is learning of lexical knowledge. Practicing TDD is learning of <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Tacit_knowledge">tacit knowledge</a>. On the other hand, figuring out how to track session in whatever web framework is not learning: it&#8217;s just hacking.</p>
<p style="text-align:justify;">From these options, gathering tacit knowledge is the most important thing a developer could do. Good guess: you can gain tacit knowledge by doing things and reflecting on how those things worked out.</p>
<h2 style="text-align:justify;">When do we learn</h2>
<p style="text-align:justify;">Cool! I want to learn things! When do I do that?</p>
<p style="text-align:justify;">Uncle Bob suggests in his <a rel="nofollow" target="_blank" href="http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073/ref=pd_sim_b_1">Clean Coder</a> book that a professional developer spends 40 hours a week with working for the employer and another spends another 20 hours with making ourselves better developers. He suggests to read tweets during lunch, go to <a rel="nofollow" target="_blank" href="http://tamasrev.wordpress.com/2013/02/10/why-go-to-a-coderetreat/">coderetreats</a>, work with side projects, etc. In other words, he suggests to spend our spare time on learning. I think we have other options too:</p>
<ul style="text-align:justify;">
<li><span style="line-height:16px;">We can learn when otherwise we would sleep</span></li>
<li>We can learn when otherwise we would spend time with our special one / kids / pets</li>
<li>We can learn when we would do other things like go to the theater, do sports, etc.</li>
<li>We can learn when we do our day job</li>
</ul>
<p style="text-align:justify;">I know officially (<a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Scientific_management">in a taylorist point of view</a>) we should learn when we do not do our day jobs. It also means that when we learn then we deprive our family from ourselves. From this point of view when we learn things during our day job we rob our employers: we spend the precious man-hours on ourselves.</p>
<p style="text-align:justify;">I disagree with this approach. Although we should learn in our spare time too, the most precious learning happens when we reflect on our day-to-day practices and change them when needed. This is what could make us more efficient. This is exactly why we practice TDD, read stuff and go to conferences. This is also the thing that makes us love our jobs and makes possible to spend time with our families.</p>
<h2 style="text-align:justify;">Tenses</h2>
<p style="text-align:justify;">Before we would go on I&#8217;d like to introduce a concept. Psychologists say that a person can subjectively live his/her life in 3 tenses:</p>
<ul style="text-align:justify;">
<li><span style="line-height:1.5;">In the past, grieving for things that are gone</span></li>
<li>In the future, worrying to get there on time / in the right shape</li>
<li>In the present &#8211; which is the key to happiness. Some call this state of mind <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Flow_(psychology)">flow</a>.</li>
</ul>
<p style="text-align:justify;">We can apply this approach to software development too: When we deal with buggy, dirty, untested legacy code we deal with the past. When we add new features we are in the present. When we estimate or when we redesign old stuff we are in the future.</p>
<h2 style="text-align:justify;">The fine line</h2>
<p style="text-align:justify;">I believe most of you had a conversation about a trade-off between speed of development and code quality. As most of the developers learn <a rel="nofollow" target="_blank" href="http://www.codemanship.co.uk/slow_and_dirty_with_callouts.pdf">there is no such trade-off</a>. We should write the best quality code we can. On the other hand there is a trade-off on how much time we spend on finding better solutions on reoccurring problems.</p>
<p style="text-align:justify;">In this metaphor living in the present is <a rel="nofollow" target="_blank" href="http://blog.zsoldosp.eu/2010/10/dealing-with-crunch-mode.html">the crunch mode</a>. Flow comes to you when you find the fine line between getting things done and uncovering better ways of doing things.</p>
<hr />
<p style="text-align:justify;"><a rel="nofollow" id="uncle"></a>* <a rel="nofollow" target="_blank" href="http://people.inf.elte.hu/lorincz/">This</a> is the website of my uncle. He isn&#8217;t as influential on software development as Uncle Bob is. However, he is a successful researcher, a great mind and I&#8217;m very fond of him. He also agrees with Uncle Bob on the <a rel="nofollow" target="_blank" href="http://blog.8thlight.com/uncle-bob/2012/12/22/FPBE1-Whats-it-all-about.html">importance of functional programming</a>.</p>
<br />  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/tamasrev.wordpress.com/759/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tamasrev.wordpress.com/759/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tamasrev.wordpress.com&#038;blog=42985234&#038;post=759&#038;subd=tamasrev&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/CitconBlogs/~4/NHDeNbEYZTY" height="1" width="1"/>]]></content:encoded>
         <media:content medium="image" url="http://1.gravatar.com/avatar/113b0b46b3de42ce4dee28c6006a85c5?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">tamasrev</media:title>
         </media:content>
         <media:content medium="image" url="http://tamasrev.files.wordpress.com/2013/03/library.jpg?w=150">
            <media:title type="html">Books</media:title>
         </media:content>
         <media:content medium="image" url="http://tamasrev.files.wordpress.com/2013/04/chariot_wheel_of_konark_temple.jpg?w=150">
            <media:title type="html">Chariot wheel</media:title>
         </media:content>
      <feedburner:origLink>http://tamasrev.wordpress.com/2013/04/03/learning-by-doing/</feedburner:origLink></item>
   </channel>
</rss><!-- fe2.yql.bf1.yahoo.com compressed/chunked Mon May 20 11:29:51 UTC 2013 -->
