<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Geektalk</title>
	<atom:link href="http://olvemaudal.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://olvemaudal.wordpress.com</link>
	<description>Blog by Olve Maudal</description>
	<lastBuildDate>Tue, 07 May 2013 10:03:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='olvemaudal.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Geektalk</title>
		<link>http://olvemaudal.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://olvemaudal.wordpress.com/osd.xml" title="Geektalk" />
	<atom:link rel='hub' href='http://olvemaudal.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Hannametoden &#8211; slik løser du Rubik&#8217;s kube (som vist på TV2)</title>
		<link>http://olvemaudal.wordpress.com/2012/02/17/hannametoden/</link>
		<comments>http://olvemaudal.wordpress.com/2012/02/17/hannametoden/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 08:45:30 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[how to solve]]></category>
		<category><![CDATA[rubik's cube]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/2012/02/17/hannametoden-slik-loser-du-rubiks-kube-som-vist-pa-tv2/</guid>
		<description><![CDATA[Her er en enkel beskrivelse på hvordan man løser Rubik&#8217;s kube (PDF). Jeg skrev den som en lærebok til min datter Hanna da hun var 8 år gammel &#8211; derav navnet Hannametoden. Det er en forenklet versjon av en metode som brukes av de beste i verden (CFOP / Fridrich). Hun brukte et par dager [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=316&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Her er en enkel beskrivelse på hvordan man løser Rubik&#8217;s kube (<a href="http://olvemaudal.files.wordpress.com/2012/02/rubikscube_hanna_feb2012.pdf">PDF</a>). Jeg skrev den som en lærebok til min datter Hanna da hun var 8 år gammel &#8211; derav navnet Hannametoden. Det er en forenklet versjon av en metode som brukes av de beste i verden (<a href="http://en.wikipedia.org/wiki/Fridrich_Method">CFOP / Fridrich</a>). Hun brukte et par dager på å lære seg å løse kuben på egen hånd basert på denne &#8220;oppskriften&#8221;. Vi besøkte &#8220;God Morgen Norge&#8221; på TV2 den 17. Februar 2012 hvor blant annet denne metoden ble presentert (<a href="http://www.tv2.no/gmn/slik-loeser-du-rubiks-kube-3710281.html">artikkel</a>).</p>
<p>English summary: this is a very simple description on how to solve the Rubik&#8217;s cube. I wrote it to my then 8 year old daughter &#8211; hence the name of the method. It is a simiplified version and a strict subset of the method used by the best cubers in the world. It is in Norwegian, but since it is a visual guide you might enjoy it anyway. Click the PDF link above.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=316&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2012/02/17/hannametoden/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Deep C (and C++)</title>
		<link>http://olvemaudal.wordpress.com/2011/10/10/deep-c/</link>
		<comments>http://olvemaudal.wordpress.com/2011/10/10/deep-c/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 10:29:50 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[just c]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=235</guid>
		<description><![CDATA[Programming is hard. Programming correct C and C++ is particularly hard. Indeed, both in C and certainly in C++, it is uncommon to see a screenful containing only well defined and conforming code. Why do professional programmers write code like this? Because most programmers do not have a deep understanding of the language they are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=235&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Programming is hard. Programming correct C and C++ is particularly hard. Indeed, both in C and certainly in C++, it is uncommon to see a screenful containing only well defined and conforming code. Why do professional programmers write code like this? Because most programmers do not have a deep understanding of the language they are using. While they sometimes know that certain things are undefined or unspecified, they often do not know why it is so. In these slides we will study small code snippets in C and C++, and use them to discuss the fundamental building blocks, limitations and underlying design philosophies of these wonderful but dangerous programming languages.</p>
<p>Jon Jagger and I just released a slide deck to discuss the fundamentals of C and C++ (<a href="http://www.slideshare.net/olvemaudal/deep-c">slideshare<a>, <a href="http://www.pvv.org/~oma/DeepC_slides_oct2011.pdf">pdf</a>). </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/235/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=235&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2011/10/10/deep-c/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>The Champion, the Chief and the Manager</title>
		<link>http://olvemaudal.wordpress.com/2011/03/25/the-champion-the-chief-and-the-manager/</link>
		<comments>http://olvemaudal.wordpress.com/2011/03/25/the-champion-the-chief-and-the-manager/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 11:11:59 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=158</guid>
		<description><![CDATA[Successful product development projects are often characterized by having an enthusiastic product champion with solid domain knowledge, a visible and proud chief engineer, and a clever and supportive project manager. And of course, the most important thing, a group of exceptional developers. From an organizational point of view it makes sense to require that all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=158&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Successful product development projects are often characterized by having an enthusiastic <b>product champion</b> with solid domain knowledge, a visible and proud <b>chief engineer</b>, and a clever and supportive <b>project manager</b>. And of course, the most important thing, a group of <b>exceptional developers</b>. From an organizational point of view it makes sense to require that all projects should clearly identify these three roles:</p>
<p><b>The Champion</b>: The product champion is a person that dreams about the product, has a vision about how it can be used and can answer questions about what is important and what is less important. The product champion is required to have a deep and solid domain knowledge and will often play the role of a customer proxy in the project. This position can only be held by a person that is deeply devoted and has a true passion for the product to be created. The product champion is the main interface between the project and the customer/users. (Sometimes also known as: Product Manager, Project Owner, Customer Proxy&#8230;)</p>
<p><b>The Chief</b>: The chief engineer is a technical expert that has a vision of the complete solution and is always ready to defend this vision. At any time, the chief engineer should be able, and <i>willing</i> to stand up to proudly describe the solution and explain how everything fits together. He/she should feel responsible for technological decisions that the exceptional developers do, but also make sure that the solution is supporting the business strategy. The chief engineer is the main communication channel between this project and other projects. (Sometimes also known as: System Architect, Tech Lead, Shusa, &#8230;)</p>
<p><b>The Manager</b>: The project manager is a person that leads a team to success by managing the resources on a project in an effective and sensible way. He/she will be responsible for actively discovering and removing impediments. The project manager is the main interface between the project and corporate management. (Sometimes also known as: Scrum Master, Team Leader, &#8230;)</p>
<p>Of course, for very small projects these three roles can be fulfilled by one person, but for projects of some size there should be three people filling these three roles: one product champion, one chief engineer and one project manager. These three people must work together as a team, form an allround defence (aka kringvern) around the project, while being available to the developers at any time. Their task is to &#8220;protect&#8221; and &#8220;promote&#8221; the project to the outside world so that the exceptional developers can focus on doing the job.</p>
<p>I believe that identifying these three roles is the only thing an organization needs to impose in order to increase the chance of success. Then the team of <b>exceptional developers</b> together with their servants decide everything else, including which methodology and technology to use.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=158&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2011/03/25/the-champion-the-chief-and-the-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Solid C++ Code by Example</title>
		<link>http://olvemaudal.wordpress.com/2010/04/15/solid-c-code-by-example/</link>
		<comments>http://olvemaudal.wordpress.com/2010/04/15/solid-c-code-by-example/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 12:31:37 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=147</guid>
		<description><![CDATA[Sometimes I see code that is perfectly OK according to the definition of the language but which is flawed because it breaks too many established idioms and conventions of the language. I just gave a 90 minute workshop about Solid C++ Code at the ACCU 2010 conference in Oxford. When discussing solid code it is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=147&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Sometimes I see code that is perfectly OK according to the definition of the language but which is flawed because it breaks too many established idioms and conventions of the language. I just gave a <a href="http://accu.org/index.php/conferences/accu_conference_2010/accu2010_sessions#Solid%20C++%20Code%20by%20Example">90 minute workshop</a> about Solid C++ Code at the <a href="http://accu.org/index.php/conferences">ACCU 2010</a> conference in Oxford.</p>
<p>When discussing solid code it is important to work on &#8220;real&#8221; problems, not just toy examples and coding katas because they lack the required complexity to make discussions interesting. So, as a preparation I had developed, from scratch, an NTLM Authentication Library (pal) that can be used by a client to do NTLM authentication when retrieving a protected webpage on an IIS server. Then I picked out a few files, the encoding and decoding of NTLM messages, and tried to write it as solid as possible after useful discussions with ACCU friends and some top coders within my company. Then I &#8220;doped&#8221; the code, I injected impurities and bad stuff into the code, to produce these <a href="http://www.pvv.org/~oma/SolidCPP_Source_April2010.pdf">handouts</a>. At the ACCU talk/workshop the audience read through the &#8220;doped&#8221; code and came up with things that could be improved while I did online coding (in Emacs of course) fixing the <a href="http://www.pvv.org/~oma/SolidCPP_issues_April2010.pdf">issues</a> as they popped up. With loads of solid C++ coders in the room, I think we found most of the issues worth caring about, and we ended up with something that can be considered to be solid C++, something that appears to have been developed by somebody who cares about high quality code. Here are the <a href="http://www.pvv.org/~oma/SolidCPP_April2010.pdf">slides</a> that I used to summarize our findings. Feel free to use these slides for whatever you want. Perhaps you would like to run a similar talk in your development team? Contact me if you want the complete source code for the authentication library, or if you want to discuss ideas for running a similar talk yourself. I plan to publish the code on githup soon &#8211; so stay tuned.</p>
<p><b><font color="red">UPDATE June 2010:</font></b> The PAL library is now published on <a href="http://github.com/olvemaudal/pal">github</a>. A much improved slide set is also available on <a href="http://www.slideshare.net/olvemaudal/solid-c-by-example">slideshare</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=147&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2010/04/15/solid-c-code-by-example/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Hard Work Does Not Pay Off</title>
		<link>http://olvemaudal.wordpress.com/2010/02/12/hard-work-does-not-pay-off/</link>
		<comments>http://olvemaudal.wordpress.com/2010/02/12/hard-work-does-not-pay-off/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 21:19:49 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=141</guid>
		<description><![CDATA[As a programmer, you&#8217;ll find that working hard often does not pay off. You might fool yourself and a few colleagues into believing that you are contributing a lot to a project by spending long hours at the office. But the truth is that by working less, you might achieve more &#8211; sometimes much more. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=141&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As a programmer, you&#8217;ll find that working hard often does not pay off. You might fool yourself and a few colleagues into believing that you are contributing a lot to a project by spending long hours at the office. But the truth is that by working less, you might achieve more &#8211; sometimes much more. If you are trying to be focused and “productive” for more than 30 hours a week, you are probably working too hard. You should consider reducing your workload to become more effective and get more done.</p>
<p>This statement may seem counterintuitive and even controversial, but it is a direct consequence of the fact that programming and software development as a whole involve a continuous learning process. As you work on a project, you will understand more of the problem domain and, hopefully, find more effective ways of reaching the goal. To avoid wasted work, you must allow time to observe the effects of what you are doing, reflect on the things that you see, and change your behavior accordingly.</p>
<p>Professional programming is usually not like running hard for a few kilometers, where the goal can be seen at the end of a paved road. Most software projects are more like a long orienteering marathon. In the dark. With only a sketchy map as guidance. If you just set off in one direction, running as fast as you can, you might impress some, but you are not likely to succeed. You need to keep a sustainable pace, and you need to adjust the course when you learn more about where you are and where you are heading.</p>
<p>In addition, you always need to learn more about software development in general and programming techniques in particular. You probably need to read books, go to conferences, communicate with other professionals, experiment with new implementation techniques, and learn about powerful tools that simplify your job. As a professional programmer, you must keep yourself updated in your field of expertise — just as brain surgeons and pilots are expected to keep themselves up to date in their own fields of expertise. You need to spend evenings, weekends, and holidays educating yourself; therefore, you cannot spend your evenings, weekends, and holidays working overtime on your current project. Do you really expect brain surgeons to perform surgery 60 hours a week, or pilots to fly 60 hours a week? Of course not: preparation and education are an essential part of their profession.</p>
<p>Be focused on the project, contribute as much as you can by finding smart solutions, improve your skills, reflect on what you are doing, and adapt your behavior. Avoid embarrassing yourself, and our profession, by behaving like a hamster in a cage spinning the wheel. As a professional programmer, you should know that trying to be focused and “productive” 60 hours a week is not a sensible thing to do. Act like a professional: prepare, effect, observe, reflect, and change.</p>
<p>[This is a reprint of a chapter that I wrote for the newly released O'Reilly book <a href="http://oreilly.com/catalog/9780596809485/">97 Things Every Programmer Should Know</a>]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=141&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2010/02/12/hard-work-does-not-pay-off/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Solving a Rubik&#8217;s cube in less than 60 seconds</title>
		<link>http://olvemaudal.wordpress.com/2010/01/23/solving-a-rubiks-cube-in-less-than-60-seconds/</link>
		<comments>http://olvemaudal.wordpress.com/2010/01/23/solving-a-rubiks-cube-in-less-than-60-seconds/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 05:28:24 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=127</guid>
		<description><![CDATA[A couple of months ago I bought a Rubik&#8217;s cube in a nearby shop and after reading some guides on the net I learned how to solve it. A few hours later I could solve it in about 4 minutes all by myself. After a few days of practice I was down to about 2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=127&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A couple of months ago I bought a Rubik&#8217;s cube in a nearby shop and after reading some guides on the net I learned how to solve it. A few hours later I could solve it in about 4 minutes all by myself. After a few days of practice I was down to about 2 minutes, but it was difficult to see how I could improve much further using the beginners method I started out with. My cube and dexterity does not allow me to do more than about 2 moves per second so I realized that I had to reduce the number of moves, rather than speeding up my fingers. After reading several websites about speedsolving techniques I set my self a tough goal &#8211; to become a <b>sub-60 cuber</b>. I was determined to study and practice the art of solving the cube until I could solve a Rubik&#8217;s cube in less than 60 seconds on average.</p>
<p>I can now often solve it in less than 60 seconds, but I am not stable enough to call myself a sub-60 cuber yet, but I am very close. Give me a few more weeks (or months) and I will get there. While playing with the cube on the bus, at work, at home, in the pub, basically everywhere, all the time, I sometimes meet other geeks that want to learn how to solve the cube fast as well. So I thought I should write up a guide about how to get started.</p>
<p>If you do not know how to solve the cube you need to study one of a billion guides that are available on the net. Here is a <a href="http://www.stanford.edu/~leyanlo/Beginner_Solution.html">beginner solution</a> by Leyan Lo that I recommend. Once you can solve the cube without referring to a guide, you can start to read more advanced stuff. The ultimate guide is written by <a href="http://www.ws.binghamton.edu/fridrich/cube.html">Jessica Fridrich</a>, but it is not easy to read. I found <a href="http://cubefreak.net/">CubeFreak</a> by Shotaro Makisumi to be the most useful site out there.</p>
<p>After studying these sites, as well as hundreds of other sites and watching plenty of youtube videos, I have ended up with a simplified Fridrich method with a <a href="http://cubefreak.net/speed/fourlook.html">four-look last layer</a>. Here is what I do to solve it in less than 60 seconds:</p>
<p>1. Solve the extended cross ~5 sec (always a white cross)<br />
2. Solve the first two layers (F2L) ~30 sec (keep cross on bottom)<br />
3. Orient the last layer edges ~5 sec (1 out of 3 algorithms)<br />
4. Orient the last layer corners ~5 sec (1 out of 7 algorithms)<br />
5. Permute the last layer corners ~5 sec (1 out of 2 algorithms)<br />
6. Permute the last layer edges ~5 sec (1 out of 4 algorithms)</p>
<p>My current focus is to improve the F2L step as I am still struggling to get under 30 seconds, but I am confident that with some more practice I will manage to get closer to 20 seconds and then I can label myself a <b>sub-60 cuber</b>.</p>
<p>For further inspiration, here is a video of a <a href="http://www.youtube.com/watch?v=tSqUcrFJ498">sub-120 cuber</a> and a <a href="http://www.youtube.com/watch?v=6f8p9zYX558">sub-10 cuber</a>.</p>
<p>Happy cubing!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=127&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2010/01/23/solving-a-rubiks-cube-in-less-than-60-seconds/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Technical Debt</title>
		<link>http://olvemaudal.wordpress.com/2009/10/19/technical-debt/</link>
		<comments>http://olvemaudal.wordpress.com/2009/10/19/technical-debt/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 22:59:19 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[business strategy]]></category>
		<category><![CDATA[professionalism]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=110</guid>
		<description><![CDATA[With borrowed money you can do something sooner than you might otherwise. If you are willing to incur technical debt you can release a product earlier than you might otherwise. We all recognize these stereotypes: The sales team is willing to (and sometimes do) sell a product and cash in the money long before development [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=110&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>With borrowed money you can do something sooner than you might otherwise. If you are willing to incur technical debt you can release a product earlier than you might otherwise.</p>
<p>We all recognize these stereotypes: The sales team is willing to (and sometimes do) sell a product and cash in the money long before development is finished. While the engineers are reluctant to let go of their baby because there are always things that can be improved. A successful business needs engineers and salespeople that are willing to compromise and cooperate on this conflict of interest. Technical debt is a powerful metaphor that can be used to work on a compromise, especially when we are talking about software development.</p>
<p>Technical debt in a software project includes internal things that you choose not to do now, but will impede future development if left undone <a href="http://www.c2.com/cgi/wiki?TechnicalDebt">[1]</a>. Examples of technical debt might be: We need to upgrade our compiler to a more recent version, but let us ship the product now and upgrade the compiler later. We do not properly understand how to implement this feature properly anyway, but this hack seems to make the customer happy for now. We have identified some dirty code that is slowing us down, but we choose to fix it in the next release instead. These are all examples of prudent and deliberate reasons <a href="http://martinfowler.com/bliki/TechnicalDebtQuadrant.html">[2]</a> for taking on technical debt which can be compared to borrowing money for sensible housing. There are also less responsible ways of incurring technical debt though, perhaps caused by; lust, gluttony, greed, sloth, wrath, envy or pride. Examples might include: writing bad code, skipping analysis and design, over-engineering, résumé-driven development and so on. This kind of technical debt is more like unauthorized overdrafts and check bouncing, and is best avoided if you have a long-term vision for your product.</p>
<p>Like financial debt, a technical loan will incur interests, and if you are not able or willing to pay back the loan then you risk go into bankruptcy. The nice feature of software however is that paying back is usually both possible and comparatively cheap. While making effective and strategic decisions about what internal qualities to postpone you should keep track of them and write down an estimated effort needed to do it properly. This will give you an idea of how much you owe at any point in time. Then, after rushing a release out of the door, you can immediately start to pay back by doing the postponed things properly and get a flying start into the next release. Retrofitting stuff like this might appear to be more expensive than &#8220;doing it right the first time&#8221;, but since we are dealing with software it is often the right approach.</p>
<p>Perhaps the most powerful feature of the Technical Debt metaphor is that it communicates well between technical and non-technical people <a href="http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx">[3]</a>. By quantifying the current technical debt in your product it should be possible to get management both interested and involved in the importance of controlling the debt burden.</p>
<p>References:<br />
[1] <a href="http://www.c2.com/cgi/wiki?TechnicalDebt">www.c2.com</a><br />
[2] <a href="http://martinfowler.com/bliki/TechnicalDebtQuadrant.html">martinfowler.com</a><br />
[3] <a href="http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx">blogs.construx.com/blogs/stevemcc</a></p>
<p><b><font color="red">UPDATE June 2010:</font></b> At Smidig 2009 and XP2010 I presented a talk titled &#8220;Technical Debt is Good!&#8221; based on this material. Here are the slides (pdf) that I used in <a href="http://olvemaudal.files.wordpress.com/2009/12/technicaldebt_oct2009.pdf">norwegian</a> and <a href="http://olvemaudal.files.wordpress.com/2010/06/technicaldebt_june2010.pdf">english</a> respectively.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=110&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2009/10/19/technical-debt/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Your codebase is like a kitchen</title>
		<link>http://olvemaudal.wordpress.com/2009/04/24/your-codebase-is-like-a-kitchen/</link>
		<comments>http://olvemaudal.wordpress.com/2009/04/24/your-codebase-is-like-a-kitchen/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 18:55:33 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[hygiene]]></category>
		<category><![CDATA[professionalism]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=105</guid>
		<description><![CDATA[The state of your codebase determines what you can achieve. In some ways your codebase is like a kitchen. I just presented a lightning talk about this analogy at the ACCU Conference. Here are the slides.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=105&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The state of your codebase determines what you can achieve. In some ways your codebase is like a kitchen. I just presented a lightning talk about this analogy at the <a href="http://www.accu.org">ACCU Conference</a>. Here are the <a href="http://www.pvv.org/~oma/TheKitchenAnalogy_ACCU2009.pdf">slides</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=105&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2009/04/24/your-codebase-is-like-a-kitchen/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Advanced Feedback-driven Development</title>
		<link>http://olvemaudal.wordpress.com/2009/03/26/advanced-feedback-driven-development/</link>
		<comments>http://olvemaudal.wordpress.com/2009/03/26/advanced-feedback-driven-development/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 09:31:49 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[feedback-driven development]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=89</guid>
		<description><![CDATA[For any non-trivial project: Software development should be considered a continuous learning process and a cooperative game of communication between professionals. Effective software development can be achieved through frequently repeating cycles of preparing, changing, observing, reflecting, and learning. While the statement above is obvious to many, it is easy to miss the key points. For [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=89&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>For any non-trivial project: Software development should be considered a continuous <i>learning</i> process and a <i>cooperative game</i> of <i>communication</i> between <i>professionals</i>. Effective software development</i> can be achieved through frequently <i>repeating</i> cycles of preparing, changing, observing, reflecting, and learning.</p>
<p>While the statement above is obvious to many, it is easy to miss the key points. For instance, you must make sure that you facilitate the learning process by implementing effective feedback mechanisms, do frequent iterations and be willing to re-plan the project continuously. You must also implement information radiators, enable osmotic communication, and get rid of things that hinders communication (yes, I am a fan of Alistair Cockburn). But first of all, you <i>must</i> assume that your developers are professionals that know what to do given a vision, trust and enough information. You should certainly not treat your developers as mere resources that need to be directed and told what to do and how to do it.</p>
<p>I am fortunate in that I work for a company that really gets it. I invite you to take a look at these <a href="http://www.pvv.org/~oma/SoftwareDevelopmentAtTandberg_March2009.pdf">slides</a>. The key thing that this particular project do better than most is to do fast and automatic testing on all levels which gives developers confidence when making changes. Automatic feedback from all levels was a key success factor to get the first version out of the door, and now we have a workflow that will support further development for years. I think it make sense to describe what we do as advanced feedback-driven development &#8211; AFDD.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=89&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2009/03/26/advanced-feedback-driven-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Architecture is a key enabler for your Business Strategy</title>
		<link>http://olvemaudal.wordpress.com/2009/01/09/software-architecture-is-a-key-enabler-for-your-business-strategy/</link>
		<comments>http://olvemaudal.wordpress.com/2009/01/09/software-architecture-is-a-key-enabler-for-your-business-strategy/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 01:10:06 +0000</pubDate>
		<dc:creator>olvemaudal</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[business strategy]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[software architecture]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://olvemaudal.wordpress.com/?p=52</guid>
		<description><![CDATA[Last month I organized an internal 4-day workshop in Software Architecture at my company. Twelve lead developers representing several product groups and development sites attended. The instructor was Dana Bredemeyer himself. The workshop was excellent, although quite different from what I expected. Bredemeyers workshop was all about techniques for translating your strategy into architecture. Little [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=52&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Last month I organized an internal <a href="http://www.bredemeyer.com/architecture_workshop_overview.htm">4-day workshop in Software Architecture</a> at my company. Twelve lead developers representing several product groups and development sites attended. The instructor was <a href="http://www.bredemeyer.com/DanaBredemeyer.htm">Dana Bredemeyer</a> himself.</p>
<p>The workshop was excellent, although quite different from what I expected. Bredemeyers workshop was all about techniques for translating your strategy into architecture. Little was said about how to translate architecture into implementation, but that was ok. I have to admit that so far in my career I have thought about software architecture as something that first of all is useful for the implementation of software. But now I realize that for a business relying on complex software, focus on architecture is indeed a key enabler for your business strategy.</p>
<p>All software implementations have an architecture. By studying the code base and a running system you might be able to both illustrate the architecture and explain the expected behavior of the system. For many, perhaps most, development efforts this is a sensible way of working &#8211; apply most of your energy on writing code and just take a brief look at the resulting architecture at regular intervals to see if it makes sense. Let the user requirements drive the implementation, and use your test scenarios to verify the product. Because you will never get exactly what you plan for, the resulting product will determine which business strategy you can use to make money and the architecture will restrict how to evolve your business. The products drive the business (see figure 1).</p>
<p><a href="http://olvemaudal.files.wordpress.com/2009/01/safig1.jpg"><img src="http://olvemaudal.files.wordpress.com/2009/01/safig1.jpg?w=450" title="Products drive the business" width="450"></a></p>
<p>For a business with only a few products on the market this can be a very efficient way of making money. Your product might be successful and the business attracts money that can be invested in making the same product even more fancy to attract even more money. Adjust your business strategy according to the products that are available.</p>
<p>However, as the business grows and the product portfolio diversifies, you need to focus more on architecture. Why? Because you might want a mechanism to let a strategy run the business, not the products. The key is to focus more on architecture so that you can drive it with your business strategy, and let the architecture strongly influence the implementation so that you get products that support the strategy. It is then possible to let a strategy drive your business (see figure 2).</p>
<p><a href="http://olvemaudal.files.wordpress.com/2009/01/safig21.jpg"><img src="http://olvemaudal.files.wordpress.com/2009/01/safig21.jpg?w=450" title="Strategy drives the business" width="450"></a></p>
<p>Beware, I am not trying to tell you that heavy focus on architecture is the only way to succeed. It is certainly possible for huge businesses to experience massive success with large and complex software systems without paying too much attention on the architecture. However, the key point is that <i>if</i> you want to control your business by defining strategies you need to focus on the architecture &#8211; otherwise not much will happen if you position yourself inside the strategy bubble and try to twist the knobs.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olvemaudal.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olvemaudal.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olvemaudal.wordpress.com&#038;blog=698714&#038;post=52&#038;subd=olvemaudal&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olvemaudal.wordpress.com/2009/01/09/software-architecture-is-a-key-enabler-for-your-business-strategy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c01d996999dc60aac103fcab492ecc6e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">olvemaudal</media:title>
		</media:content>

		<media:content url="http://olvemaudal.files.wordpress.com/2009/01/safig1.jpg" medium="image">
			<media:title type="html">Products drive the business</media:title>
		</media:content>

		<media:content url="http://olvemaudal.files.wordpress.com/2009/01/safig21.jpg" medium="image">
			<media:title type="html">Strategy drives the business</media:title>
		</media:content>
	</item>
	</channel>
</rss>
