<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Brendan Burns's Blog</title>
	<atom:link href="http://blog.brendanburns.org/feed/" rel="self" type="application/rss+xml"/>
	<link>http://blog.brendanburns.org</link>
	<description></description>
	<lastBuildDate>Thu, 10 Jul 2014 11:40:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.0.22</generator>
	<item>
		<title>Field report from the Random Hacks of Kindness Hackathon in Melbourne</title>
		<link>http://blog.brendanburns.org/2014/07/field-report-from-the-random-hacks-of-kindness-hackathon-in-melbourne/</link>
		<comments>http://blog.brendanburns.org/2014/07/field-report-from-the-random-hacks-of-kindness-hackathon-in-melbourne/#comments</comments>
		<pubDate>Thu, 10 Jul 2014 11:01:26 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Innovation]]></category>
		<category><![CDATA[Lean Startup]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[RHOK]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=13210</guid>
		<description><![CDATA[Recently I participated in my first ever hackathon &#8211; Random Hacks of Kindness (RHoK)! The RHoK hackathon runs on the same weekend in over 30 countries around the world. Here in Melbourne, we had around 60 people involved and it was held at Swinburne University. There were 5 problems to solve, and 5 teams. The crowd was quite [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Recently I participated in my first ever hackathon &#8211; Random Hacks of Kindness (RHoK)!</p>
<p>The RHoK hackathon runs on the same weekend in over 30 countries around the world. Here in Melbourne, we had around 60 people involved and it was held at Swinburne University.</p>
<p>There were 5 problems to solve, and 5 teams. The crowd was quite diverse; one of the teams had members from 8 different countries, and the youngest participants were in Year 11 at school.</p>
<img class="aligncenter  wp-image-13211" src="http://blog.brendanburns.org/wp-content/uploads/2014/07/photo-1.jpg" alt="RHoK Hackathon Melbourne 2014" width="596" height="447" srcset="http://blog.brendanburns.org/wp-content/uploads/2014/07/photo-1.jpg 1632w, http://blog.brendanburns.org/wp-content/uploads/2014/07/photo-1-300x225.jpg 300w, http://blog.brendanburns.org/wp-content/uploads/2014/07/photo-1-1024x768.jpg 1024w" sizes="(max-width: 596px) 100vw, 596px" />
<p>Overall, it was a really great experience. Awesome to see how the event works and to meet so many enthusiastic people, and to experience how quickly a new team can come together, make collective decisions and use the Lean Startup methodology to deliver something useful.</p>
<p>My learnings were many, but included:</p>
<ul>
<li>At a hackathon, just like in the corporate world, you need a variety of skillsets to ensure optimum results. For example, the business analyst on our team played a key role in helping define the problem and minimal viable product (MVP)</li>
<li>Problem owners are also key throughout the event to get (and keep!) people enthused about the solution (problem owners are people from NGO’s and social enterprises, who define the problem that needs solving)</li>
<li>The time goes extremely quickly! And when you take out the time to get the team started, and the presentation after lunch on the second day, you only really have one day to work developing it</li>
<li>People don’t necessarily need to commit for the whole weekend – some people only came for the first few hours, some left early, etc.</li>
<li>I have lots to learn!</li>
<li>The beer tastes reeeally good afterwards :)</li>
</ul>
<p>My team comprised 9 people (2 problem owners, 1 BA, 1 marketer, 1 designer, 4 devs) &#8211; and over the course of the weekend we managed to create a live, working website! The site hasn&#8217;t been officially launched yet so I can&#8217;t yet publish the URL, though I can give some details on the tech stack: Bootstrap, SASS, Yeoman, Facebook Connect, Ruby Sinatra, PostgreSQL and Heroku.</p>
<p>The RHoK event is in December – I highly recommend going along if you can make it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2014/07/field-report-from-the-random-hacks-of-kindness-hackathon-in-melbourne/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scripting the import of a X.509 certificate (.PFX file) into a Windows Certificate Store</title>
		<link>http://blog.brendanburns.org/2012/11/script-import-certificate-x509-pfx-windows/</link>
		<comments>http://blog.brendanburns.org/2012/11/script-import-certificate-x509-pfx-windows/#respond</comments>
		<pubDate>Tue, 06 Nov 2012 06:22:38 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Certificate Store]]></category>
		<category><![CDATA[PFX]]></category>
		<category><![CDATA[X.509]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=539</guid>
		<description><![CDATA[Importing a X.509 certificates into a Windows Certificate Store and granting a user access to it can be a real pain. Especially if you have to do it on multiple machines! Fear not, my friend: it can be automated, for both local and remote machines. I thought I might document how to do it because [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Importing a X.509 certificates into a Windows Certificate Store and granting a user access to it can be a real pain. Especially if you have to do it on multiple machines!</p>
<p>Fear not, my friend: <strong>it can be automated, for both local and remote machines</strong>. I thought I might document how to do it because it took some time to get working.</p>
<p>The below script will:</p>
<ol>
<li>Check whether the certificate (.pfx file) is already in the certificate store</li>
<li>If not already there, import the certificate</li>
<li>Find the key via its thumbprint, using Microsoft&#8217;s <a href="http://msdn.microsoft.com/en-us/library/aa717039.aspx">FindPrivateKey</a> tool</li>
<li>Grant a user access to the key</li>
</ol>
<p>NOTE: the below script is strictly illustrative &#8211; error handling and commenting are left as exercises for the reader ;)</p>
<p><code lang="text">@echo off<br />
SETLOCAL ENABLEEXTENSIONS</p>
<p>set user=%1<br />
set thumbprint=%2<br />
set file_name=%3<br />
set password=%4</p>
<p>:findcertificate<br />
for /F "delims=" %%i in ('"FindPrivateKey.exe" My LocalMachine -t %thumbprint% -a') do SET certpath=%%i</p>
<p>if defined %certpath% goto grantaccess<br />
certutil -f -p %password% -importpfx %file_name%</p>
<p>goto findcertificate</p>
<p>:grantaccess<br />
icacls.exe "%certpath%" /grant %user%:R</code></p>
<p>And that&#8217;s it.</p>
<p>If you cut and paste the above into a .bat file and name it something like install.bat, you can invoke it like this:<br />
<code lang="text">install.bat user_name footprint certificate_filename certificate_password</code><br />
For example:<br />
<code lang="text">install.bat "IIS App Pool\AppPool1" bc4da1aa2b7116abe33277a44eaab2135210e23b certificate.pfx password</code></p>
<p>Some pre-requisites/gotchas:</p>
<ol>
<li><strong>You will need Microsoft&#8217;s FindPrivateKey tool</strong> which will locate the certificate in the store. You can obtain FindPrivateKey in the WCF samples: <a href="http://www.microsoft.com/en-us/download/details.aspx?id=21459">download</a></li>
<li>The <strong>script will locate the certificate by its footprint</strong>, which you will need to determine in advance by <a href="http://www.novokshanov.com/2012/01/managing-x-509-certificates-on-windows/">importing the certificate manually</a></li>
<li>You can <strong>also use FindPrivateKey to locate the certificate by subject nam</strong>e, but I found that locating it by footprint was more reliable for multi-line subjects</li>
<li><strong>To grant access an IIS app pool access to the certificate</strong>, you need to specify the app pool name in the format<br />
<code>"IIS App Pool\app_pool_name"</code></li>
</ol>
<h2>Installing the certificate on a remote machine</h2>
<p>I used the SysInternals tool <a href="http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx">PSExec</a> to run the script on remote machines, using the below parameters:<br />
<code lang="text">PSExec.exe /accepteula \\hostname -i -s -w remote_working_folder cmd /c "script_with_parameters"</code><br />
Where:</p>
<ul>
<li><em>hostname</em>: the hostname on which the script will run</li>
<li><em>remote_working_folder</em>: folder on the host which contains the certificate to import and the FindPrivateKey tool exe</li>
<li><em>script_with_parameters</em>: the batch file to run with all parameters specified</li>
</ul>
<p>For example:<br />
<code lang="text">PSExec.exe /accepteula \\myhost -i -s -w c:\temp cmd /c install.bat "IIS App Pool\AppPool1" bc4da1aa2b7116abe33277a44eaab2135210e23b certificate.pfx password"</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2012/11/script-import-certificate-x509-pfx-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which is the best wiki tool to use?</title>
		<link>http://blog.brendanburns.org/2012/10/best-wiki-tool/</link>
		<comments>http://blog.brendanburns.org/2012/10/best-wiki-tool/#comments</comments>
		<pubDate>Sun, 07 Oct 2012 02:31:26 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[knowledge management]]></category>
		<category><![CDATA[wikis]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=525</guid>
		<description><![CDATA[This week I had a great question from a reader, Kevin Parisot: “I am a team leader of a small app dev team and I came across your blog articles on the use of wikis. I am very interested in setting up a wiki for my team for many of the reasons you have noted. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This week I had a great question from a reader, Kevin Parisot:</p>
<blockquote><p>“I am a team leader of a small app dev team and I came across your blog articles on the use of wikis.  I am very interested in setting up a wiki for my team for many of the reasons you have noted.  Hoping you could give me a little advice.</p>
<p>I&#8217;m hoping to find something that&#8217;s very easy to use and &#8230;free!</p>
<p>What wiki engine do you use and how did you choose it.”</p></blockquote>
<p>My preferred wiki is <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a> &#8211; it&#8217;s fast, easy to use &#038; install&#8230; and free! It&#8217;s the same software used by Wikipedia and is well supported with extensions. I&#8217;ve used it at two workplaces before with great success.</p>
<p>Where I work now we use <a href="http://twiki.org/">TWiki</a>, which is also very good and has plenty of extensions available, but I find it a little slower and clunkier to use than MediaWiki. On the other hand, it has access control (which we currently don&#8217;t use).</p>
<p>If you can get budget for it (because it&#8217;s not free) I would also recommend <a href="http://www.atlassian.com/software/confluence/overview">Confluence</a>, by Atlassian. A wonderful feature it is has is cutting and pasting of images into the WYSIWYG editor; otherwise, uploading images can be a little tedious with wikis.</p>
<p>But for something free, and depending on your specific requirements and whether you need access control, I&#8217;d recommend MediaWiki or TWiki.</p>
<p>&#8211; if anybody else has any questions, please feel free to <a href="mailto:brendan@brendanburns.org">email</a> them to me!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2012/10/best-wiki-tool/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>5 Ways to Build the Right Thing by Saying No</title>
		<link>http://blog.brendanburns.org/2012/05/5-ways-to-build-the-right-thing-by-saying-no/</link>
		<comments>http://blog.brendanburns.org/2012/05/5-ways-to-build-the-right-thing-by-saying-no/#comments</comments>
		<pubDate>Wed, 09 May 2012 13:55:40 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=516</guid>
		<description><![CDATA[What&#8217;s the biggest waste in software development? It’s pretty easy to come up with many different answers to this question &#8211; defects, technical debt, project overruns, projects cancellations &#8211; even company failures. There is so much waste in software development it’s hard to know where to start! According to Mary Poppendieck, thought leader in Lean [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>What&#8217;s the biggest waste in software development?</strong></p>
<p>It’s pretty easy to come up with many different answers to this question &#8211; defects, technical debt, project overruns, projects cancellations &#8211; even company failures. There is so much waste in software development it’s hard to know where to start!</p>
<p>According to Mary Poppendieck, thought leader in Lean Software Development, the answer is simple: <strong>the biggest waste in software development is building the wrong thing!</strong></p>
<p>Similarly, when Steve Jobs returned to Apple in 1997, he famously said, <strong>“focusing is about saying no”</strong>. By ruthlessly cutting the product range, Apple’s talent was then free to work on products like the iPod, a device with a brilliantly simple user interface, with no wasted features.</p>
<p>I’d like to combine Mary and Steve’s ideas and say that <strong>we can help build the right thing by saying no</strong>. By cutting wasted time, effort, energy, and money, we can channel our resources to produce the best we are capable of.</p>
<p>Here are 5 ways it can be done:</p>
<h3><strong>1. Say No to New Feature Waste</strong></h3>
<p><strong></strong>New feature waste includes new features that don’t give enough value to justify their cost.</p>
<p>The Agile methodology helps us here. By breaking work down into stories, and by engaging product owners and prioritising stories, our team should be working on the most valuable thing possible at any point in time.</p>
<p>Every time we de-prioritise or de-scope a story, or a whole project for that matter, we make a conscious decision not to do something right now. This allows us to focus our immediate efforts on the work that add the most value.</p>
<h3><strong>2. Say No to Legacy Feature Waste</strong></h3>
<p><strong></strong>It’s not enough just to look at new features &#8211; we should also review products and features we already have.</p>
<p>According to Mary Poppendieck, 64% of software features are never or rarely used. Unused features add overhead to new development work via increased system complexity and additional testing.</p>
<p>I have a rule that if I haven’t used a piece of clothing in over a year, I donate it to charity; perhaps if a feature also hasn’t been used for a similar length of time, it too can be shown the door.</p>
<h3><strong>3. Say No to Frilled Waste</strong></h3>
<p><strong></strong>Frilled waste is waste due to developing more than was required, by adding bells and whistles, or over-engineering the solution.</p>
<p>We should only implement the minimum to satisfy the requirement.</p>
<p>This can be counter-intuitive. Naturally, we should aim to product quality solutions, and minimise technical debt. But if we go over-the-top in what we deliver, we are probably diverting our resources from higher priority stories, whilst possibly adding complexity.</p>
<h3><strong>4. Say No to Automated Test Waste</strong></h3>
<p><strong></strong>Automated tests can add huge value to the team and greatly enhance quality. But every test comes at a development and maintenance cost, so we need to be careful to ensure that each test adds value relative to its cost.</p>
<p>We should review our test suite continually to ensure the tests still add value, they are correct, and are free of duplication. Keeping redundant automated test code adds complexity, maintenance and execution time.</p>
<h3><strong>5. Say No to Fluffy Waste</strong></h3>
<p><strong></strong>The “just say no” concept can be extended to almost any part of the software development process. Think about your daily work, such as emails and meetings. Is that meeting or email completely necessary? What are the alternatives, or how could it be rationalised to provide the most “bang for buck”?</p>
<p>Our work should be a continual process of asking ourselves why are we doing this? Because it’s what we choose not to do that cuts through, simplifies and allows us to focus on what makes us and our software successful.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2012/05/5-ways-to-build-the-right-thing-by-saying-no/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pain with .NET 4 assemblies and the GAC</title>
		<link>http://blog.brendanburns.org/2011/10/pain-with-net-4-assemblies-and-the-gac/</link>
		<comments>http://blog.brendanburns.org/2011/10/pain-with-net-4-assemblies-and-the-gac/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 13:16:03 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=503</guid>
		<description><![CDATA[Installing a Microsoft .NET assembly into the GAC used to be fairly trivial. Unfortunately, I just spent some frustrating time learning that things have changed quite a bit with .NET 4. I began with my .NET 4 assembly and tried to install it via the usual approach, dragging and dropping it into the %windir%\assembly folder [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Installing a Microsoft .NET assembly into the GAC used to be fairly trivial. Unfortunately, I just spent some frustrating time learning that things have changed quite a bit with .NET 4.</p>
<p>I began with my .NET 4 assembly and tried to install it via the usual approach, dragging and dropping it into the <strong>%windir%\assembly</strong> folder via the Explorer shell extension. Strange; nothing happened.</p>
<p>A quick search revealed that for .NET 4, Microsoft, for reasons which do not seem to be well documented, have created a new GAC location, in the <strong>%windir%\Microsoft.NET</strong> folder.</p>
<p>Well, that was annoying, I thought: but I could deal with it. I tried dropping the file into the new GAC folder… but there is no nice Explorer shell extension for the new GAC. Doh! (for the second time)</p>
<p>Ok, time to drop to the command line and fire up good ol’ gacutil.exe.</p>
<p><strong>FAIL</strong></p>
<p>I received this error message:<br />
<code>“Failure adding assembly to the cache:   This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.”</code></p>
<p>Sigh. Ok, I thought, I&#8217;ll just use the .NET 4 version of gacutil.exe. After a quick search of my PC I learned that it’s not installed with Version 4 of framework, nor with Visual Studio 10.</p>
<p>Yet another brick wall! But no worries &#8211; I would just download it. I found out <a href="http://mattwhetton.blogspot.com/2011/08/installing-net-40-assemblies-to-global.html">via Matt Whetton’s Blog</a> that I needed to download <a href="http://www.microsoft.com/download/en/details.aspx?id=8279">Microsoft Windows SDK for Windows 7 and .NET Framework 4</a> to get it, so I did (while wondering why I need to download that whole SDK to get gacutil??)</p>
<p>So then I found gacutil in the bin folder of the SDK and I ran it. Arrgh, it returned the same error message again!</p>
<p>Eventually I found the .NET 4 version of GACUtil in the SDK – it’s nestled in<br />
<strong>C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools</strong>.</p>
<p>Sigh. Could Microsoft really make things any more difficult? I just wanted to install an assembly into the GAC!</p>
<p>By the way, if you need to copy gacutil onto a server, you will need to copy the following files to it: gacutil.exe, gacutil.exe.config and gacutlrc.dll (the last one located in the 1033 sub folder containing gacutil).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2011/10/pain-with-net-4-assemblies-and-the-gac/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Leave the Code in a Better State than you Found It</title>
		<link>http://blog.brendanburns.org/2011/09/leave-the-code-in-a-better-state-than-you-found-it/</link>
		<comments>http://blog.brendanburns.org/2011/09/leave-the-code-in-a-better-state-than-you-found-it/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 12:52:11 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=477</guid>
		<description><![CDATA[We’ve all been there: code that hurts your brain to look at, let alone comprehend. Not written by you, of course. You wouldn’t write a mess like that, and you can hardly believe that somebody else did (or maybe you can&#8230;?) Your mind wanders to who to blame for this abomination before your eyes. You [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>We’ve all been there: <em>code that hurts your brain to look at, let alone comprehend</em>.</strong></p>
<p>Not written by <em>you</em>, of course. <em>You</em> wouldn’t write a mess like that, and you can hardly believe that somebody else did (or maybe you <em>can</em>&#8230;?)</p>
<p>Your mind wanders to who to blame for this abomination before your eyes. You start complaining to the person sitting next to you. Then to your boss. Then you decide that it’s time for a coffee and then to browse for new jobs.</p>
<p>Sound familiar? I bet it does!</p>
<p>The difference between an average programmer and a good one is in what you do next.</p>
<p>Do you ignore it and try to forget you ever saw it, or do you <strong>attempt to improve it</strong>?</p>
<p>I have a simple rule that I like to follow: <strong>I always try to leave the code in a better state than I found it</strong>.</p>
<p>This might involve small improvements, like improving <strong>code formatting</strong>, <strong>renaming methods</strong> or <strong>variables</strong>, or adding <strong>useful comments</strong>. Tiny improvements add up over time, especially if the whole team is doing the same thing!</p>
<p>Or the improvement could be larger, like <strong>refactoring</strong> or <strong>adding test coverage</strong>.</p>
<p>Yes, this can take time, and yes you do have that deadline to consider. But it&#8217;s amazing how quickly small improvements can be done; certainly in much less time than it took to understand that grotesque code. Which means that your improvement might make it much quicker for the next person to understand &#8211; and that next person might be <em>you</em>, when you revisit it in a year&#8217;s time&#8230;</p>
<p>The important thing is to <strong>do it</strong>, and <strong>encourage your whole team</strong> to do it. Don’t be afraid to change things. Take responsibility for that code, even if you didn’t write it: embrace collective code ownership!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2011/09/leave-the-code-in-a-better-state-than-you-found-it/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Notes from Jean Tabaka’s talk, “The 12 Failure Modes of Agile”</title>
		<link>http://blog.brendanburns.org/2011/07/notes-from-jean-tabakas-talk-the-12-failure-modes-of-agile/</link>
		<comments>http://blog.brendanburns.org/2011/07/notes-from-jean-tabakas-talk-the-12-failure-modes-of-agile/#respond</comments>
		<pubDate>Mon, 25 Jul 2011 13:39:21 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=464</guid>
		<description><![CDATA[I recently had the opportunity to hear Jean Tabaka, Agile Coach from Rally Software, speak in Brisbane at Yow! Nights about The 12 Failure Modes of Agile. Jean has been consulting as an Agile coach for many years, so it was really thought-provoking to hear her top reasons of why the adoption of Agile might [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I recently had the opportunity to hear <a href="http://www.rallydev.com/agileblog/about/">Jean Tabaka</a>, Agile Coach from Rally Software, speak in Brisbane at <a href="http://yownightbrisagilejune.eventbrite.com/">Yow! Nights</a> about The 12 Failure Modes of Agile.</p>
<p>Jean has been consulting as an Agile coach for many years, so it was really thought-provoking to hear her top reasons of why the adoption of Agile might fail.</p>
<p>I thought I&#8217;d repeat the list on my blog for my readers because I think it&#8217;s a great compilation of potential pitfalls we should all work hard to avoid. Perhaps we could call them &#8220;Agile anti-patterns&#8221;!</p>
<h2>The 12 Failure Modes of Agile (from Jean Tabaka)</h2>
<h2>1. &#8220;Checkbook commitment&#8221;</h2>
<p>This refers to when people are saying they&#8217;re doing &#8220;Agile&#8221;, but without <em>actually</em> committing to it. They expect immediate results, and they use the same old organisational structure and metrics.</p>
<h2>2. Culture that doesn&#8217;t support change</h2>
<p>If the company culture is resistant to change, how can it adopt a methodology that embraces it? An example of this would be a culture where people are rewarded for not &#8220;rocking the boat&#8221;.</p>
<h2>3. Ineffective use of retrospectives</h2>
<p>Retrospectives must be done and handled effectively. The feedback gained via retrospectives must be learned from and acted upon. The whole team must be responsible for the actions from the retrospective, not just the scrum master.</p>
<h2>4. Ignore needed infrastructure</h2>
<p>For example, for a team to do Continuous Integration, it needs access to a build server!</p>
<h2>5. Lack of full planning participation</h2>
<p>The whole team needs to participate in planning and, as a team, commit to the work defined for the iteration.</p>
<h2>6. Unavailable (or too many) product owners</h2>
<p>Product owners are busy, but it is a warning sign when they say &#8220;we&#8217;re too busy for all this communicating&#8221;. Also, if there are too many product owners, it can be hard to get agreement.</p>
<p>Jean raised an intriguing question here: she asked how many people in the audience had done some form of Agile training. Many hands went up. Then she asked, how many people had worked with product owners who have been trained in Agile? I don&#8217;t think anybody raised their hand&#8230;</p>
<h2>7. Bad scrum masters</h2>
<p>The team needs to collaborate well within each iteration, and a poor scrum master can be harmful to the team&#8217;s morale and productivity. An example of a bad scrum master is one that  plans all the work, puts it in a tool and then tells people to do it.</p>
<p>Jean made the point that if you take over the decisions for others you lower morale (and IQ&#8217;s!). Scrum masters should not control, they should empower.</p>
<h2>8. Not having an onsite evangelist</h2>
<p>This point is particularly important for distributed teams, or teams in branch offices. Without an Agile evangelist/coach onsite, the remote team can lose its way.</p>
<h2>9. Team lacks authority/decision making ability</h2>
<p>Agile is not about control, it is about empowerment.</p>
<h2>10. Testing not pulled forward</h2>
<p>Testing should be done up front, ideally, or else as soon as possible. Testing should also be automated.</p>
<h2>11. Traditional performance appraisals</h2>
<p>Traditionally, performance appraisals reward individual performance. In an Agile environment, the focus is on team performance, not individual heroics, and appraisals should reflect this.</p>
<p>Performance evaluations should also be regular, not once per year.</p>
<h2>12. Change is hard, Agile is blamed</h2>
<p>For example: an Agile methodology is introduced to solve a company&#8217;s problems. It fails, and Agile is blamed rather than the company&#8217;s own, deeper problems. It is often easier to look outwards and assign blame rather than to look inwards.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2011/07/notes-from-jean-tabakas-talk-the-12-failure-modes-of-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Emerging Trend of Agile for Non-Development Projects</title>
		<link>http://blog.brendanburns.org/2011/05/the-emerging-trend-of-agile-for-non-development-projects/</link>
		<comments>http://blog.brendanburns.org/2011/05/the-emerging-trend-of-agile-for-non-development-projects/#comments</comments>
		<pubDate>Mon, 23 May 2011 13:53:37 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=427</guid>
		<description><![CDATA[Recently I attended a session of the Brisbane Agile Academy Meetup Group (which I highly recommend, and not just for the free pizza!) chaired by Craig Smith, on Using Agile for Non-Development Projects. I must admit have a special interest in this idea: ever since I began using Agile for software development I have fantasised [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Recently I attended a session of the Brisbane Agile Academy Meetup Group (which I highly recommend, and not just for the free pizza!) chaired by <a href="http://www.slideshare.net/smithcdau">Craig Smith</a>, on <a href="http://www.meetup.com/The-Brisbane-Agile-Academy-Meetup-Group/events/16216931/">Using Agile for Non-Development Projects</a>.</p>
<p>I must admit have a special interest in this idea: ever since I began using Agile for software development I have fantasised about its potential for non-development projects. I used it to partly plan my recent round the world trip. A former colleague of mine was using it to plan his wedding. If it works for a software team, it could work elsewhere&#8230; right?</p>
<p>But it&#8217;s never quite that easy, is it? It can be difficult to get buy-in for an Agile process in a development team, depending on the level of management support and developer engagement. Imagine how much harder it must be to get momentum in an environment or industry that may not have even <em>heard</em> of Agile!</p>
<p>Having these doubts in mind, the session was a real eye-opener for me. I was introduced to real people working in corporate teams using Agile for non-software projects.</p>
<p>Some examples I have discovered:</p>
<ul>
<li>The bank, Suncorp is using Agile for <strong>finance and procurement teams</strong>, with an Agile coach from software development background, and by mapping Agile onto standard processes</li>
<li>The telecommunications company Telstra is applying Agile while providing <strong>external services</strong> to Suncorp, integrating with Suncorp&#8217;s preferred business service methodology</li>
<li>Lonely Planet&#8217;s <strong>team of in-house lawyers</strong> is now using Agile to plan their work load and ensure priority items are done on time (Beverley Head in Agile Today, May 2011)</li>
<li>AccuRev <a href="http://www.accurev.com/blog/2010/09/27/implementing-agile/">trained their whole sales team</a> in Certified Scrum Training and adopted a quarterly iteration period, aligning with their sales cycle
</ul>
<p>I am looking forward to watching this trend continue.</p>
<p>Perhaps it might become the silver bullet to unlock the next wave of productivity growth for teams of knowledge workers. Or maybe lots of story boards will just end up getting thrown off rooftops!</p>
<p><strong>What do you think? Do you know of any other examples of Agile being used in non development environments?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2011/05/the-emerging-trend-of-agile-for-non-development-projects/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How you can use Gmail as a lean, mean, email-processing machine</title>
		<link>http://blog.brendanburns.org/2011/05/how-you-can-use-gmail-as-a-lean-mean-email-processing-machine/</link>
		<comments>http://blog.brendanburns.org/2011/05/how-you-can-use-gmail-as-a-lean-mean-email-processing-machine/#respond</comments>
		<pubDate>Wed, 04 May 2011 20:48:33 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[inbox zero]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=290</guid>
		<description><![CDATA[I like to see the process of managing email as a little like gardening. You need to prune the plants and keep on top of the weeds. If you get it right, you end up with a beautifully manicured garden. If you don&#8217;t, you just end up with an overgrown backyard full of weeds! With [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>I like to see the process of managing email as a little like gardening. You need to prune the plants and keep on top of the weeds. If you get it right, you end up with a beautifully manicured garden. If you don&#8217;t, you just end up with an overgrown backyard full of weeds!</strong></p>
<p><div id="attachment_387" style="width: 510px" class="wp-caption aligncenter"><a href="http://blog.brendanburns.org/wp-content/uploads/2011/05/JapaneseGarden2.jpg"><img class="size-full wp-image-387" title="Japanese garden" src="http://blog.brendanburns.org/wp-content/uploads/2011/05/JapaneseGarden2.jpg" alt="Japanese garden" width="500" height="333" srcset="http://blog.brendanburns.org/wp-content/uploads/2011/05/JapaneseGarden2.jpg 500w, http://blog.brendanburns.org/wp-content/uploads/2011/05/JapaneseGarden2-300x199.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><p class="wp-caption-text">Japanese garden (Randy Robertson)</p></div></p>
<p>With this thought in mind (perhaps I&#8217;m a little <em>too</em> enthusiastic about spring?), today I took the challenge of greatly simplifying my Inbox, based on one simple principle: <strong>does this item need my <em>immediate</em> attention?</strong></p>
<p>To do this, I used the advanced features that Gmail offers to handle a lot of the &#8217;email gardening&#8217; for us!</p>
<p>I started with the low-hanging fruit: the Priority Inbox feature.</p>
<h2>Turn on the Priority Inbox feature</h2>
<p>The <a href="http://mail.google.com/mail/help/intl/en/priority-inbox.html">Priority Inbox</a> feature is brilliant. It means that Gmail will automatically determine which items it thinks are important and which ones aren&#8217;t, and then shows you the priority ones at the top of the page. You can train it to teach it what you view as important and what isn&#8217;t.</p>
<p>You may ask, what about the items that the Priority Inbox feature doesn&#8217;t deem as &#8220;important&#8221;? I&#8217;m talking about dozens of emails every day: newsletters, notifications, bookings; as well anything important that Priority Inbox might have missed (it&#8217;s not perfect, after all!)</p>
<p>It would be helpful to be able to categorise all these emails, wouldn&#8217;t it? I did this by using Gmail labels.</p>
<h2>Create labels</h2>
<p><a href="http://mail.google.com/support/bin/answer.py?answer=118708">Labels</a> are a very powerful Gmail feature: they allow you to classify and thereby group your emails. Think of it as an array of virtual flower boxes, organised by type of flower.</p>
<p>For example, I have a label called <strong>Newsletter</strong>, in which I like to group any subscriptions that I don&#8217;t need to read straight away. Later, I can read them by clicking on the Newsletter folder that Gmail creates for me the left-hand side of the Inbox.</p>
<p><div id="attachment_383" style="width: 486px" class="wp-caption aligncenter"><a href="http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailLabel.jpg"><img class="size-full wp-image-383" title="Gmail Label" src="http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailLabel.jpg" alt="Gmail Label" width="476" height="47" srcset="http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailLabel.jpg 476w, http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailLabel-300x29.jpg 300w" sizes="(max-width: 476px) 100vw, 476px" /></a><p class="wp-caption-text">Gmail Label</p></div></p>
<p>I created more labels, for example, one called <strong>Facebook</strong>, for Facebook notifications. Some people have said &#8220;<em>just stop forwarding the notifications to your email account!</em>&#8220;. But it&#8217;s often quicker to read them as email. It also means that I don&#8217;t need to log into Facebook, which as many of us might know, can be very distracting!</p>
<h2>Create filters</h2>
<p>I took the label idea one step further: I used Gmail filters to let it do the work for me. Filters are another powerful feature and are used to automatically process your emails for you as soon as they arrive. It&#8217;s like having a gardener to tend to your plants for you while you&#8217;re out shopping.</p>
<p>So I created the filter &#8220;<em><strong>all emails from Facebook should be removed from the Inbox and assigned a label of Facebook</strong></em>&#8220;. (Another example of a filter would be, &#8220;<em>all emails from Brendan should automatically deleted.</em>&#8220;)</p>
<p><div id="attachment_384" style="width: 510px" class="wp-caption aligncenter"><a href="http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailCreateFilter.jpg"><img class="size-full wp-image-384" title="Creating a filter in Gmail" src="http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailCreateFilter.jpg" alt="Creating a filter in Gmail" width="500" height="371" srcset="http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailCreateFilter.jpg 500w, http://blog.brendanburns.org/wp-content/uploads/2011/05/GmailCreateFilter-300x222.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><p class="wp-caption-text">Creating a filter in Gmail</p></div></p>
<p>I applied a similar process for labels and filters for notifications from Twitter, LinkedIn and so on.</p>
<h2>Process remaining emails</h2>
<p>At this stage the groundwork has been done for an automated email-management process. The flower boxes (labels) had been set up and the Gmail gardeners (filters) had been told what to do.</p>
<p>I then took my <strong>Everything Else</strong> folder and went through the remaining emails, the ones that were not classified as Priority. (At this stage I had around a thousand items in this folder!)</p>
<p>For each email, I applied a simple process:</p>
<ol>
<li><strong>Is this item spam?</strong><br />
If yes, click on the Gmail <strong>Mark as Spam</strong> button. I find that with this feature I very rarely receive spam in my Gmail account.
</li>
<li><strong>Is this an email one that I DO NOT want to receive ever again?</strong><br />
If yes, unsubscribe and/or create a filter to automatically delete items from that address in future. (<em>For example, a mass marketing email.</em>)
</li>
<li><strong>Is this an important item which needs to be read/processed?</strong><br />
If so, click on the <strong>Mark as Important</strong> button to tell Gmail to mark emails like this one as important in future. Also click the Star icon to mark the item for later processing. (<em>For example, an email from my Dad.</em>)
</li>
<li><strong>Is this email one that could be archived automatically in future?</strong><br />
If yes, create a filter such that any emails in the future from this address are removed from the inbox and assigned a label. (<em>For example, all hostel booking notifications from HostelBooker can be archived and assigned the TravelBooking label.</em>)
</li>
<li><strong>Anything else</strong>, either click on <strong>Archive</strong> or <strong>Delete</strong> as required.
</li>
</ol>
<h2>The Result</h2>
<p><strong>INBOX ZERO!</strong></p>
<p>What does that really mean? It means I have no emails in my Inbox that are unprocessed. Every email is in its logical place: either assigned a label for reference, or marked with star so I can deal with it later. I also have a large set of new filters to automatically process items in the future.</p>
<h2>Is there more work to do?</h2>
<p>Yes. I still have to go through and process the starred items. But now I know exactly how many of those there are, and as a constant reminder, I will see them every time I log in at the top of the page.</p>
<h2>Was it worth it?</h2>
<p>Overall, the process probably took me couple of hours to do. It was a profitable investment of my time: in future I will spend more time responding to <em>important</em> email and less time managing <em>unimportant</em> email.</p>
<p><em>In a slightly geeky way</em> I also kind of like the feeling that my inbox is being constantly monitored by a robot that will filter the emails for me. That means less work for me.</p>
<p>On the other hand, I also know that I will need to be vigilant in applying this process regularly. I will need to keep creating new filters/labels to keep those pesky weeds under control.</p>
<p>Ok, enough about email. Now it&#8217;s time to go and have a cold drink in that garden!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2011/05/how-you-can-use-gmail-as-a-lean-mean-email-processing-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quote for the day: on capability, by Tony Robbins</title>
		<link>http://blog.brendanburns.org/2011/04/quote-for-the-day-on-capability-by-tony-robbins/</link>
		<comments>http://blog.brendanburns.org/2011/04/quote-for-the-day-on-capability-by-tony-robbins/#respond</comments>
		<pubDate>Sun, 10 Apr 2011 18:08:39 +0000</pubDate>
		<dc:creator><![CDATA[Brendan Burns]]></dc:creator>
				<category><![CDATA[Quotes]]></category>
		<category><![CDATA[Tony Robbins]]></category>

		<guid isPermaLink="false">http://blog.brendanburns.org/?p=284</guid>
		<description><![CDATA[&#8220;What we can or cannot do, what we consider possible or impossible, is rarely a function of our true capability. It is more likely a function of our beliefs about who we are.&#8221; Tony Robbins]]></description>
				<content:encoded><![CDATA[<p><em>&#8220;What we can or cannot do, what we consider possible or impossible, is rarely a function of our true capability. It is more likely a function of our beliefs about who we are.&#8221;</em> Tony Robbins</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brendanburns.org/2011/04/quote-for-the-day-on-capability-by-tony-robbins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>