<?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>The Ways of an Agile Poodle</title>
	<atom:link href="http://www.jussimononen.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jussimononen.info</link>
	<description>Failing a lot and enjoying it!</description>
	<lastBuildDate>Fri, 19 Oct 2012 18:02:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>An anatomy of a successful retrospective</title>
		<link>http://www.jussimononen.info/2012/10/19/an-anatomy-of-a-successful-retrospective/</link>
		<comments>http://www.jussimononen.info/2012/10/19/an-anatomy-of-a-successful-retrospective/#comments</comments>
		<pubDate>Fri, 19 Oct 2012 18:00:06 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Retrospectives]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=511</guid>
		<description><![CDATA[It had been a while since I last facilitated a retrospective. So, I wanted to make sure that I can deliver and prepared properly. I had a few ideas of my own and few based on short discussions I had had what the retrospective should address. The scope was quite large so I couldn&#8217;t use]]></description>
				<content:encoded><![CDATA[<p>It had been a while since I last facilitated a retrospective. So, I wanted to make sure that I can deliver and prepared properly. I had a few ideas of my own and few based on short discussions I had had what the retrospective should address.</p>
<p>The scope was quite large so I couldn&#8217;t use any specific way of gathering information and insights. I had to allow room for a very wide variety of topics.</p>
<p>Without further ado here is the skeleton I used for the retrospective.</p>
<ol>
<li>Get a mood reading (max 5min)</li>
<li>Gather insights (max 10min)</li>
<li>Decide what to do (max 35min)</li>
<li>Form an improvement backlog (max 5min)</li>
<li>End with a different goal in mind (max 5min)</li>
</ol>
<h3>Getting a mood reading</h3>
<p>I wanted to know and I wanted the participants to know what are the prejudices we are working with. I used the EVSP (Explorer-Shopper-Vacationer-Prisoner) as the ice breaker. With a closed vote everyone wrote down a single letter defining their current attitude towards retrospectives at the moment. Here are the results:</p>
<p style="text-align: center;"><a href="http://www.jussimononen.info/wp-content/uploads/2012/10/ESVP-small.png"><img class="size-thumbnail wp-image-512 aligncenter" title="ESVP-small" src="http://www.jussimononen.info/wp-content/uploads/2012/10/ESVP-small-150x150.png" alt="ESVP results" width="150" height="150" /></a></p>
<h3>Getting something to chew on</h3>
<p>Then it was time to move forward and start to gather information to support our aims. Due to the amount of issues known in advance I decided to include last two sprints (we have 2 week sprints) in our time-line exercise. I had two different coloured sticky notes: green ones to signify memorable events and yellow ones to signify meaningful events. Time-line itself was very simple with only two dimensions: time and impact. Time runs from left to right and impact from top to bottom. The higher the note was placed the better the event was and the lower it was placed the worse the event was.</p>
<p>In small groups, 2 or 3 persons, people started and recalled the most important moments and placed them properly on the whiteboard with respect to both the time axis and the Good-Bad axis.</p>
<p><a href="http://www.jussimononen.info/wp-content/uploads/2012/10/timeline-small.png"><img class="aligncenter size-thumbnail wp-image-515" title="timeline-small" src="http://www.jussimononen.info/wp-content/uploads/2012/10/timeline-small-150x150.png" alt="Timeline of 2 last sprints" width="150" height="150" /></a>Now we had something real and concrete to work with.</p>
<h3>Morphing events into concrete form</h3>
<p>After we had looked into our near past it was time to turn the history into actionable issues. I had prepared one whiteboard with three columns: Stop Doing, Start doing and Keep Doing. I told the team to use the info we just had gathered and by themselves write sticky notes containing issues that mattered to them. I instructed them to keep the notes secret until placed on the whiteboard. The notes were placed one at a time so that we could discuss each and every note immediately.</p>
<p>Ta-daa! We had concrete issues we could address! Next I lead the team to find themes within the notes. You can see the notes that address the same issue connected on the image. This proved to be extremely fruitful and good discussion and analysis followed.<a href="http://www.jussimononen.info/wp-content/uploads/2012/10/start-stop-keep-small.png"><img class="aligncenter size-thumbnail wp-image-514" title="start-stop-keep-small" src="http://www.jussimononen.info/wp-content/uploads/2012/10/start-stop-keep-small-150x150.png" alt="Start doing, stop doing, keep doing!" width="150" height="150" /></a></p>
<p>Then it was time to create our improvement backlog. I gave the team 5 minutes to create actions based on the discussions and notes on the three columns.</p>
<p>If you look closely, on the right corner of the image you can see a bunch of red notes. Those notes are the actions that the team found. They are prioritized based on importance <strong>and</strong> effort required. Effort is significant here, very often the actions are such that the team can not accomplish them alone. Thus, it is very important to have actions that can be implemented immediately.</p>
<h3>Ending the show</h3>
<p>We had found really good candidates for the team to improve on and it was time to move on. We&#8217;ve had all kinds of retrospectives from good to bad to boring so it was appropriate to give the team a possibility to improve on the retrospectives. So, the last item was retrospective process improvement, what is good and what needs to be changed.</p>
<p><a href="http://www.jussimononen.info/wp-content/uploads/2012/10/retro-process-imprv-small.png"><img class="aligncenter size-thumbnail wp-image-513" title="retro-process-imprv-small" src="http://www.jussimononen.info/wp-content/uploads/2012/10/retro-process-imprv-small-150x150.png" alt="Retrospecetive process improvement" width="150" height="150" /></a></p>
<p>Got some very good feedback, ideas and improvement suggestions :)</p>
<h3>Required ingredients?</h3>
<ol>
<li>Preparations in advance</li>
<li>Storyline sketched</li>
<li>Neutral facilitator</li>
<li>Fearless people</li>
</ol>
<p>I had prepared the team room in advance, 2 whiteboards and 2 large paper sheets, enough sticky notes and pens/markers. Timer for timekeeping and enforcing time-boxes. Healthy attitude so that I could leave myself out of the retrospective even though I am a team member. Gentle guidance to allow everyone the chance to speak up.</p>
<p>I was pleasantly surprised how well this went and I want to thank my team for excellent attitude and a sincere desire to improve and discuss even the most difficult subjects. There&#8217;s definitely improvement ahead!</p>
<p><em>None of this would have been possible without the help of the excellent book <a href="http://pragprog.com/book/dlret/agile-retrospectives">Agile Retrospectives: Making Good Teams Great</a> by <a href="https://twitter.com/estherderby">Esther Derby</a> and <a href="http://futureworksconsulting.com/who-we-are/diana-larsen">Diana Larsen</a>. I recommend it for everyone interested in retrospectives.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2012/10/19/an-anatomy-of-a-successful-retrospective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Zone Considered Dangerous</title>
		<link>http://www.jussimononen.info/2012/10/15/the-zone-considered-dangerous/</link>
		<comments>http://www.jussimononen.info/2012/10/15/the-zone-considered-dangerous/#comments</comments>
		<pubDate>Mon, 15 Oct 2012 20:57:24 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[Pair programming]]></category>
		<category><![CDATA[Software Craftsmanship]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=502</guid>
		<description><![CDATA[Most programmers know what is &#8220;The Zone&#8221;. It is a very focused state of mind where you feel that there are no problems that you cannot solve. You know, the state where your surroundings disappear and you feel almost omnipotent. You are very productive, take great leaps and progress fast. I posit that this is]]></description>
				<content:encoded><![CDATA[<p>Most programmers know what is &#8220;The Zone&#8221;. It is a very focused state of mind where you feel that there are no problems that you cannot solve. You know, the state where your surroundings disappear and you feel almost omnipotent. You are very productive, take great leaps and progress fast.</p>
<p>I posit that this is a dangerous for a couple of reasons.</p>
<h3>Too tight focus</h3>
<p>In my experience it is very hard to make corrective actions while in the zone. The Zone has the same effect as speeding, your sight narrows and with high enough speed you can see only forward. How do you verify that you are solving the correct problem? Are you really going to the right direction? Are you sure? When in &#8220;The Zone&#8221; do you ever stop and wonder &#8220;Is this the right thing to do?&#8221;. Do you ever question the task at hand? Is this really the most valuable feature? Could there be something that would provide even more value?</p>
<p>The Zone is a state of extreme focus and motivation. The problem is that your focus is very likely too sharp. This leads to blindness to your own errors and makes it really hard to change direction. This leads to false productivity as the risk of rework grows very fast. With great speeds even the slightest mistake become huge almost intantly. Think about a steering error while driving over 200km/h.</p>
<h3>Susceptible for interruptions</h3>
<p>&#8220;The Zone&#8221; is fragile. Even the slightest disruption, an email, innocent short question from a colleague, can drop you out of it. Getting back is difficult so your productivity is going up and down very frequently. This can be really frustrating and a real motivation killer in the long run, especially when you consider the nature of software development which emphasizes team work and continuous communication.</p>
<p>You may have your own private room you can hide in but is it smart to shut out others? If everyone is locked up in their rooms what does it do to your team spirit? Privacy is ok and should be respected but isolation is not. With people spread out in their rooms how can you ensure that you are all pulling the same rope and in the same direction? Which leads us to the next pitfall.</p>
<h3>Silos</h3>
<p>Everything that is done alone encourages silos. It is always harder to spread knowledge afterwards. Spend too long on one task and you become the sole source of information. In other words a single point of failure.</p>
<p>Isolating yourself to ensure uninterrupted &#8220;zone&#8221; prevents you from learning from others, gaining information from others and spreading your knowledge to others. Silos prevent sharing the code and the code wants to be shared. In other words you have too long feedback loops.</p>
<h3>Too long feedback loops</h3>
<p>While in &#8220;The Zone&#8221; you are alone. Very alone. How can you be sure that you are doing the smartest possible thing? Is it the right thing to do? You practice TDD so technically you are on the right path but logically? Have you been derailed from your original goal? When is your next code review? Can you afford to wait that long? Are you sure that your domain knowledge is deep enough? While you worked in the zone and progressed did it actually move you forward in the right direction?</p>
<p>What if you had understood something incorrectly? Depending on the size of your task this can mean all you have delivered was waste (excluding your own learning). Did you write too much code? Did you try to anticipate the future?</p>
<h3>The antidote</h3>
<p>You can overcome some of the issues of the zone by ensuring frequent communication with the business and making sure that all tasks are small enough in order to shorten the feedback loop. This still leaves you in a more fragile state than we would want.</p>
<p>But there exists a very effective practice that renders the negative aspects of the zone very close to non-existent.</p>
<p>Pair programming.</p>
<h3>Pairing</h3>
<p>In psychology terms &#8220;The Zone&#8221; sounds like flow. <a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29">Flow</a> is described as a state of focus, motivation and productivity. I want to make a semantic difference between these two states and add negative connotation to &#8220;The Zone&#8221; and positive connotation to &#8220;The Flow&#8221;.</p>
<p>Pairing gets you into a flow fast and it is easy to stay in the flow!</p>
<p>Pairing gives you enough focus but it isn&#8217;t too tight. It&#8217;s like having someone to read the map to you while driving to an unknown location for the first time. And it beats the GPS and other map utilities hands down. You always have someone there to question your train of thoughts, helping you to take the right exit or turn and to stop when it is time to stop.</p>
<p>While pairing interruptions don&#8217;t cost even nearly as much as they while in the zone. The pair can very quickly regroup and maintain their momentum. You can momentarily split up and continue after the interruption has been dealt with.</p>
<p>You can&#8217;t hide information while pairing and you can&#8217;t become a silo. You will learn, teach and gain information while pairing.</p>
<p>Pairing while programming gives you a feedback loop of seconds. Your thoughts are evaluated as soon as you articulate them. And articulating your problems is the best way to solve them.</p>
<p>Don&#8217;t keep zoning, start pairing</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2012/10/15/the-zone-considered-dangerous/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Demanding transparency?</title>
		<link>http://www.jussimononen.info/2011/11/02/demanding-transparency/</link>
		<comments>http://www.jussimononen.info/2011/11/02/demanding-transparency/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 18:45:55 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[Intent]]></category>
		<category><![CDATA[micro management]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=484</guid>
		<description><![CDATA[What if someone demands transparency from you? What do you do? What does transparency mean? It can mean that we should keep things in the open, no secrets or that our doings are audited and we can back-trace them every time we need or want to. In other words, saying that there is not enough]]></description>
				<content:encoded><![CDATA[<p>What if someone demands transparency from you? What do you do? What does transparency mean?</p>
<p>It can mean that we should keep things in the open, no secrets or that our doings are audited and we can back-trace them every time we need or want to. In other words, saying that there is not enough transparency means that there is not enough trust. Sometimes the word transparency is used masking the desire to know what is going on.<a href="http://www.jussimononen.info/wp-content/uploads/2011/11/transparency.jpg"><img class="alignright size-thumbnail wp-image-487" title="transparency" src="http://www.jussimononen.info/wp-content/uploads/2011/11/transparency-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Demanding more transparency smells a lot like green-washed management. Instead of saying &#8220;Keep me posted on whatever you do!&#8221;, require transparency. I say it is just a management intent in a disguise!</p>
<p>Thus transparency is attached with a bad echo. Especially if the people involved are not co-located or there are no clear backlogs for work. The person demanding transparency wants to gain assurance that everything is going as planned. This leads to micromanagement and reporting.</p>
<p>In other words, there is not enough trust.</p>
<p>Sometimes the word &#8216;transparency&#8217; is used to replace the word visibility though. Using it this way is in my opinion harmful because it is very easy to confuse with the previously mentioned management-loaded term. Avoid it.</p>
<p>There are at least two ways out of these situations. One is to increase the visibility, especially if people are co-located, to increase communication. The other way is to build up the trust. Trust that the other party is doing her best.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/11/02/demanding-transparency/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I will be speaking at Tampere Goes Agile 2011!</title>
		<link>http://www.jussimononen.info/2011/06/29/i-will-be-speaking-at-tampere-goes-agile-2011/</link>
		<comments>http://www.jussimononen.info/2011/06/29/i-will-be-speaking-at-tampere-goes-agile-2011/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 08:45:10 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=479</guid>
		<description><![CDATA[Wow! :) I&#8217;d like give huge thanks to the organising posse for trusting me with a slot! This will be the first time for me to speak in a conference. It&#8217;s quite funny since I have participated in exactly one conference, the one that I was organizing. My presentation is still very much in its]]></description>
				<content:encoded><![CDATA[<p>Wow! :)<a href="http://www.jussimononen.info/wp-content/uploads/2011/06/fluffy_flower.jpg"><img class="alignright size-thumbnail wp-image-480" title="fluffy flowers..." src="http://www.jussimononen.info/wp-content/uploads/2011/06/fluffy_flower-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>I&#8217;d like give huge thanks to the <a href="http://tamperegoesagile.fi/about/organizers/">organising</a> posse for trusting me with a slot! This will be the first time for me to speak in a conference. It&#8217;s quite funny since I have participated in exactly one conference, <a href="http://www.scan-agile.org/">the one that I was organizing</a>.</p>
<p>My presentation is still very much in its infancy, but the topic is quite clear. I will be speaking about software craftsmanship. It&#8217;s very important topic for me and I want to share my ideas what it means in practice and what are its consequences. It will be a 45 minute presentation so I will have or should have enough time to consider the topic from multiple angles.</p>
<p>The conference main site is <a href="http://tamperegoesagile.fi/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/06/29/i-will-be-speaking-at-tampere-goes-agile-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trying to see the big picture with Kanban</title>
		<link>http://www.jussimononen.info/2011/05/24/trying-to-see-the-big-picture-with-kanban/</link>
		<comments>http://www.jussimononen.info/2011/05/24/trying-to-see-the-big-picture-with-kanban/#comments</comments>
		<pubDate>Tue, 24 May 2011 19:19:26 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[kanban]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[wip]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=454</guid>
		<description><![CDATA[Awesome start at work! I&#8217;m in a team of four very experienced and smart people, we have a product owner who is tech-savvy, knows what he wants and sits in our team room! On top of that we have an excellent room where single every wall is covered with material that you can pin stuff]]></description>
				<content:encoded><![CDATA[<p>Awesome start at work!</p>
<p>I&#8217;m in a team of four very experienced and smart people, we have a product owner who is tech-savvy, knows what he wants and sits <strong>in</strong> our team room! On top of that we have an excellent room where single every wall is covered with material that you can pin stuff into. We have been given control over our tools and we are given a lot of trust (which is as it should be ;) ). We agreed to start with kanban as our development process and that made me extremely glad since I haven&#8217;t been able participate in a real kanban project yet!</p>
<p><a href="http://www.jussimononen.info/wp-content/uploads/2011/05/swimlanes.jpg"><img class="alignright size-thumbnail wp-image-459" title="swimlanes" src="http://www.jussimononen.info/wp-content/uploads/2011/05/swimlanes-150x150.jpg" alt="" width="150" height="150" /></a>We are now roughly two weeks into our green-field project. We started out with a simple three swim lane kanban-board where one swim lane is for product backlog stories, one lane for team stuff (environment, tooling, etc.) and one lane for the PO. Almost all work flow states have a WIP limit of 2, one has a limit of 4. At any time only two user stories can be under work. your basic kanban stuff.</p>
<p>We have the categorised the product backlog stories and pinned them on the wall. They form a vague big cloud, a chunk of things, that we are supposed to make. And this chunk is annoying since it does not provide a <em>coherent vision</em>, <em>idea</em> or <em>goal</em> for the team. Well, of course the goal is make the <em>whole product</em>, but that doesn&#8217;t really help in daily work. The team needs a short-term goal and a vision to support its work. The vision could be described as an <em>epic</em>, a <em>collection</em> of stories. Simply put, we need to know where to aim at on a shorter time interval. Our initial kanban board didn&#8217;t give this vision but our PO had already defined it and written it down on one of our whiteboards. So it was there for us but it wasn&#8217;t part of our kanban board. How could we incorporate it with our board?</p>
<p>I devised a kind of a funnel, a new stage if you will. Epics are pulled from the Big Cloud and placed into a funnel. It will be the teams goal and provide a clear path for us to work with. The contents of an epic are coherent and we can easily see, for example,  interdependencies between stories. It is also extremely useful when we manage to get some data about our lead time to help us estimate when a certain product increment is ready. This can then be conveyed to the stakeholders and business people. We can estimate and tell them when to expect a set of features instead of the whole product or just a single story.</p>
<p>To put it short, we now have three stages in our kanban wall. From the backlog cloud the PO can envision an epic for the team that will guide us to the next composition of increments. From the epic stage we pull stories to the kanban board for the teams daily work.</p>
<p>To some of you this may feel like we are aspiring for things that Scrum gives you out of the box. Well, we are but rather than restricting us with Scrum we are doing things that we feel benefit us and our stakeholders. We have retrospectives, we are going to show (or demo) what we have achieved and we are going to estimate the big chunk of stories. But we do an activity only if it will bring value. For example, if there is no value in estimating the backlog, we won&#8217;t do it. But we are going to try things that are deemed valuable either by the team or the stakeholders. And remember that the epic <strong>can be withdrawn</strong> at any time as it is not taken under work, we still do work only on story level!</p>
<p>I am eagerly waiting how the process will evolve and what is the direction it will evolve?</p>
<p><span style="color: #c0c0c0;">(picture by </span><a href="http://www.flickr.com/photos/cantoni/"><span style="color: #c0c0c0;">cantoni</span></a><span style="color: #c0c0c0;">)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/05/24/trying-to-see-the-big-picture-with-kanban/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My new job &#8211; first two days</title>
		<link>http://www.jussimononen.info/2011/05/03/my-new-job-first-two-days/</link>
		<comments>http://www.jussimononen.info/2011/05/03/my-new-job-first-two-days/#comments</comments>
		<pubDate>Tue, 03 May 2011 20:31:24 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Colleagues]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Lenovo w510]]></category>
		<category><![CDATA[nitor creations]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=446</guid>
		<description><![CDATA[Lovin&#8217; it already. And today was my second day at Nitor Creations. I got a new laptop (Lenovo W510/12GB mem, i7 quad-core!) with win7. Well, I have very little knowledge  how to work effectively with windows so the inevitable happened and Kubuntu 11.04 &#160; &#160; &#160; stole the boot sector. Some issues with stability though,]]></description>
				<content:encoded><![CDATA[<p>Lovin&#8217; it already. And today was my second day at <a title="Nitor Creations" href="http://nitorcreations.com/" target="_blank">Nitor Creations</a>. I got a new laptop (Lenovo W510/12GB mem, i7 quad-core!) with win7. Well, I have very little knowledge  how to work effectively with windows so the inevitable happened and <a href="http://www.kubuntu.org/" target="_blank">Kubuntu 11.04</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://www.jussimononen.info/wp-content/uploads/2011/05/kubuntu-logo-lucid.png"><img class="size-full wp-image-450 aligncenter" title="kubuntu-logo-lucid" src="http://www.jussimononen.info/wp-content/uploads/2011/05/kubuntu-logo-lucid.png" alt="" width="400" height="78" /></a></p>
<p>&nbsp;</p>
<p>stole the boot sector. Some issues with stability though, most likely due to NVidia drivers, which were at least partly solved by installing nvidia-current and running nvidia-xconfig and nvidia-settings as root. So far this has been the best work setup I&#8217;ve ever had, plenty of memory and CPU power, the OS I want and no prohibiting policies or idiotic restrictions. Just the way it should be. Anyway, had to make some loops to get <a href="http://www.omgubuntu.co.uk/2010/01/how-to-install-adobe-air-on-ubuntu-64bit-2/">Adobe AIR installed</a> so that I could install Tweetdeck (sigh.). Skype was fortunately a painless installation.</p>
<p>Albeit slightly annoying, the tech issues are become fun in the end and after some struggles it was a joy to join again the Nitor irc-channels. So many like-minded geeks there (I was at the office, others were at the customer sites). And immediately there was a  debate about mocks and unit test quality, just the way I like it. Smart people with different views, ideas and wide experience provides very fertile ground for tough discussions and a good place to test ones ideas. And a very supportive group it is. Everyone willing to help the new guy.</p>
<p>I think I&#8217;m gonna like this place a lot!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/05/03/my-new-job-first-two-days/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A New Job</title>
		<link>http://www.jussimononen.info/2011/04/06/a-new-job/</link>
		<comments>http://www.jussimononen.info/2011/04/06/a-new-job/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 19:18:41 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[nitor creations]]></category>
		<category><![CDATA[opportunity]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=435</guid>
		<description><![CDATA[Spring (duh! the season, not that friggin&#8217; ugly framework) has brought change. I got an irresistible offer, resigned and will be joining the ranks of Nitor Creations starting on the 2nd of May! Oh the joy! I will continue my language journey as soon as possible, but there are some administrative things to be taken]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.nitorcreations.com"><img class="alignright size-full wp-image-439" title="Nitor Creations" src="http://www.jussimononen.info/wp-content/uploads/2011/04/nitor.png" alt="" width="155" height="100" /></a>Spring (duh! the <em>season</em>, not that friggin&#8217; ugly framework) has brought change. I got an irresistible offer, resigned and will be joining the ranks of Nitor Creations starting on the 2nd of May! <em>Oh the joy!</em> I will continue my language journey as soon as possible, but there are some administrative things to be taken care of, like getting a new laptop etc. Thus, my language journey will be delayed a little.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/04/06/a-new-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 languages &#8211; is now 7 languaes and one framework</title>
		<link>http://www.jussimononen.info/2011/03/27/7-languages-is-now-7-languaes-and-one-framework/</link>
		<comments>http://www.jussimononen.info/2011/03/27/7-languages-is-now-7-languaes-and-one-framework/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 08:32:10 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[7 languages]]></category>
		<category><![CDATA[Software Craftsmanship]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[netty]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=431</guid>
		<description><![CDATA[Ok, I&#8217;m done with Ruby for a while. That little webapp I had in mind turned into an app that would require quite much javascript (jQuery, jQueryUI) with very small amount of Ruby code. I may have to come up with an idea for a command line tool written in Ruby to explore Ruby and]]></description>
				<content:encoded><![CDATA[<p>Ok, I&#8217;m done with Ruby for a while. That little webapp I had in mind turned into an app that would require quite much javascript (<a href="http://jquery.com/">jQuery</a>, <a href="http://jqueryui.com/">jQueryUI</a>) with very small amount of Ruby code. I may have to come up with an idea for a command line tool written in Ruby to explore Ruby and exercise my skills properly by removing all the cruft that comes with web apps.</p>
<p>Anyway, suddenly I found myself browsing the <a href="http://www.jboss.org/netty">Netty</a> documentation. I&#8217;ve always had a secret crush with IO so with a little free time in my hands it was a perfect opportunity to explore Netty. Thus, my journey to 7 languages was turned into 7 languages and one framework as I wrote a very crude chat command line application using Netty.</p>
<p>Netty provides very good documentation and the chat app was up and running in very short time. The biggest obstacle was actually generating an executable jar file with dependencies using maven. And even that was solved in less than 10 minutes. So, Netty seems to be an excellent asynchronous, event-driven network application framework. I hope that I could use it for some serious coding @ work!</p>
<p>Now that I&#8217;m derailing once again form my original plans, I may have to come up with more strict wip limits for my journey so that I can actually move forward into the direction I want to instead of jumping around everything that seems even remotely interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/03/27/7-languages-is-now-7-languaes-and-one-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 languages &#8211; Derailing with Ruby on Rails 3</title>
		<link>http://www.jussimononen.info/2011/03/13/7-languages-derailing-with-ror-3/</link>
		<comments>http://www.jussimononen.info/2011/03/13/7-languages-derailing-with-ror-3/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 23:20:13 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[7 languages]]></category>
		<category><![CDATA[Software Craftsmanship]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails 3]]></category>
		<category><![CDATA[WebApp]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=420</guid>
		<description><![CDATA[I was supposed to continue my 7 languages journey, but I didn&#8217;t get Io installed as fast as I had been hoping for. I&#8217;ve seen too many C compiler errors in my life that I felt slightly annoyed that the tool chain for Io compilation requires some effort and new tools have to be installed]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" title="RoR3" src="http://rubyonrails.org/images/rails.png" alt="" width="87" height="111" />I was supposed to continue my 7 languages journey, but I didn&#8217;t get <a href="http://www.iolanguage.com/">Io</a> installed as fast as I had been hoping for. I&#8217;ve seen too many C compiler errors in my life that I felt slightly annoyed that the tool chain for Io compilation requires some effort and new tools have to be installed to my dear Kubuntu. So, in a moment of flux, I actually installed <a href="http://rubyonrails.org/">Ruby on Rails 3</a>.</p>
<p>There was something about Ruby that intrigues me so I convinced myself that I must do something with it. And the easiest and maybe obvious choice was Ruby on Rails and a web application. I&#8217;ve heard that it does amazing things to developer productivity so I might as well give it a shot. Now, I&#8217;ve had an idea for sometime about a very simple browser based utility which I actually might try to implement now with RoR.</p>
<p>Of course I will enhance my <a href="http://code.google.com/p/robotframework/">Robot Framework</a> skills by trying do this web app in true ATDD style. Starting with one user story, writing a Robot test for it, running the Robot test and seeing it fail and only then starting to think how on earth am I going to implement this thing with Ruby and more specifically how do implement it doing TDD with Ruby (or should I try <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a> with <a href="http://rspec.info/">RSpec</a>)?</p>
<p>I will get back on track with Io as soon as I find the strength in me to spoonfeed the compiler and to satisfy the linker&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/03/13/7-languages-derailing-with-ror-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 Languages &#8211; Ruby pt.3</title>
		<link>http://www.jussimononen.info/2011/03/02/7-languages-ruby-pt-3/</link>
		<comments>http://www.jussimononen.info/2011/03/02/7-languages-ruby-pt-3/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 11:46:43 +0000</pubDate>
		<dc:creator>Jussi Mononen</dc:creator>
				<category><![CDATA[7 languages]]></category>
		<category><![CDATA[Software Craftsmanship]]></category>
		<category><![CDATA[Dispatch tables]]></category>
		<category><![CDATA[Mixin]]></category>
		<category><![CDATA[Module]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.jussimononen.info/?p=413</guid>
		<description><![CDATA[I have now waded through the Ruby chapters and exercises of the 7lang7weeks -book. A sparkle has been lit I must say. Ruby does seem to be a very productive programming language, ideal for quick development, prototypes and for situations where time-to-market is essential. Just like Perl. Although I would not compare these two languages]]></description>
				<content:encoded><![CDATA[<p>I have now waded through the Ruby chapters and exercises of the <a href="http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks">7lang7weeks</a> -book. A sparkle has been lit I must say. Ruby does seem to be a very productive programming language, ideal for quick development, prototypes and for situations where time-to-market is essential. Just like Perl. Although I would not compare these two languages as they belong to somewhat different problem domains. They are similar in many good ways.</p>
<p>I found <code><a href="http://stdlib.rubyonrails.org/libdoc/pp/rdoc/index.html">pp</a></code>, a pretty printer for Ruby data structures, lot in vein of Perl&#8217;s <a href="http://search.cpan.org/~smueller/Data-Dumper-2.128/Dumper.pm">Data::Dumper</a>. It is not as good at first glance but my experience with is still in its infancy.</p>
<p>The idea of open classes is marvelous although it requires some discipline from the developer since dynamic typing allows the usage of methods and functionality that might be defined somewhere else. The compiler really can&#8217;t know it yet. Improper usage will result in run-time errors. This is one of the major drawbacks of ducktyping. It gives you freedom but with that freedom comes responsibility. Don&#8217;t ignore it.</p>
<p>I fiddled a little with modules, mixing functionality into other classes. This is one of the experiments</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">module</span> Tweetify
  <span style="color:#9966CC; font-weight:bold;">def</span> tweet<span style="color:#006600; font-weight:bold;">&#40;</span>str<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;[Tweet!] &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> str
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Speaker
  <span style="color:#9966CC; font-weight:bold;">include</span> Tweetify
  attr_accessor <span style="color:#ff3333; font-weight:bold;">:voice</span>, <span style="color:#ff3333; font-weight:bold;">:s</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>voice<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@voice</span> = voice
    <span style="color:#0066ff; font-weight:bold;">@s</span> = <span style="color:#006600; font-weight:bold;">&#123;</span>
      <span style="color:#996600;">'loud'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>str<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC0066; font-weight:bold;">puts</span> str.<span style="color:#9900CC;">upcase</span>! <span style="color:#006600; font-weight:bold;">&#125;</span>,
      <span style="color:#996600;">'low'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>str<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;[shhh!] &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> str.<span style="color:#9900CC;">downcase</span>! <span style="color:#006600; font-weight:bold;">&#125;</span>,
      <span style="color:#996600;">'default'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>str<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC0066; font-weight:bold;">puts</span> str <span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#006600; font-weight:bold;">&#125;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> speak<span style="color:#006600; font-weight:bold;">&#40;</span>what<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@s</span><span style="color:#006600; font-weight:bold;">&#91;</span>@voice<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>what<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
s = Speaker.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;loud&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
s.<span style="color:#9900CC;">tweet</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;twit twit&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
s.<span style="color:#9900CC;">speak</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;am I yelling?&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
s.<span style="color:#9900CC;">voice</span> = <span style="color:#996600;">&quot;low&quot;</span>
s.<span style="color:#9900CC;">speak</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;I SHOULD BE WHISPERING NOW&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div>

<p>I learned through a struggle that instance variables must be initialized within a method, otherwise their content is lost. Or I just don&#8217;t know the intricacies of  Ruby well enough. Overall the books Ruby exercises are good. Exercises touch the parts that Ruby is good at. Something more difficult could be useful and something to be done from the scratch instead of extending the books code snippets.</p>
<p>Now it is time to move forward to the next language (<a href="http://www.iolanguage.com/">io</a>!) but I would love to stay with Ruby a little longer. I just may have to find something for my own pleasure. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jussimononen.info/2011/03/02/7-languages-ruby-pt-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
