<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>My Not So Private Tech Life</title>
	<atom:link href="http://blog.johanneslink.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.johanneslink.net</link>
	<description>Johannes Link's Travels through Software Devlopment Space</description>
	<pubDate>Mon, 15 Sep 2008 12:59:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
		<url>http://www.gravatar.com/blavatar/2fb161c6219f0a6b76df76109ed88e5b?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>My Not So Private Tech Life</title>
		<link>http://blog.johanneslink.net</link>
	</image>
			<item>
		<title>Can You Touch Type?</title>
		<link>http://blog.johanneslink.net/2008/09/15/can-you-touch-type/</link>
		<comments>http://blog.johanneslink.net/2008/09/15/can-you-touch-type/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 12:33:32 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=144</guid>
		<description><![CDATA[Well, I can&#8217;t. That&#8217;s why it struck a chord with me when I read Steve Yegge&#8217;s rant about those developers who claim that typing is not really important for fluent programming. The article is a very funny read and it left me determined to learn touch typing now - not today, but tomorrow - or [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Well, I can&#8217;t. That&#8217;s why it struck a chord with me when I read <a href="http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html" target="_blank">Steve Yegge&#8217;s rant</a> about those developers who claim that typing is not really important for fluent programming. The article is a very funny read and it left me determined to learn touch typing now - not today, but tomorrow - or maybe the year after tomorrow.</p>
<p>Can anyone recommend a good touch typing teaching software in German?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/144/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/144/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=144&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/09/15/can-you-touch-type/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>AJAX Travelogue (Part 7): MockMe</title>
		<link>http://blog.johanneslink.net/2008/08/09/ajax-travelogue-part-7-mockme/</link>
		<comments>http://blog.johanneslink.net/2008/08/09/ajax-travelogue-part-7-mockme/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 14:01:20 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[mock]]></category>

		<category><![CDATA[MockMe]]></category>

		<category><![CDATA[spy]]></category>

		<category><![CDATA[stub]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=129</guid>
		<description><![CDATA[In the previous episode you&#8217;ve learned why a mocking framework seems to be a reasonable idea even in a language that provides closures and duck typing. MockMe is such a framework. I started to develop it after fighting the usability war with the existing ones I found out there.
MockMe has two fundamental ideas:

The basic granularity [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In the <a href="http://blog.johanneslink.net/2008/08/08/ajax-travelogue-part-6-mocking-in-javascript/">previous episode</a> you&#8217;ve learned why a mocking framework seems to be a reasonable idea even in a language that provides closures and duck typing. <a title="MockMe" href="http://johanneslink.net/projects/mockme.html" target="_self">MockMe</a> is such a framework. I started to develop it after fighting the usability war with the existing ones I found out there.</p>
<p>MockMe has two fundamental ideas:</p>
<ul>
<li>The basic granularity of mocking should be the function. If I want to, I can fake the behaviour of a single function without influencing the rest (of an object or a prototype or the global namespace or whatever).</li>
<li>Most of the time, <em>spying</em> is a better idea than mocking because it&#8217;s simpler. <em>Spying </em>basically means that, instead of specifying the expected interaction with your <span style="text-decoration:line-through;">mock</span> spy object before doing the test, you use the <span style="text-decoration:line-through;">mock</span> spy object to <em>spy</em> into the interaction as it happens and verify that afterwards. In that respect I borrowed heavily from <a title="mockito" href="http://code.google.com/p/mockito/" target="_blank">mockito</a>, a spying framework that&#8217;s gaining more and more attention in the Java world.</li>
</ul>
<p>Let&#8217;s look at the example from yesterday:</p>
<pre>  var Speaker = {
    say: function(msg) {
      alert(msg);
    }
  };
  var DoubleSpeaker = {
    say: function(msg) {
      Speaker.say(msg+msg);
    }
  };</pre>
<p>We would like to write a test for <code>DoubleSpeaker.say</code> to verify that <code>Speaker.say</code> is being called with the argument duobled. Using MockMe the test looks like this:</p>
<pre>  testDoubleSpeaker: function() { with(this) {
    mock(Speaker).andDo(function() {
        DoubleSpeaker.say('oops');
        verify(Speaker.say)('oopsoops');
    });
  }},</pre>
<p>That&#8217;s fairly easy, isn&#8217;t it. It has only a third of the lines compared to the <a href="http://blog.johanneslink.net/2008/08/08/ajax-travelogue-part-6-mocking-in-javascript#longTest">hand-crafted version</a>. </p>
<p>There are mainly two reasons I prefer spying over mocking: (a) It does not break the standard testing flow of setup -&gt; test -&gt; assert. (b) It&#8217;s harder to <em>overspecify</em> your implementation&#8217;s behaviour. </p>
<p>The difference between spying and mocking has been described by Gerard Meszaros in his <a title="xUnit Test Patterns" href="http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Addison-Wesley/dp/0131495054" target="_blank">book on test patterns</a>. Among many other valuable contributions he succeeds in sorting out the differences in the terms used by different writers. That said, I still call MockMe a mocking framework for the selfish reason that mock has become the term that is being used most in the agile testing community.</p>
<p>To wrap up, the next example demonstrates that stubbing with MockMe is equally straightforward:</p>
<pre>  testStubbing: function() { with(this) {
    useMockerFor(function(mocker) {
      var f = mocker.mock();
      when(f)(1, 'two').thenReturn('hiho');
      assertEqual('hiho', f(1, 'two'));
    });
  }}</pre>
<p><a href="http://johanneslink.net/projects/mockme.html#howto">Here</a> is where you can find more on how to use MockMe.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/129/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/129/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=129&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/08/09/ajax-travelogue-part-7-mockme/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>AJAX Travelogue (Part 6): Mocking in JavaScript</title>
		<link>http://blog.johanneslink.net/2008/08/08/ajax-travelogue-part-6-mocking-in-javascript/</link>
		<comments>http://blog.johanneslink.net/2008/08/08/ajax-travelogue-part-6-mocking-in-javascript/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 18:28:13 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[mock]]></category>

		<category><![CDATA[MockMe]]></category>

		<category><![CDATA[stub]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=109</guid>
		<description><![CDATA[It&#8217;s been a while since I have written about AJAX development; I published Part  5 over two years ago. Why&#8217;s that, you ask? Well, at a given time I was either too busy actually doing AJAX stuff or - at other times - my focus had shifted away. It wasn&#8217;t before my talk about Test-Driven [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s been a while since I have written about AJAX development; I published <a title="MVP in JayJax" href="http://blog.johanneslink.net/2006/03/30/ajax-travelogue-part-5/">Part  5</a> over two years ago. Why&#8217;s that, you ask? Well, at a given time I was either too busy actually doing AJAX stuff or - at other times - my focus had shifted away. It wasn&#8217;t before my talk about Test-Driven Ajax had been accepted for <a href="http://agile2008.org/">Agile 2008</a> that I finally took my time and rethought some of the things I had learned about the topic before.</p>
<p>Let&#8217;s set up the stage for part 6 of this show, which will deal with mocking in JavaScript. As a prerequisite I assume that you are using some kind of unit testing framework for JavaScript, like <a href="http://jsunit.berlios.de/" target="_blank">JsUnit</a> or <a href="http://jsunit.net/" target="_blank">JsUnit</a> (well, there exist two having this name) or - like I do - the <a href="http://github.com/madrobby/scriptaculous/wikis/unit-testing" target="_blank">framework coming with script.aculo.us</a>.</p>
<p>Effective unit testing &amp; especially test-driven development require that you test your units (think &#8220;functions&#8221; or &#8220;objects&#8221;) in isolation. That&#8217;s how stubbing &amp; mocking come into the picture. Whereas mocking frameworks play a significant role in statically typed languages like Java or C#, some claim that dynamic languages don&#8217;t really need that kind of thing because the mere presence of <a href="http://en.wikipedia.org/wiki/Closure_(computer_science)">closures</a> and <a href="http://en.wikipedia.org/wiki/Duck_typing" target="_blank">duck typing</a> make mocking and stubbing by hand so easy. JavaScript has both - closures (aka functions) and duck typing, so let&#8217;s see how things turn out in a simple example. Consider the following two objects:</p>
<pre>  var Speaker = {
    say: function(msg) {
      alert(msg);
    }
  };
  var DoubleSpeaker = {
    say: function(msg) {
      Speaker.say(msg+msg);
    }
  };</pre>
<p>I would like to write a test for <code>DoubleSpeaker.say</code> to verify that <code>Speaker.say</code> is being called with the argument duobled. Since using the real <code>Speaker</code> object would result in an alert box, which is not suitable for an automated test, I have to find a way to substitute <code>Speaker.say</code> with some kind of mock function:</p>
<pre>  testDoubleSpeaker: function() { with(this) {
    var actualMsg = null;
    var mockSay = function(msg) {
      actualMsg = msg;
    };
    Speaker.say = mockSay;
    DoubleSpeaker.say('oops');
    assertEqual('oopsoops', actualMsg);
  }}</pre>
<p>This approach actually works, but it has a drawback. Since <code>Speaker</code> is a global object our test has changed the global state and other tests - those that want to use the real <code>Speaker.say</code> function - might fail because of our test. This sort of test interdependency is one of the biggest smells of unit testing, so we have to get rid of that stink and reset the global state on finishing:<a id="longTest"></a></p>
<pre>  testDoubleSpeaker: function() { with(this) {
    var actualMsg = null;
    var mockSay = function(msg) {
      actualMsg = msg;
    };
    vor originalSay = Speaker.say;
    Speaker.say = mockSay;
    try {
      DoubleSpeaker.say('oops');
      assertEqual('oopsoops', actualMsg);
    } finally {
      Speaker.say = originalSay;
    }
  }}</pre>
<p>To me that code looks an awfully lot like my very early mocking attempts with Java around 2001. The code is bloated and full of ceremony. The essence of the test could be written down in three lines:</p>
<pre>  testDoubleSpeaker: function() { with(this) {
    makeAMockOf(Speaker.say);
    DoubleSpeaker.say('oops');
    checkThat(Speaker.say).wasInvokedWith('oopsoops');
  }}</pre>
<p>I&#8217;ve intentionally chosen rather wordy lines to make it clear that this is not a real API - not that I&#8217;m aware of.</p>
<p>My personal take-away from even a simple example like the one above is two-fold:</p>
<ul>
<li>Even a language like JavaScript can make good use of a framework to take the tedium away from mocking and stubbing.</li>
<li>Such a framework must be different than mock frameworks in other languages to compensate for the difference in programming idioms (e.g. the paramount use of global objects) and the fact that the basic building block in JavaScript is NOT the object but the function.</li>
</ul>
<p>Luckily, you don&#8217;t have to write such a beast yourself, it is <a title="MockMe" href="http://johanneslink.net/projects/mockme.html" target="_self">already out there</a>&#8230; (<a href="http://blog.johanneslink.net/2008/08/09/ajax-travelogue-part-7-mockme/">to be continued</a>)</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/109/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/109/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=109&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/08/08/ajax-travelogue-part-6-mocking-in-javascript/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>Sleepless in Toronto</title>
		<link>http://blog.johanneslink.net/2008/08/07/sleepless-in-toronto/</link>
		<comments>http://blog.johanneslink.net/2008/08/07/sleepless-in-toronto/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 10:07:30 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Agile2008]]></category>

		<category><![CDATA[agile2008toronto]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=92</guid>
		<description><![CDATA[So, I&#8217;m here in Toronto at the Agile Conference. It is 4:31am now, which tells you that my body is still somewhat drawn between night and day. Never mind, though, that gives me time to write. Since this is my first visit to a conference in North America, I actually met - or at least [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So, I&#8217;m here in Toronto at the <a href="http://agile2008.org/" target="_blank">Agile Conference</a>. It is 4:31am now, which tells you that my body is still somewhat drawn between night and day. Never mind, though, that gives me time to write. Since this is my first visit to a conference in North America, I actually met - or at least saw - many of the people for the first time that I&#8217;ve known by email, by blog or by gossip for quite a few years. One fact that is being noticed &#8220;by the community&#8221; is the very low number of German participants and speakers. I&#8217;ve counted only five presentations from compatriots, that&#8217;s not much more that one percent. Any idea anyone why&#8217;s that so?</p>
<p>Let me give you my personal ramble through the conference:</p>
<p>On <strong>Monday</strong> my body partally participated in the Agile Alliance&#8217;s full day workshop on <a href="http://tech.groups.yahoo.com/group/aa-ftt/" target="_blank">Functional Testing Tools</a>. Although this name might not sound like the most sexy thing in the world, the group comprised many of the innovative minds of the field. It&#8217;s a pity that I was so jet-lag-struck that I had to go for a short 2-hour-nap during lunch; therefore my <em>active</em> participation was almost non-existant. Here are <a href="http://www.infoq.com/news/2008/08/functional_test_results">some of the results</a>.</p>
<p><strong>Tuesday</strong> was <a title="Test-Driven Ajax" href="http://www.slideshare.net/jlink/agile08-test-driven-ajax">my personal presentation</a> day. Given a competition of 44 concurrent talks, I was very content with having 30+ (male only) listeners. The most fundamental questions coming from the audience was: <strong>(a)</strong> Would you say that TDD for Ajax works as smooth as in a Java only environment. <strong>(b)</strong> Would you really go for all the hassle to make your FIT-driven Selenium tests independent from &#8220;The Web&#8221; by simulating &#8220;The Web&#8221;? Given my current knowledge the short answers are:<strong> (a)</strong> It&#8217;s not as smooth but you it can be fun all the same. <strong>(b)</strong> I would strive very hard to avoid it.</p>
<p><strong>Wednesday</strong> was my drifting day. I went in and out of sessions as I pleased - and I pleased the lot. However, Neal Ford&#8217;s talk on <a href="http://submissions.agile2008.org/node/1598" target="_blank">Ancient Philosophers &amp; Blowhard Jamborees</a> was so entertaining that I stayed to the end despite myself. Among many other citations and anecdotes he brought up a quote from Glenn Vanderburg:</p>
<blockquote><p>Bad developers will move heaven &amp; earth to do the wrong thing.</p></blockquote>
<p>It&#8217;s a sad truth, because it eventually means that we cannot shield our software from incapable developers by technical means like stricter type systems, higher abstractions &amp; tighter code ownership. At the end of the day we have to <span style="text-decoration:line-through;">get rid of the NNPPs</span> provide the <a href="http://www.pyxisinc.com/NNPP_Article.pdf">NNPPs</a> with alternative career paths. Will they be less or more happy that way? How certain can I be that I haven&#8217;t joined that crowd yet?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/92/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/92/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=92&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/08/07/sleepless-in-toronto/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>To Everyone Their Own Mock Framework</title>
		<link>http://blog.johanneslink.net/2008/07/30/everyone-their-own-mock-framework/</link>
		<comments>http://blog.johanneslink.net/2008/07/30/everyone-their-own-mock-framework/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 22:33:51 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[mocking]]></category>

		<category><![CDATA[mocks]]></category>

		<category><![CDATA[stubs]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=89</guid>
		<description><![CDATA[Mine is called MockMe. It&#8217;s for JavaScript only.
I will explain everything and more after coming back from Toronto. See you there?
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a title="JavaScript Mocking Frameowkr" href="http://johanneslink.net/projects/mockme.html" target="_self">Mine</a> is called <a title="JavaScript Mocking Frameowkr" href="http://johanneslink.net/projects/mockme.html">MockMe</a>. It&#8217;s for JavaScript only.</p>
<p>I will explain everything and more after coming back from Toronto. See you there?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/89/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/89/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=89&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/07/30/everyone-their-own-mock-framework/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile 2008 in Toronto</title>
		<link>http://blog.johanneslink.net/2008/07/15/agile-2008-in-toronto/</link>
		<comments>http://blog.johanneslink.net/2008/07/15/agile-2008-in-toronto/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 05:07:45 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Agile2008]]></category>

		<category><![CDATA[Testdriven Ajax]]></category>

		<category><![CDATA[Toronto]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=88</guid>
		<description><![CDATA[This year&#8217;s Agile conference is looming quite large. I&#8217;m going to give a talk on &#8220;Test-Driven Ajax&#8221; on August, 5. That&#8217;s the good news and I&#8217;m looking very much forward to it. The bad news: There are 44 parallel sessions and I&#8217;ll have to compete with people like Mary Poppendieck, Dierk Riehle, James Newkirk, Dan [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This year&#8217;s <a href="http://www.agile2008.org" target="_blank">Agile conference</a> is looming quite large. I&#8217;m going to give a talk on &#8220;<a href="http://submissions.agile2008.org/node/3070" target="_blank">Test-Driven Ajax</a>&#8221; on August, 5. That&#8217;s the good news and I&#8217;m looking very much forward to it. The bad news: There are 44 <a href="http://www.agile2008.org/program-day2slot2.html" target="_blank">parallel sessions</a> and I&#8217;ll have to compete with people like Mary Poppendieck, Dierk Riehle, James Newkirk, Dan North, Lisa Crispin, Brian Foote, Marc Evers, Mike Hill, Luke Hohman, Jutta Eckstein and Doug Rosenberg - just to name a few.</p>
<p>So, if you want to keep me away from lonesome talker&#8217;s depression just drop by in Sheraton Hall B and we both will have a good talk about the weather or alike.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/88/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/88/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=88&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/07/15/agile-2008-in-toronto/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>Deadline for XP Days extended</title>
		<link>http://blog.johanneslink.net/2008/07/13/deadline-for-xp-days-extended/</link>
		<comments>http://blog.johanneslink.net/2008/07/13/deadline-for-xp-days-extended/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 10:01:52 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=87</guid>
		<description><![CDATA[Stefan Roock, program chair of this year&#8217;s XP Days Germany, has just announced that the submission deadline has been extended till July, 27:
Since the open reviewing process has worked well, the program comitee will need less time for the final review.
He is definitely right that opening the review process to all was a big improvement. [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Stefan Roock, program chair of this year&#8217;s XP Days Germany, <a href="http://xpdayblog.it-agile.de/blog/?p=135">has just announced</a> that the submission deadline has been extended till July, 27:</p>
<blockquote><p>Since the open reviewing process has worked well, the program comitee will need less time for the final review.</p></blockquote>
<p>He is definitely right that opening the review process to all was a big improvement. I have two submissions in the run: &#8220;Behaviour-Driven Development&#8221; and &#8220;Test-Driven Ajax&#8221;. Go to<a href="http://www.conftool.com/xpdays2008/"> http://www.conftool.com/xpdays2008/</a>, register and tell me what you think of those.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/87/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/87/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=87&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/07/13/deadline-for-xp-days-extended/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>The New and Open XP Days Germany</title>
		<link>http://blog.johanneslink.net/2008/06/03/the-new-and-open-xp-days-germany/</link>
		<comments>http://blog.johanneslink.net/2008/06/03/the-new-and-open-xp-days-germany/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 14:16:00 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[xp]]></category>

		<category><![CDATA[xpday]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=85</guid>
		<description><![CDATA[Last year I was program chair of XP Days Germany. Although it was quite a success I wasn&#8217;t really content with the old-fashioned process any more: submit session, review by commitee, accept or reject.
So this year&#8217;s program chair Stefan Roock boldy took a new approach: Submission and review are starting from day one concurrently and [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Last year I was program chair of <a href="http://www.xpdays.de/2007/de/index.html">XP Days Germany</a>. Although it was quite a success I wasn&#8217;t really content with the old-fashioned process any more: submit session, review by commitee, accept or reject.</p>
<p>So this year&#8217;s program chair Stefan Roock boldy took a new approach: <a href="http://www.conftool.com/xpdays2008" target="_blank">Submission and review</a> are starting from day one concurrently and - even better - any one can contribute in both activities. I&#8217;m really thrilled about that and hope it will show the superiority of the wisdom of the crowd&#8230;</p>
<p>Here is the CFS in <a href="http://xpdayblog.it-agile.de/blog/?p=129" target="_blank">English</a> and <a href="http://xpdayblog.it-agile.de/blog/?p=128" target="_blank">German</a>. Come and meet me in Hamburg, Nov 27 to 29.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/85/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/85/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=85&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/06/03/the-new-and-open-xp-days-germany/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;We Don&#8217;t Have a TV Set&#8221;</title>
		<link>http://blog.johanneslink.net/2008/05/18/we-dont-have-a-tv-set/</link>
		<comments>http://blog.johanneslink.net/2008/05/18/we-dont-have-a-tv-set/#comments</comments>
		<pubDate>Sun, 18 May 2008 08:08:26 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=84</guid>
		<description><![CDATA[That sentence used to be one that I&#8217;ve let slip quite a few times during the last 8 years or so. Depending on who I was talking to it either trickered an awestruck gaze telling me &#8220;That&#8217;s a real man! How can he possibly spend his evenings and weekends without falling dead from boredom?&#8221; Or [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>That sentence used to be one that I&#8217;ve let slip quite a few times during the last 8 years or so. Depending on who I was talking to it either trickered an awestruck gaze telling me &#8220;That&#8217;s a real man! How can he possibly spend his evenings and weekends without falling dead from boredom?&#8221; Or the other person would just respond: &#8220;We don&#8217;t have one either. How can other people possibly spend their evenings and weekends watching TV?&#8221;</p>
<p>To be frank, claiming not to watch TV has stopped feeling right for me. Not that we have a TV set now, but:</p>
<ul>
<li>I spend most of my &#8220;working&#8221; time online - checking news, mails, feeds, forums etc</li>
<li>I manage to get the most recent episodes of my favourite TV shows as soon as they are available somewhere (don&#8217;t ask!). And I do watch them every other night.</li>
</ul>
<p>That&#8217;s why Paul Graham really struck a chord with me when I read <a title="Disconnecting Distractions" href="http://www.paulgraham.com/distraction.html" target="_blank">his most recent essay on Distractions</a>.</p>
<p>I now have to confess: <em>I&#8217;m an addict to new media and high-tec distractions</em>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/84/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/84/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=84&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/05/18/we-dont-have-a-tv-set/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
		<item>
		<title>TDD Workshop in Munich</title>
		<link>http://blog.johanneslink.net/2008/05/14/tdd-workshop-in-munich/</link>
		<comments>http://blog.johanneslink.net/2008/05/14/tdd-workshop-in-munich/#comments</comments>
		<pubDate>Wed, 14 May 2008 15:48:12 +0000</pubDate>
		<dc:creator>johanneslink</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johanneslink.wordpress.com/?p=83</guid>
		<description><![CDATA[If you have been planning to get some TDD teaching you might consider to come to Munich on June 9 &#38; 10 and attend my workshop on TDD with C#. The course is supposed to be in German but I will do it in English if necessary.
There are a couple of seats available; you&#8217;ll get [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>If you have been planning to get some TDD teaching you might consider to come to Munich on June 9 &amp; 10 and attend my workshop on <a title="TDD with C#" href="http://entwickler-akademie.de/ak/psecom,id,23,seminar,56.html" target="_blank">TDD with C#</a>. The course is supposed to be in German but I will do it in English if necessary.</p>
<p>There are a couple of seats available; you&#8217;ll get special conditions if you book via me. Just <a href="mailto:business@johanneslink.net">drop me a mail</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/johanneslink.wordpress.com/83/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/johanneslink.wordpress.com/83/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johanneslink.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johanneslink.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johanneslink.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johanneslink.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johanneslink.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johanneslink.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johanneslink.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johanneslink.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johanneslink.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johanneslink.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.johanneslink.net&blog=3243974&post=83&subd=johanneslink&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.johanneslink.net/2008/05/14/tdd-workshop-in-munich/feed/</wfw:commentRss>
	
		<media:content url="http://www.gravatar.com/avatar/93fb781c56c547026a12cc957931e5ff?s=96&#38;d=identicon" medium="image">
			<media:title type="html">johanneslink</media:title>
		</media:content>
	</item>
	</channel>
</rss>