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

<channel>
	<title>Agile Web Operations</title>
	<atom:link href="http://www.agileweboperations.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileweboperations.com</link>
	<description>Helping web developers and operations bridge the deployment gap</description>
	<lastBuildDate>Sat, 20 Mar 2010 07:51:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
<link>http://www.agileweboperations.com</link>
<url>http://www.agileweboperations.com/favicon.ico</url>
<title>Agile Web Operations</title>
</image>
		<item>
		<title>Agile @ NetDoktor</title>
		<link>http://www.agileweboperations.com/agile-netdoktor/</link>
		<comments>http://www.agileweboperations.com/agile-netdoktor/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 07:51:54 +0000</pubDate>
		<dc:creator>Dan Ackerson</dc:creator>
				<category><![CDATA[Agile Methodologies]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[chicken]]></category>
		<category><![CDATA[fox]]></category>
		<category><![CDATA[pig]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[seagull]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1962</guid>
		<description><![CDATA[
			
				
			
		
I&#8217;ve been in the process of introducing agile over at NetDoktor for over a year. I really like the sound of &#8220;in the process of introducing agile&#8221;. It&#8217;s kinda like the permanent Gmail Beta (or Flickr Alpha). It means there will never really be a &#8220;final&#8221; agile process here and that&#8217;s a great thing! Why? [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/agile-links-from-the-archives/' rel='bookmark' title='Permanent Link: Agile Links From The Archives'>Agile Links From The Archives</a></li>
<li><a href='http://www.agileweboperations.com/new-job-at-netdoktor/' rel='bookmark' title='Permanent Link: New Job at NetDoktor'>New Job at NetDoktor</a></li>
<li><a href='http://www.agileweboperations.com/agile-quo-vadis/' rel='bookmark' title='Permanent Link: Agile on steroids'>Agile on steroids</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p></p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-netdoktor%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-netdoktor%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.testertroubles.com/2009/04/scrum-pigs-and-chickens.html"><img src="http://blog.netdoktor.de/wp-content/uploads/Piggy.jpg" alt="Pig and Chicken" title="" width="272" height="269" class="alignright size-full wp-image-788" /></a>I&#8217;ve been in the process of introducing agile over at NetDoktor for over a year. I really like the sound of &#8220;in the process of introducing agile&#8221;. It&#8217;s kinda like the permanent Gmail Beta (or Flickr Alpha). It means there will never really be a &#8220;final&#8221; agile process here and that&#8217;s a great thing! Why? Because the whole point of agile is adapting. &#8220;Adapt or die&#8221; is about the most basic business tenet I can imagine. </p>
<p>Click <a href="http://blog.netdoktor.de/agile-netdoktor/">here</a> to read the full post!</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/agile-links-from-the-archives/' rel='bookmark' title='Permanent Link: Agile Links From The Archives'>Agile Links From The Archives</a></li>
<li><a href='http://www.agileweboperations.com/new-job-at-netdoktor/' rel='bookmark' title='Permanent Link: New Job at NetDoktor'>New Job at NetDoktor</a></li>
<li><a href='http://www.agileweboperations.com/agile-quo-vadis/' rel='bookmark' title='Permanent Link: Agile on steroids'>Agile on steroids</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/agile-netdoktor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop. Reflect. Adapt. The 3 Steps to Stop Writing Bad Code</title>
		<link>http://www.agileweboperations.com/stop-reflect-adapt-the-3-steps-to-stop-writing-bad-code/</link>
		<comments>http://www.agileweboperations.com/stop-reflect-adapt-the-3-steps-to-stop-writing-bad-code/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 06:07:08 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Agile Methodologies]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[retrospective]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1946</guid>
		<description><![CDATA[

			
				
			
		
Writing software that doesn&#8217;t suck is hard &#8211; even for the pros. The problem doesn&#8217;t lie in solving a hard problem, but in creating a solution which is easy to understand, robust, and easy to change.
A lot of problems in teams and organizations stem from bad code. Bad code ruins the motivation of your team, [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/dump-your-issue-tracking-system-get-agile/' rel='bookmark' title='Permanent Link: Dump your issue tracking system &#8211; get agile!'>Dump your issue tracking system &#8211; get agile!</a></li>
<li><a href='http://www.agileweboperations.com/stop-being-busy-get-productive/' rel='bookmark' title='Permanent Link: Stop Being Busy. Get Productive!'>Stop Being Busy. Get Productive!</a></li>
<li><a href='http://www.agileweboperations.com/importance-having-seamless-ticket-flow/' rel='bookmark' title='Permanent Link: The Importance Of Having Seamless Ticket Flow'>The Importance Of Having Seamless Ticket Flow</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/stop-reflect-adapt-the-3-steps-to-stop-writing-bad-code/" title="Permanent link to Stop. Reflect. Adapt. The 3 Steps to Stop Writing Bad Code"><img class="post_image alignleft" src="http://farm4.static.flickr.com/3584/3357545503_e6873b0220_m.jpg" width="240" height="160" alt="Image by chad_k" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fstop-reflect-adapt-the-3-steps-to-stop-writing-bad-code%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fstop-reflect-adapt-the-3-steps-to-stop-writing-bad-code%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Writing software that doesn&#8217;t suck is hard &#8211; even for the pros. The problem doesn&#8217;t lie in solving a hard problem, but in creating a solution which is easy to understand, robust, and easy to change.<br />
A lot of problems in teams and organizations stem from bad code. Bad code ruins the motivation of your team, slows you down to a crawl and drags you down, deeper and deeper into the fire fighting vicious cycle.</p>
<h3>Why do we write bad code?</h3>
<p><span id="more-1946"></span><br />
Let&#8217;s try to understand a few reasons why we continue to write bad code, even though nobody wants to do it.</p>
<p>In my experience, a lot of developers always feel under pressure to deliver faster. Of course, there is constant pressure to finish a product faster. And of course, everybody should work towards the goal of getting features out to the customers asap. The issue is that too many software developers cut corners when trying to speed up. They don&#8217;t write automated tests, they don&#8217;t refactor their code after finishing an initial draft of working software, and they claim they&#8217;re done even though only the most basic flows are working (and they never took the time to thoroughly test border cases).<br />
We all know where this leads to: Dropping half assed features into QA creates a myriad of bugs and a lot of hassle fixing the left overs of the rush. Not having any automated tests makes you play russian roulette every time you touch your code, and adding and patching a draft version of the code makes it worse with every bug fixed.<br />
Everyone feels it: Your code is going down the drain. </p>
<h3>How can we break that vicious cycle?</h3>
<p>If you&#8217;re stuck with a shit load of crappy code you have to stop the downward spiral. The recipe is simple, but, while it will get you into the right direction, and it will lead you a path of evolutinary code and culture improvements, it&#8217;s not a quick fix nor a silver bullet. However, it&#8217;s your only chance. There are just three steps:</p>
<p>Stop. Reflect. Adjust.</p>
<h3>Stop</h3>
<p>First of all, you&#8217;ve got to realize you can&#8217;t go on like this. You&#8217;ve got to stop the line. This sounds very counter intuitive given the fact that you&#8217;re late already. But, only by stopping can start improving.</p>
<h3>Reflect</h3>
<p>Get everyone into one room. Ask them for noteworthy events within the last week. What did they experience? What got in their way? Make it clear this is not a blaming game, just a fact-finding mission. If you&#8217;ve collected enough, give everyone five points to distribute among the issues: Let them put as many of their five points on any issue they think should be addressed first. With this exercise, you get a shared understanding of the trouble spots and a first assessment of what&#8217;s worst. This is your input for the next step.</p>
<h3>Adapt</h3>
<p>Take the one issue which got the majority of the rating points in the reflection meeting. Make its resolution top priority for the coming week. This will signal to your team that you take their problems seriously, and you won&#8217;t continue repeating the same mistake. Address their concerns and show them how to get better &#8211; one step at a time.</p>
<h3>Repeat</h3>
<p>Repeat the reflect and adapt steps every week. Make sure, you address the worst issue every week. Interestingly enough, in the first weeks most issues won&#8217;t be considered to be in the area of the team&#8217;s influence. As the team lead, you have to make sure to get them resolved. Over time, however, the team will become more self confident and tackle more and more issues on their own. Now you&#8217;ve created an upward spiral where you get better and faster every week.</p>
<p>Have you ever experienced similar situations? How did you deal with them? Let us know in the comments below!</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/dump-your-issue-tracking-system-get-agile/' rel='bookmark' title='Permanent Link: Dump your issue tracking system &#8211; get agile!'>Dump your issue tracking system &#8211; get agile!</a></li>
<li><a href='http://www.agileweboperations.com/stop-being-busy-get-productive/' rel='bookmark' title='Permanent Link: Stop Being Busy. Get Productive!'>Stop Being Busy. Get Productive!</a></li>
<li><a href='http://www.agileweboperations.com/importance-having-seamless-ticket-flow/' rel='bookmark' title='Permanent Link: The Importance Of Having Seamless Ticket Flow'>The Importance Of Having Seamless Ticket Flow</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/stop-reflect-adapt-the-3-steps-to-stop-writing-bad-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>20 DevOps guys you should follow</title>
		<link>http://www.agileweboperations.com/20-devops-guys/</link>
		<comments>http://www.agileweboperations.com/20-devops-guys/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 09:42:01 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Popular]]></category>
		<category><![CDATA[Web Development & Operations]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1852</guid>
		<description><![CDATA[

			
				
			
		
DevOps is an approach to bridge the gap between agile software development and operations. The DevOps tribe is a growing group of people practicing a new way of combining development and system administration for more speed, quality, revenues, and fun.

The DevOps Tribe
Here is a list of some of the most active guys in the DevOps [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/devopsdays-2009/' rel='bookmark' title='Permanent Link: Back to the roots: Bridging the Deployment Gap'>Back to the roots: Bridging the Deployment Gap</a></li>
<li><a href='http://www.agileweboperations.com/system-configurations-code-revisions-continuous-integration-ftw/' rel='bookmark' title='Permanent Link: System Configurations + Code Revisions = Continuous Integration FTW!'>System Configurations + Code Revisions = Continuous Integration FTW!</a></li>
<li><a href='http://www.agileweboperations.com/configuration-management-scaling-data-center-and-growing-your-business/' rel='bookmark' title='Permanent Link: Configuration Management: Scaling The Data Center and Growing Your Business'>Configuration Management: Scaling The Data Center and Growing Your Business</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/20-devops-guys/" title="Permanent link to 20 DevOps guys you should follow"><img class="post_image alignleft" src="http://www.agileweboperations.com/wp-content/uploads/2010/03/devops-logo.png" width="169" height="145" alt="DevOps" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2F20-devops-guys%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2F20-devops-guys%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>DevOps is an approach to bridge the gap between agile software development and operations. The DevOps tribe is a growing group of people practicing a new way of combining development and system administration for more speed, quality, revenues, and fun.<br />
<span id="more-1852"></span></p>
<h3>The DevOps Tribe</h3>
<p>Here is a list of some of the most active guys in the DevOps realm. It&#8217;s by far not complete and in no special order. But if you want to learn what&#8217;s going on with DevOps, you should follow those folks.</p>
<p><strong>Patrick Debois</strong><br />
Inventor of <a href="http://www.devopsdays.org/">DevOpsDays</a> &#8211; the conference that brings development and operations together. While many of us were thinking and talking about DevOps, we didn&#8217;t even have a forum before Patrick launched DevOpsDays 2009 in Ghent, Belgium.<br />
Blog: <a href="http://www.jedi.be/blog/">Just Enough Documented Information</a><br />
Twitter: <a href="http://twitter.com/patrickdebois">@patrickdebois</a><br />
Patrick&#8217;s <a href="http://www.youtube.com/watch?v=EOveXZhJpr4">DevOps Intro Video</a></p>
<p><strong>Damon Edwards</strong><br />
President of <a href="http://dtosolutions.com/">DTO Solutions</a> (a consulting group focused on automated infrastructure and IT process improvement)<br />
Blog: <a href="http://dev2ops.org/blog/category/devops">dev2ops delivering change</a><br />
Featured DevOps post: <a href="http://dev2ops.org/blog/2010/2/22/what-is-devops.html">What is DevOps?</a></p>
<p><strong>John Allspaw</strong><br />
At the moment, he&#8217;s VP of Technical Operations at Etsy. He&#8217;s worked at Flickr, Friendster, InfoWorld, Salon, Genentech, Volpe National Transportation Center, and a bunch of other places as a consultant from time to time.<br />
Blog: <a href="http://www.kitchensoap.com/">Kitchen Soap</a><br />
Twitter: <a href="http://twitter.com/allspaw">@allspaw</a><br />
Featured DevOps presentation: <a href="http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr">10 deploys per day &#8211; DevOps cooperation at Flickr</a></p>
<p><strong>Lindsay Holmwood</strong><br />
Lindsay Holmwood is a sysadmin/developer from Sydney, Australia.<br />
He&#8217;s the creator of <a href="http://auxesis.github.com/cucumber-nagios">cucumber-nagios</a>, <a href="http://flapjack-project.com/">Flapjack</a>, <a href="http://auxesis.github.com/visage">Visage</a>, and <a href="http://gotgastro.com">Gastro</a>.<br />
Blog: <a href="http://holmwood.id.au/~lindsay/">auxesis musings</a><br />
Twitter: <a href="http://twitter.com/auxesis">@auxesis</a></p>
<p><strong>Andrew Shafer</strong><br />
Engineering Lead at Cloud Scaling. He is interested in public speaking, cloud computing, systems management, startups, Agile, lean, Ruby, Clojure, dynamic programming languages, motivation or whatever random thing seems interesting to you.<br />
Blog: <a href="http://stochasticresonance.wordpress.com/">stochasticresonance</a><br />
Twitter: <a href="http://twitter.com/littleidea">@littleidea</a><br />
Featured DevOps Post: <a href="http://stochasticresonance.wordpress.com/2010/01/20/puppet-chef-dependencies-and-worldviews/">Puppet, Chef, Dependencies And Worldviews</a></p>
<p><strong>Paul Nasrat</strong><br />
Paul is a software developer and systems engineer from London, UK.<br />
Blog: <a href="http://nasrat.livejournal.com/">Pauls Wibblings</a><br />
Twitter: <a href="http://twitter.com/nasrat">@nasrat</a><br />
Featured DevOps Post: <a href="http://nasrat.livejournal.com/58331.html">Puppet Camp 2009</a></p>
<p><strong>Mick Pollard</strong><br />
Mick&#8217;s current interests in linux/sysadmin are system deployment (pxe/kickstart) and configuration management ( puppet ). He&#8217;s also interested in all things hosting and scaling of webapps.<br />
Blog: <a href="http://www.lunix.com.au/blog/">lunix</a><br />
Twitter: <a href="http://twitter.com/_lunix_">@_lunix_</a></p>
<p><strong>James Turnbull</strong><br />
James is an Australian free software and open source author, security specialist, and software developer contributing to the <a href="http://en.wikipedia.org/wiki/Qpsmtpd">qpsmtpd</a> SMTP daemon, the <a href="http://en.wikipedia.org/wiki/Puppet_(tool)">Puppet</a> configuration management tool, and the Facter system inventory tool. He wrote books like &#8220;Pulling Strings with Puppet&#8221; and &#8220;Pro Nagios 2.0&#8243;. James lives in Melbourne, Australia.<br />
Blog: <a href="http://www.kartar.net/">Kartar.Net</a><br />
Twitter: <a href="http://twitter.com/kartar">@kartar</a><br />
Featured DevOps Post: <a href="http://www.kartar.net/2010/02/what-devops-means-to-me/">What DevOps means to me&#8230;</a></p>
<p><strong>Koen Van Exem</strong><br />
A DevOps from Mechelen, Belgium.<br />
Blog: <a href="http://www.inxin.com/blog/">InxIn</a><br />
Twitter: <a href="http://twitter.com/KoenVanExem">@KoenVanExem</a></p>
<p><strong>Gildas Le Nadan</strong><br />
Gildas specialises in IT Operations Coaching/Infrastructures, Open Source, Business Continuity/Disaster Recovery. He is from Lille, France.<br />
Blog: <a href="http://blog.endemics.info/">On IT Operations And Infrastructure</a><br />
Twitter: <a href="http://twitter.com/endemics">@endemics</a><br />
Featured DevOps Post: <a href="http://blog.endemics.info/post/2009/03/02/self-documented-agile-infrastructure">Self Documented Agile Infrastructure</a></p>
<p><strong>Chris Read</strong><br />
Chris currently works for ThoughtWorks as a Principal Technical Consultant and Infrastructure Specialist. His specialties are Unix (any flavour) and networking. He&#8217;s done his time as a developer, but finds the path of the Sys Admin much more rewarding…<br />
Blog: <a href="http://blog.chris-read.net/">Chris Read</a><br />
Twitter: <a href="http://twitter.com/cread">@cread</a></p>
<p><strong>Kris Buytaert</strong><br />
Kris Buytaert is a long time Linux and Open Source Consultant doing Linux and Open Source projects in Belgium , Europe and the rest of the universe.<br />
Blog: <a href="http://www.krisbuytaert.be/blog/">Everything is a Freaking DNS Problem</a><br />
Twitter: <a href="http://twitter.com/KrisBuytaert">@KrisBuytaert</a></p>
<p><strong>Stephen Nelson-Smith</strong><br />
a Technical Manager and Devop based in Hampshire, UK and author of Agile Sysadmin<br />
Blog: <a href="http://agilesysadmin.net/">Agile Sysadmin</a><br />
Twitter: <a href="http://twitter.com/lordcope">@lordcope</a><br />
Featured DevOps Post: <a href="http://www.jedi.be/blog/2010/02/12/what-is-this-devops-thing-anyway/">What Is This DevOps Thing, Anyway?</a> </p>
<p><strong>R.I. Pienaar</strong><br />
Systems Administrator, Consultant, Linux Guy, Automator, Ruby Coder. Currently in London, UK.<br />
Blog: <a href="http://www.devco.net">www.devco.net</a><br />
Twitter: <a href="http://twitter.com/ripienaar">@ripienaar</a></p>
<p><strong>Julian Simpson</strong><br />
Julian is helping to deliver working software, one continuous integration build at a time.<br />
Blog: <a href="http://www.build-doctor.com/">The Build Doctor</a><br />
Twitter: <a href="http://twitter.com/builddoctor">@builddoctor</a></p>
<p><strong>John Willis</strong><br />
Vice President of Training &#038; Services at opscode, the company behind <a href="http://www.opscode.com/chef/">Chef</a>.<br />
Blog:  <a href="http://www.johnmwillis.com/">IT MANAGEMENT AND CLOUD BLOG</a><br />
Twitter: <a href="http://twitter.com/botchagalupe">@botchagalupe</a><br />
Featured DevOps Post: <a href="http://www.johnmwillis.com/chef/does-automation-replace-humans/">Does Automation Replace Humans?</a></p>
<p><strong>Marcel Wegermann</strong><br />
Sysadmin, web developer and test infected &#8211; Marcel currently works for it-agile in Hamburg, Germany.<br />
Blog: <a href="http://www.wegermann.com/">Agile System Administration</a><br />
Twitter: <a href="http://twitter.com/marcelwegermann">@marcelwegermann</a></p>
<p><strong>John Arundel</strong><br />
Freelance sysadmin &#038; systems integrator, devop, hacker, geek. Likes Puppet, Drupal, agile, and a lot of other cool stuff.<br />
Blog: <a href="http://bitfieldconsulting.com/">Bitfield Consulting</a><br />
Twitter: <a href="http://twitter.com/bitfield">@bitfield</a></p>
<p>This list is brought to you by:<br />
<strong>Matthias Marschall</strong><br />
CTO of autoplenum.de &#8211; hands-on involved in development and operations of the site and always seeking to make the whole company more agile end-to-end.<br />
Blog: <a href="http://www.agileweboperations.com">Agile Web Operations</a> (you&#8217;re currently reading it <img src='http://www.agileweboperations.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )<br />
Twitter: <a href="http://twitter.com/mmarschall">@mmarschall</a></p>
<p>and</p>
<p><strong>Dan Ackerson</strong><br />
Having worked as both a developer and an operations manager, he&#8217;s gotten all too familiar with the ever widening gap between what developers and customers consider “done”. That&#8217;s why he wants to help to bridge the deployment gap.<br />
Blog: <a href="http://www.agileweboperations.com">Agile Web Operations</a><br />
Twitter: <a href="http://twitter.com/danackerson">@danackerson </a></p>
<p>If you want to be listed here, just let us know through our <a href="http://www.agileweboperations.com/contact">contact form</a> or write us a comment below.</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/devopsdays-2009/' rel='bookmark' title='Permanent Link: Back to the roots: Bridging the Deployment Gap'>Back to the roots: Bridging the Deployment Gap</a></li>
<li><a href='http://www.agileweboperations.com/system-configurations-code-revisions-continuous-integration-ftw/' rel='bookmark' title='Permanent Link: System Configurations + Code Revisions = Continuous Integration FTW!'>System Configurations + Code Revisions = Continuous Integration FTW!</a></li>
<li><a href='http://www.agileweboperations.com/configuration-management-scaling-data-center-and-growing-your-business/' rel='bookmark' title='Permanent Link: Configuration Management: Scaling The Data Center and Growing Your Business'>Configuration Management: Scaling The Data Center and Growing Your Business</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/20-devops-guys/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Agile Links From The Archives</title>
		<link>http://www.agileweboperations.com/agile-links-from-the-archives/</link>
		<comments>http://www.agileweboperations.com/agile-links-from-the-archives/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:42:33 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Agile Methodologies]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1864</guid>
		<description><![CDATA[

			
				
			
		
One finding from our survey was that a lot of you want to read more about agile basics. As most of you haven&#8217;t followed Agile Web Operations since Day One, here&#8217;s a list of the top three posts about agile and kanban:


Agile Is About Feedback, Not About Fancy Practices
Kanban vs. Iterative Development
Kanban WIP Limits – [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/user-stories-making-sure-your-customers-get-first-class-seats/' rel='bookmark' title='Permanent Link: User Stories &#8211; Making Sure Your Customers Get The First-class Seats'>User Stories &#8211; Making Sure Your Customers Get The First-class Seats</a></li>
<li><a href='http://www.agileweboperations.com/agile-quo-vadis/' rel='bookmark' title='Permanent Link: Agile on steroids'>Agile on steroids</a></li>
<li><a href='http://www.agileweboperations.com/estimation-user-stories-story-points-abstract-size-measure/' rel='bookmark' title='Permanent Link: Estimation of User Stories With Story Points as Abstract Size Measure'>Estimation of User Stories With Story Points as Abstract Size Measure</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/agile-links-from-the-archives/" title="Permanent link to Agile Links From The Archives"><img class="post_image alignright" src="http://farm1.static.flickr.com/2/3864306_a973147b1f_m.jpg" width="240" height="100" alt="picture by Daveybot" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-links-from-the-archives%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-links-from-the-archives%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>One finding from our <a href="http://www.agileweboperations.com/agile-web-operations-what-do-you-want-it-to-be/">survey</a> was that a lot of you want to read more about agile basics. As most of you haven&#8217;t followed Agile Web Operations since Day One, here&#8217;s a list of the top three posts about agile and kanban:<br />
<span id="more-1864"></span></p>
<ul>
<li><a href="http://www.agileweboperations.com/agile-is-about-feedback-not-about-fancy-practices/">Agile Is About Feedback, Not About Fancy Practices</a></li>
<li><a href="http://www.agileweboperations.com/kanban-vs-iterative-development/">Kanban vs. Iterative Development</a></li>
<li><a href="http://www.agileweboperations.com/kanban-wip-limits-the-fine-art-of-focus/">Kanban WIP Limits – The Fine Art of Focus</a></li>
</ul>
<p>And last but not least, you might want to follow my five part series:<br />
<a href="http://www.agileweboperations.com/introducing-agile-practices-manage-remote-development-team-series">Introducing Agile Practices to Manage a Remote Development Team</a>. Discussing <a href="http://www.agileweboperations.com/user-stories-making-sure-your-customers-get-first-class-seats/">User Stories</a>, the <a href="http://www.agileweboperations.com/backlog-ruthless-prioritizing/">Backlog</a>, <a href="http://www.agileweboperations.com/estimation-user-stories-story-points-abstract-size-measure/">Story Points</a>, and <a href="http://www.agileweboperations.com/velocity-what-will-we-be-able-deliver-week/">Velocity</a> provide a good overview of basic agile management practices. Enjoy!</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/user-stories-making-sure-your-customers-get-first-class-seats/' rel='bookmark' title='Permanent Link: User Stories &#8211; Making Sure Your Customers Get The First-class Seats'>User Stories &#8211; Making Sure Your Customers Get The First-class Seats</a></li>
<li><a href='http://www.agileweboperations.com/agile-quo-vadis/' rel='bookmark' title='Permanent Link: Agile on steroids'>Agile on steroids</a></li>
<li><a href='http://www.agileweboperations.com/estimation-user-stories-story-points-abstract-size-measure/' rel='bookmark' title='Permanent Link: Estimation of User Stories With Story Points as Abstract Size Measure'>Estimation of User Stories With Story Points as Abstract Size Measure</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/agile-links-from-the-archives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSpec Tips &amp; Tricks</title>
		<link>http://www.agileweboperations.com/rspec-tips-tricks/</link>
		<comments>http://www.agileweboperations.com/rspec-tips-tricks/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:06:41 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Web Development & Operations]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[RSpec]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1817</guid>
		<description><![CDATA[

			
				
			
		
Throughout the last couple of days, I did a bigger refactoring of our Ruby on Rails application. As I changed quite a few moving parts, I covered everything I did with RSpec. It&#8217;s really an incredible feeling to have all your bases covered with automated tests when you finally start the manual regression test. Along [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/webrat-automated-acceptance-testing-with-rspec-or-cucumber/' rel='bookmark' title='Permanent Link: webrat: Automated Acceptance Testing with RSpec or Cucumber'>webrat: Automated Acceptance Testing with RSpec or Cucumber</a></li>
<li><a href='http://www.agileweboperations.com/real-world-example-using-factory_girl-to-simplify-our-test-setup/' rel='bookmark' title='Permanent Link: Real World Example: Using factory_girl to simplify our test setup'>Real World Example: Using factory_girl to simplify our test setup</a></li>
<li><a href='http://www.agileweboperations.com/setup-ruby-rails-project-using-lighthouse-api-activeresource/' rel='bookmark' title='Permanent Link: Setup a Ruby on Rails Project Using the Lighthouse API With ActiveResource'>Setup a Ruby on Rails Project Using the Lighthouse API With ActiveResource</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/rspec-tips-tricks/" title="Permanent link to RSpec Tips &#038; Tricks"><img class="post_image alignleft" src="http://farm3.static.flickr.com/2034/2095242731_c267d953b8_m.jpg" width="180" height="240" alt="Picture by cell105" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Frspec-tips-tricks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Frspec-tips-tricks%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Throughout the last couple of days, I did a bigger refactoring of our Ruby on Rails application. As I changed quite a few moving parts, I covered everything I did with <a href="http://rspec.info/">RSpec</a>. It&#8217;s really an incredible feeling to have all your bases covered with automated tests when you finally start the manual regression test. Along the way, I came across a few things I wanted to share with you.</p>
<h3>Structuring Your RSpec</h3>
<p>When you&#8217;re writing specs you want to bring order to them sooner or later. I really use nested <code>describe</code>-blocks a lot. Let&#8217;s look into a <a href="http://rspec.info/rails/writing/controllers.html">Controller spec</a> to see what I do:<br />
<span id="more-1817"></span><br />
Every controller spec starts with a describe block like this:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">describe QuestionController <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>For spec&#8217;ing out individual actions in the controller, I usually create one describe block for every public method in that controller:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">describe QuestionController <span style="color:#9966CC; font-weight:bold;">do</span>
	describe <span style="color:#996600;">&quot;index&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Inside that describe block I put all the <code>it</code>-specs themselves. Usually, I start by writing only the expectation and later I fill it out:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">describe QuestionController <span style="color:#9966CC; font-weight:bold;">do</span>
	describe <span style="color:#996600;">&quot;index&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		it <span style="color:#996600;">&quot;should redirect to 404, if no questions are found&quot;</span>
		it <span style="color:#996600;">&quot;should prepare a list of ten questions&quot;</span>
		it <span style="color:#996600;">&quot;should redirect a not logged in user to the login page&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<h3>Running specs from the command line</h3>
<p>I use RubyMine for my ruby development but despite it&#8217;s capability of running specs within the IDE I prefer to run them separately on the command line. For running only the part you&#8217;re currently working on the <code>-l</code> parameter comes in handy. You can pass it any line number of an <code>it</code> or <code>describe</code> block and it runs only what&#8217;s there. This is especially cool for describe blocks as it runs all specs inside that block &#8211; and only those.</p>
<p>If you structure your specs like me using nested describe blocks, this is really nice.</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/webrat-automated-acceptance-testing-with-rspec-or-cucumber/' rel='bookmark' title='Permanent Link: webrat: Automated Acceptance Testing with RSpec or Cucumber'>webrat: Automated Acceptance Testing with RSpec or Cucumber</a></li>
<li><a href='http://www.agileweboperations.com/real-world-example-using-factory_girl-to-simplify-our-test-setup/' rel='bookmark' title='Permanent Link: Real World Example: Using factory_girl to simplify our test setup'>Real World Example: Using factory_girl to simplify our test setup</a></li>
<li><a href='http://www.agileweboperations.com/setup-ruby-rails-project-using-lighthouse-api-activeresource/' rel='bookmark' title='Permanent Link: Setup a Ruby on Rails Project Using the Lighthouse API With ActiveResource'>Setup a Ruby on Rails Project Using the Lighthouse API With ActiveResource</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/rspec-tips-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Web Operations: What do YOU want it to be?</title>
		<link>http://www.agileweboperations.com/agile-web-operations-what-do-you-want-it-to-be/</link>
		<comments>http://www.agileweboperations.com/agile-web-operations-what-do-you-want-it-to-be/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 21:00:45 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1820</guid>
		<description><![CDATA[
			
				
			
		
For nearly two years Dan and I have shared our experiences and ideas about agile development and system administration. With every post we hoped to be helpful, and maybe some of them even were&#8230;
Now, as we approach 500 subscribers, we would like to ask you, our dear readers, how we could help you to become [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/1st-birthday-best-of-agile-web-operations/' rel='bookmark' title='Permanent Link: 1st Birthday: Best of Agile Web Operations'>1st Birthday: Best of Agile Web Operations</a></li>
<li><a href='http://www.agileweboperations.com/synergy-map-how-to-map-out-your-current-strategy-part-2-of-2/' rel='bookmark' title='Permanent Link: Synergy Map: How To Map Out Your Current Strategy (Part 2 of 2)'>Synergy Map: How To Map Out Your Current Strategy (Part 2 of 2)</a></li>
<li><a href='http://www.agileweboperations.com/the-12-principles-behind-the-agile-manifesto-adapted-to-web-operations/' rel='bookmark' title='Permanent Link: The 12 principles behind the agile manifesto adapted to web operations'>The 12 principles behind the agile manifesto adapted to web operations</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p></p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-web-operations-what-do-you-want-it-to-be%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-web-operations-what-do-you-want-it-to-be%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>For nearly two years Dan and I have shared our experiences and ideas about agile development and system administration. With every post we hoped to be helpful, and maybe some of them even were&#8230;</p>
<p>Now, as we approach 500 subscribers, we would like to ask <em>you</em>, our dear readers, how we could help you to become even more agile and have more fun doing your job.</p>
<p>Please take our short survey at: <a href="http://www.surveymonkey.com/s/LJVMRG9">http://www.surveymonkey.com/s/LJVMRG9</a> and tell us about your situation, your goals and how you would profit most from our experiences.</p>
<p>We&#8217;d love to hear from you!</p>
<p>Dan &#038; Matthias</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/1st-birthday-best-of-agile-web-operations/' rel='bookmark' title='Permanent Link: 1st Birthday: Best of Agile Web Operations'>1st Birthday: Best of Agile Web Operations</a></li>
<li><a href='http://www.agileweboperations.com/synergy-map-how-to-map-out-your-current-strategy-part-2-of-2/' rel='bookmark' title='Permanent Link: Synergy Map: How To Map Out Your Current Strategy (Part 2 of 2)'>Synergy Map: How To Map Out Your Current Strategy (Part 2 of 2)</a></li>
<li><a href='http://www.agileweboperations.com/the-12-principles-behind-the-agile-manifesto-adapted-to-web-operations/' rel='bookmark' title='Permanent Link: The 12 principles behind the agile manifesto adapted to web operations'>The 12 principles behind the agile manifesto adapted to web operations</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/agile-web-operations-what-do-you-want-it-to-be/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pragmatic Personas: Concrete Examples of Your Users</title>
		<link>http://www.agileweboperations.com/pragmatic-personas-concrete-examples-of-your-users/</link>
		<comments>http://www.agileweboperations.com/pragmatic-personas-concrete-examples-of-your-users/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 09:46:06 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Agile Methodologies]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[personas]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1804</guid>
		<description><![CDATA[

			
				
			
		
Jeff Patton&#8217;s talk at agile 2009 about Pragmatic Personas is quite interesting. I&#8217;ve seen talks about personas way back at agile 2007 already, but, at that time, I found them quite &#8220;bulky&#8221; to use. In pragmatic personas I see more value.

What is a Pragmatic Persona?
Jeff defines a pragmatic persona by having a name like &#8220;Jeff, [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/a-kanban-board-for-features/' rel='bookmark' title='Permanent Link: A Kanban Board for Features'>A Kanban Board for Features</a></li>
<li><a href='http://www.agileweboperations.com/a-simple-checklist-to-multiply-productivity/' rel='bookmark' title='Permanent Link: A Simple Checklist To Multiply Productivity'>A Simple Checklist To Multiply Productivity</a></li>
<li><a href='http://www.agileweboperations.com/simulating-a-waterfall-project-in-the-classroom/' rel='bookmark' title='Permanent Link: Simulating a Waterfall Project In The Classroom'>Simulating a Waterfall Project In The Classroom</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/pragmatic-personas-concrete-examples-of-your-users/" title="Permanent link to Pragmatic Personas: Concrete Examples of Your Users"><img class="post_image alignright" src="http://www.agileweboperations.com/wp-content/uploads/2010/01/Pragmatic-Personas-e1264704037696.png" width="234" height="177" alt="by Jeff Patton / InfoQ" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fpragmatic-personas-concrete-examples-of-your-users%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fpragmatic-personas-concrete-examples-of-your-users%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.infoq.com/presentations/pragmatic-personas">Jeff Patton&#8217;s talk at agile 2009 about Pragmatic Personas</a> is quite interesting. I&#8217;ve seen talks about personas way back at agile 2007 already, but, at that time, I found them quite &#8220;bulky&#8221; to use. In <em>pragmatic</em> personas I see more value.<br />
<span id="more-1804"></span></p>
<h3>What is a Pragmatic Persona?</h3>
<p>Jeff defines a pragmatic persona by having a name like &#8220;Jeff, UX Expert&#8221;, describing the current situation of the persona, an about section describing goals and needs of the persona and a section describing how our application could add value for the persona.</p>
<table style="border:solid 1px black; padding:2px">
<tr>
<td colspan="2">Baldin, the homeless dude</td>
</tr>
<tr>
<td style="text-align: center"><img src="http://farm4.static.flickr.com/3131/3199067837_f03f8f899a_t.jpg" alt="by Michele Eve" title="by Michele Eve"/></td>
<td>
Situation:</p>
<ul>
<li>43 years old</li>
<li>has no home</li>
<li>ran out of money a long time ago</li>
</ul>
</td>
</tr>
<tr>
<td>
Goals:</p>
<ul>
<li>Wants to find the best place to stay for the night</li>
</ul>
</td>
<td>
Value:</p>
<ul>
<li>Our webapp could show him the occupation status of the various bridges in  the area.</li>
<li>He could reserve a place</li>
</ul>
</td>
</tr>
</table>
<h3>Personas Act as Concrete Examples</h3>
<p>When you&#8217;re doing TDD, you formulate concrete examples to test your code. You test your <code>divide</code> method with examples like <code>divide(0, 0)</code>, <code>divide(0, 1)</code>, <code>divide(4, 2)</code>, etc.<br />
Personas can act as concrete examples for your user stories and your automated acceptance tests. They will never give you the full picture of all your users, but if you define them wisely, you can come up with the critical variations (like finding the border cases for your test cases e.g. divide by zero).</p>
<h3>A Persona Tells You What You Know About Your Users And What You Don&#8217;t Know</h3>
<p>One interesting aspect of using pragmatic personas is that by trying to fill out situation, goals and values you find out what you don&#8217;t know about your users. If you have trouble describing a sample situation or the goals of a specific user, you should go and find out more about it. This way, pragmatic personas reduce the risk in your product development by pointing out your weak spots before it is too late.</p>
<p>Only using one &#8220;persona&#8221;: <em>the user</em> (as most of us usually do) is much worse than coming up with some real world examples of who is using your product and why. Give it a try, you won&#8217;t regret it!</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/a-kanban-board-for-features/' rel='bookmark' title='Permanent Link: A Kanban Board for Features'>A Kanban Board for Features</a></li>
<li><a href='http://www.agileweboperations.com/a-simple-checklist-to-multiply-productivity/' rel='bookmark' title='Permanent Link: A Simple Checklist To Multiply Productivity'>A Simple Checklist To Multiply Productivity</a></li>
<li><a href='http://www.agileweboperations.com/simulating-a-waterfall-project-in-the-classroom/' rel='bookmark' title='Permanent Link: Simulating a Waterfall Project In The Classroom'>Simulating a Waterfall Project In The Classroom</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/pragmatic-personas-concrete-examples-of-your-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tailoring Your Munin Installation</title>
		<link>http://www.agileweboperations.com/tailoring-your-munin-installation/</link>
		<comments>http://www.agileweboperations.com/tailoring-your-munin-installation/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 20:31:07 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Web Development & Operations]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[operations]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1781</guid>
		<description><![CDATA[

			
				
			
		
After following Dan&#8217;s tutorial on installing munin on your servers, you already get the benefits of munin&#8217;s default plugins. You have graphs showing your CPU, RAM, I/O, as well as MySQL, Exim, and quite some other stats. But most of the time you run some additional software which you also want to montior.

Install Some Custom [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/getting-a-grip-on-your-operations-with-munin/' rel='bookmark' title='Permanent Link: Getting a Grip on your Operations with Munin'>Getting a Grip on your Operations with Munin</a></li>
<li><a href='http://www.agileweboperations.com/monitoring-tools-essentials-munin-vs-nagios/' rel='bookmark' title='Permanent Link: Monitoring tools essentials: Munin vs. Nagios'>Monitoring tools essentials: Munin vs. Nagios</a></li>
<li><a href='http://www.agileweboperations.com/securely-tunneling-munin-traffic/' rel='bookmark' title='Permanent Link: Securely tunneling Munin traffic'>Securely tunneling Munin traffic</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/tailoring-your-munin-installation/" title="Permanent link to Tailoring Your Munin Installation"><img class="post_image alignleft" src="http://farm3.static.flickr.com/2116/2383095896_3a757170b6_m.jpg" width="240" height="112" alt="picture by London Flash Cars" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Ftailoring-your-munin-installation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Ftailoring-your-munin-installation%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>After following Dan&#8217;s <a href="http://www.agileweboperations.com/getting-a-grip-on-your-operations-with-munin/">tutorial on installing munin</a> on your servers, you already get the benefits of munin&#8217;s default plugins. You have graphs showing your CPU, RAM, I/O, as well as MySQL, Exim, and quite some other stats. But most of the time you run some additional software which you also want to montior.<br />
<span id="more-1781"></span></p>
<h3>Install Some Custom Munin Plugins</h3>
<p>In our case, we have a full Ruby on Rails stack featuring nginx front end web server, HA Proxy load balancer, a cluster of thin instances for the Rails application, memcached for caching page fragments and a MySQL database backend.<br />
No matter how your stack looks like, you&#8217;ll find some good munin plugins at <a href="http://muninexchange.projects.linpro.no/">MuninExchange</a>. Some of them are pretty basic (or not working as required) but give you a great head start. Just grab one of them and put it into the <code>/usr/share/munin/plugins</code> dir on any munin node. Make it executable (<code>chmod 755 thin_memory</code>) and  enable the plugin by symlinking it to <code>/etc/munin/plugins</code> (you must restart your munin-node after adding new plugins). </p>
<p>Alternatively to manually symlinking your plugin, just call <code>root@node:/usr/share/munin/plugins# munin-node-configure --shell</code> to do it for you. It will only link plugins compatible with your configuration (see the <a href="http://munin.projects.linpro.no/wiki/munin-node-configure">munin-node config docs</a> for details)</p>
<h3>Test Your Custom Munin Plugins</h3>
<p>You&#8217;ve got basically three ways of making sure your plugin works:</p>
<ol>
<li><strong>Run the munin plugin script directly</strong>:<br />
This is the most basic way to ensure, that your munin plugin returns reasonable values. Just execute the script directly on your munin node.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>node:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>munin<span style="color: #000000; font-weight: bold;">/</span>plugins<span style="color: #666666; font-style: italic;"># ./thin_memory</span></pre></div></div>

<p>Your script should return something like this (depending on how many thin instances you run on which ports):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">thin_8000.value <span style="color: #000000;">180</span>
thin_8001.value <span style="color: #000000;">178</span>
thin_8002.value <span style="color: #000000;">175</span>
thin_8003.value <span style="color: #000000;">169</span></pre></div></div>

</li>
<li><strong>Use <code>munin-run</code> to execute the plugin locally</strong>:<br />
The next stage is to test whether the munin plugin still returns reasonable values when executed as a munin-node process:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>node:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>munin<span style="color: #000000; font-weight: bold;">/</span>plugins<span style="color: #666666; font-style: italic;"># munin-run thin_memory --debug</span></pre></div></div>

<p>This should return something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Saving mysql*-&gt;env-&gt;mysqlopts = --defaults-extra-file=/etc/mysql/debian.cnf...</span>
...
<span style="color: #666666; font-style: italic;"># file: 'thin_memory'</span>
<span style="color: #666666; font-style: italic;"># Checking thin_*...</span>
<span style="color: #666666; font-style: italic;"># Checking thin_*...</span>
<span style="color: #666666; font-style: italic;"># Checking thin_*...</span>
<span style="color: #666666; font-style: italic;"># Checking thin_*...</span>
<span style="color: #666666; font-style: italic;"># Want to run as euid/egid 0/106</span>
<span style="color: #666666; font-style: italic;"># Running as uid/gid/euid/egid 0/106 106/0/106 106</span>
<span style="color: #666666; font-style: italic;"># DEBUG: About to exec &quot;/etc/munin/plugins/thin_memory&quot;</span>
thin_8000.value <span style="color: #000000;">180</span>
thin_8001.value <span style="color: #000000;">178</span>
thin_8002.value <span style="color: #000000;">175</span>
thin_8003.value <span style="color: #000000;">169</span></pre></div></div>

</li>
<li><strong>Run <code>munin-update</code> at your munin server</strong>: The final stage is to manually invoke the munin server process to see, whether it is able to collect data from your munin plugin remotely:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>munin-server:~<span style="color: #666666; font-style: italic;"># /usr/share/munin/munin-update --debug --nofork --stdout --host node.example.com --service thin_memory</span></pre></div></div>

<p>Watch out for lines like these:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">...
Dec <span style="color: #000000;">17</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">41</span>:<span style="color: #000000;">31</span> - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17775</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Fetching service: node.example.com-<span style="color: #000000; font-weight: bold;">&gt;</span>thin_memory
Dec <span style="color: #000000;">17</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">41</span>:<span style="color: #000000;">31</span> - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17775</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Updating <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>munin<span style="color: #000000; font-weight: bold;">/</span>reference<span style="color: #000000; font-weight: bold;">/</span>node.example.com-thin_memory-thin_8000-g.rrd with <span style="color: #000000;">180</span>
Dec <span style="color: #000000;">17</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">41</span>:<span style="color: #000000;">31</span> - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17775</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Updating <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>munin<span style="color: #000000; font-weight: bold;">/</span>reference<span style="color: #000000; font-weight: bold;">/</span>node.example.com-thin_memory-thin_8001-g.rrd with <span style="color: #000000;">179</span>
Dec <span style="color: #000000;">17</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">41</span>:<span style="color: #000000;">31</span> - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17775</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Updating <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>munin<span style="color: #000000; font-weight: bold;">/</span>reference<span style="color: #000000; font-weight: bold;">/</span>node.example.com-thin_memory-thin_8002-g.rrd with <span style="color: #000000;">175</span>
Dec <span style="color: #000000;">17</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">41</span>:<span style="color: #000000;">31</span> - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17775</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Updating <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>munin<span style="color: #000000; font-weight: bold;">/</span>reference<span style="color: #000000; font-weight: bold;">/</span>node.example.com-thin_memory-thin_8003-g.rrd with <span style="color: #000000;">169</span>
Dec <span style="color: #000000;">17</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">41</span>:<span style="color: #000000;">31</span> - <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17775</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Fetched service: node.example.com -<span style="color: #000000; font-weight: bold;">&gt;</span> thin_memory <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.08</span> sec<span style="color: #7a0874; font-weight: bold;">&#41;</span>
...</pre></div></div>

<li>
</ol>
<p>And, last, but not least, there&#8217;s good, old telnet which you can use to contact and query any munin-node:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">me<span style="color: #000000; font-weight: bold;">@</span>anywhere:~$ telnet node <span style="color: #000000;">4949</span></pre></div></div>

<p>You may use <code>list</code> to see, which services are monitored at your node, and <code>fetch thin_memory</code> to get the current values. Just type <code>help</code> to see what else you can do there.</p>
<p>Customizing your munin installation with additional munin plugins is quite easy and straight forward. You just need some scripts from MuninExchange and enable them for use via <code>munin-node</code>. The various ways of debugging your plugins really help to get your monitoring up fast.</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/getting-a-grip-on-your-operations-with-munin/' rel='bookmark' title='Permanent Link: Getting a Grip on your Operations with Munin'>Getting a Grip on your Operations with Munin</a></li>
<li><a href='http://www.agileweboperations.com/monitoring-tools-essentials-munin-vs-nagios/' rel='bookmark' title='Permanent Link: Monitoring tools essentials: Munin vs. Nagios'>Monitoring tools essentials: Munin vs. Nagios</a></li>
<li><a href='http://www.agileweboperations.com/securely-tunneling-munin-traffic/' rel='bookmark' title='Permanent Link: Securely tunneling Munin traffic'>Securely tunneling Munin traffic</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/tailoring-your-munin-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sub-optimization Kills Customer Value</title>
		<link>http://www.agileweboperations.com/sub-optimization-kills-customer-value/</link>
		<comments>http://www.agileweboperations.com/sub-optimization-kills-customer-value/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 20:22:02 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Agile Methodologies]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[value stream mapping]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1777</guid>
		<description><![CDATA[

			
				
			
		
When we start optimizing our processes, it happens quite often that we only optimize our area of influence instead of addressing the whole process of creating customer value. When we&#8217;re responsible for a software development or an operations team, we tend to optimize the process of our team. We adapt agile practices and our teams [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/a-kanban-board-for-features/' rel='bookmark' title='Permanent Link: A Kanban Board for Features'>A Kanban Board for Features</a></li>
<li><a href='http://www.agileweboperations.com/kanban-vs-iterative-development/' rel='bookmark' title='Permanent Link: Kanban vs. Iterative Development'>Kanban vs. Iterative Development</a></li>
<li><a href='http://www.agileweboperations.com/kanban-wip-limits-the-fine-art-of-focus/' rel='bookmark' title='Permanent Link: Kanban WIP Limits &#8211; The Fine Art of Focus'>Kanban WIP Limits &#8211; The Fine Art of Focus</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/sub-optimization-kills-customer-value/" title="Permanent link to Sub-optimization Kills Customer Value"><img class="post_image alignleft" src="http://farm1.static.flickr.com/100/254431769_a249857969_m.jpg" width="240" height="180" alt="picture by luckyfly" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fsub-optimization-kills-customer-value%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fsub-optimization-kills-customer-value%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>When we start optimizing our processes, it happens quite often that we only optimize our area of influence instead of addressing the whole process of creating customer value. When we&#8217;re responsible for a software development or an operations team, we tend to optimize the process of our team. We adapt agile practices and our teams performance seems to skyrocket. But even if we&#8217;re that successful, it might do more harm than good. We might flood the QA team with features, which they have to sign off, creating overload on their end. Or our operations environment might be the greatest part of our organization, but there are no new features or necessary bug fixes arriving for deployment.</p>
<h3>We Need to Think End-to-end</h3>
<p><span id="more-1777"></span><br />
In both scenarios the customer does <em>not</em> benefit from our optimization. We sub-optimized our area of responsibility without taking the complete company with us. Only if everyone involved in creating value is working together and bottlenecks are removed from all stages do customers truly benefit.</p>
<h3>Finding and Removing Bottlenecks</h3>
<p>For being able to optimize the whole, we&#8217;ve to look outside of our home turf. We have to find out how customer demand reaches our organization, how it flows through the various departments and how the demanded value is finally delivered to our customers. One tool to use for such analysis is <a href="http://www.agileweboperations.com/i-want-start-agile-how-can-i-do/">Value Stream Mapping</a>.</p>
<p>When we&#8217;ve identified the biggest bottleneck in our end-to-end flow, it&#8217;s time to start removing it. If it lies in our area of responsibility, that&#8217;s rather easy. But if it is outside of our direct reach, we need to get into office politics &#8211; we need to convince others that they have a problem and that they have to fix it. That&#8217;s usually not too easy. But, again, only if we optimize the whole instead of sub-optimizing parts of the value creation flow inside our organization will the customer truly benefit.</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/a-kanban-board-for-features/' rel='bookmark' title='Permanent Link: A Kanban Board for Features'>A Kanban Board for Features</a></li>
<li><a href='http://www.agileweboperations.com/kanban-vs-iterative-development/' rel='bookmark' title='Permanent Link: Kanban vs. Iterative Development'>Kanban vs. Iterative Development</a></li>
<li><a href='http://www.agileweboperations.com/kanban-wip-limits-the-fine-art-of-focus/' rel='bookmark' title='Permanent Link: Kanban WIP Limits &#8211; The Fine Art of Focus'>Kanban WIP Limits &#8211; The Fine Art of Focus</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/sub-optimization-kills-customer-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Is About Feedback, Not About Fancy Practices</title>
		<link>http://www.agileweboperations.com/agile-is-about-feedback-not-about-fancy-practices/</link>
		<comments>http://www.agileweboperations.com/agile-is-about-feedback-not-about-fancy-practices/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 16:13:34 +0000</pubDate>
		<dc:creator>Matthias Marschall</dc:creator>
				<category><![CDATA[Agile Methodologies]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.agileweboperations.com/?p=1770</guid>
		<description><![CDATA[

			
				
			
		
Too often people complain that to become agile they need to start using iterations, fancy story points and time boxes even though it simply does not fit the way they work.
But, that&#8217;s not true. Agile is much simpler than that. And much harder. In essence, agile is about fast feedback. But the feedback needs to [...]


Related posts:<ul><li><a href='http://www.agileweboperations.com/the-12-principles-behind-the-agile-manifesto-adapted-to-web-operations/' rel='bookmark' title='Permanent Link: The 12 principles behind the agile manifesto adapted to web operations'>The 12 principles behind the agile manifesto adapted to web operations</a></li>
<li><a href='http://www.agileweboperations.com/agile-links-from-the-archives/' rel='bookmark' title='Permanent Link: Agile Links From The Archives'>Agile Links From The Archives</a></li>
<li><a href='http://www.agileweboperations.com/introducing-agile-practices-manage-remote-development-team-series/' rel='bookmark' title='Permanent Link: Introducing Agile Practices to Manage a Remote Development Team Series'>Introducing Agile Practices to Manage a Remote Development Team Series</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.agileweboperations.com/agile-is-about-feedback-not-about-fancy-practices/" title="Permanent link to Agile Is About Feedback, Not About Fancy Practices"><img class="post_image alignright" src="http://farm2.static.flickr.com/1170/864731205_67238ff62e_m.jpg" width="240" height="240" alt="picture by woodleywonderworks" /></a>
</p><div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-is-about-feedback-not-about-fancy-practices%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileweboperations.com%2Fagile-is-about-feedback-not-about-fancy-practices%2F&amp;source=mmarschall&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Too often people complain that to become agile they need to start using iterations, fancy story points and time boxes even though it simply does not fit the way they work.<br />
But, that&#8217;s not true. Agile is much simpler than that. And much harder. In essence, agile is about fast feedback. But the feedback needs to be relevant.<br />
<span id="more-1770"></span></p>
<h3>Real Customer Value</h3>
<p>The most important thing to make feedback relevant is to get it from the right people. Especially in design questions, everyone seems to be an expert. But, in the end, only the end users count. Are they able to get value out of using your product? That&#8217;s the only thing which really counts and that&#8217;s usually the feedback which is hardest to get.</p>
<h3>The Art Of Knowing&#8230;</h3>
<p>One way of getting that feedback is demoing working software at the end of an iteration. By doing so, you ensure that you get feedback at least every couple of weeks by at least customer representatives (if no real users can take part in your demos). But there&#8217;s an even faster way of getting <em>direct</em> feedback from your <em>real</em> users. By using click tracking, session recording and A/B testing (<a href="http://www.google.com/websiteoptimizer">Google Website Optimizer</a>, <a href="http://www.bingocardcreator.com/abingo">A/Bingo</a>), you get relevant feedback constantly. How can you possibly get more agile? And <em>this</em> has nothing to do with fancy, magic agile practices&#8230;</p>


<p>Related posts:<ul><li><a href='http://www.agileweboperations.com/the-12-principles-behind-the-agile-manifesto-adapted-to-web-operations/' rel='bookmark' title='Permanent Link: The 12 principles behind the agile manifesto adapted to web operations'>The 12 principles behind the agile manifesto adapted to web operations</a></li>
<li><a href='http://www.agileweboperations.com/agile-links-from-the-archives/' rel='bookmark' title='Permanent Link: Agile Links From The Archives'>Agile Links From The Archives</a></li>
<li><a href='http://www.agileweboperations.com/introducing-agile-practices-manage-remote-development-team-series/' rel='bookmark' title='Permanent Link: Introducing Agile Practices to Manage a Remote Development Team Series'>Introducing Agile Practices to Manage a Remote Development Team Series</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileweboperations.com/agile-is-about-feedback-not-about-fancy-practices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
