<?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>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Mark Nijhof</title>
	<atom:link href="http://elegantcode.com/author/mark-nijhof/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog moved, Once again &#8230;</title>
		<link>http://elegantcode.com/2010/08/03/blog-moved-once-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-moved-once-again</link>
		<comments>http://elegantcode.com/2010/08/03/blog-moved-once-again/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:18 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=3678</guid>
		<description><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me [...]]]></description>
			<content:encoded><![CDATA[Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all. 

So I setup a new blog under <a href="http://Cre8iveThought.com/blog/index">http://Cre8iveThought.com/blog/index</a> and will be blogging there from now on. And this is where I will stay :) Also my personal feed will point to this one now as well: <a href="http://feeds.feedburner.com/fohjin">http://feeds.feedburner.com/fohjin</a>

And finally, I want to stress that me leaving ElegantCode has nothing to do with ElegantCode, but more about me wanting to take my own steps.]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/03/blog-moved-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be BEKK</title>
		<link>http://elegantcode.com/2010/06/24/ill-be-bekk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ill-be-bekk</link>
		<comments>http://elegantcode.com/2010/06/24/ill-be-bekk/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:14:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/ill-be-bekk/</guid>
		<description><![CDATA[Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well? Anyway it will [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little note; I am very happy to announce that I’ll be joining <a href="http://www.bekk.no/">BEKK</a> from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?</p>  <p>Anyway it will be great fun and many cool college's, so looking very much forward to it.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/ill-be-bekk/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Me @ NDC2010</title>
		<link>http://elegantcode.com/2010/06/24/me-ndc2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-ndc2010</link>
		<comments>http://elegantcode.com/2010/06/24/me-ndc2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:42:58 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/06/24/me-ndc2010/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof Many have already blogged about it, and Scott probably described it in the best, but NDC was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>Many have already blogged about it, and <a href="http://blog.scottbellware.com/2010/06/praise-for-norwegian-developers.html">Scott</a> probably described it in the best, but <a href="http://www.ndc2010.no/">NDC</a> was truly amazing this year. And I was very happy that I was able to speak at such a great conference. This was the first time that I was able to do so in such a big setting and it was extremely cool as well as a bit scary. I had two talks scheduled, one about FubuMVC and another one about Test-Driven JavaScript Development was added later.</p>  <h2>I learned a lot!</h2>  <p>I have had a nice number of presentations before, most of them for our local NNUG and 2 for the European Virtual Alt.Net (E-VAN), but in such a professional setting I did get a bit nervous. Thanks fully because of the stoplight I couldn’t actually see the people laughing at me, to be honest for all I know there was nobody sitting there. </p>  <p>Then of course the presentation that I was worried most about, the Test-Driven JavaScript one, because of the life coding went the best. My FubuMVC talk on the other hand failed miserably because I couldn’t access my code examples in my VM which cut my talk in half. I also learned that my Mac actually doesn’t pick the largest resolution on its own, something it seems to do on other occasions; so silly me thought that the max resolution at NDC was 800 by 600. I could sure have used the extra pixels in my Test-Driven JavaScript talk. Also I should repeat questions as they are unbearable for the rest of the audience as well as on the recording.</p>  <h2>Test-Driven JavaScript</h2>  <p>In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the <a href="http://streaming.ndc2010.no/tcs/?id=30DC4F1D-3867-41FD-944E-167872AE4EF2">Test-Driven JavaScript recording here</a> and also <a href="http://streaming.ndc2010.no/tcs/#page:conferenceList&amp;status:recorded&amp;pageNumber:1">all the other recordings from NDC2010 here</a> (well they will be there shortly, amazing how many they already made available).</p>  <h2>How do I get started?</h2>  <p>So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.</p>  <ul>   <li>All the original code for my website (which my demo was based upon) can be found on <a href="http://github.com/MarkNijhof/Cre8iveThought">my GitHub account</a>. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/jspec/unit/">/public/jspec/unit/</a> where the page (<a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">Dom.html</a>) that executes it is located one level higher. The JavaScript file under test is in <a href="http://github.com/MarkNijhof/Cre8iveThought/tree/master/public/javascripts/">/public/javascripts/</a> and the page containing it all is <a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/index.htm">/public/index.htm</a>.</li>    <li><a href="http://cre8ivethought.com/">My actual website</a>, so you can see the results, and also <a href="http://cre8ivethought.com/jspec/dom.html">the JSpec specs</a> and the <a href="http://cre8ivethought.com/jslint/jslint.html">JSLint output</a>.</li>    <li><a href="http://github.com/visionmedia/jspec">JSpec is the JavaScript testing framework</a> of my choice</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/dom.html">The slightly adjusted Dom.html page that includes a timer</a> to facilitate the continuous testing.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jspec/lib/jspec.jquery.animations.js">My own addition to better deal with animations</a>, as the JSpec library doesn’t really threat these correctly.</li>    <li><a href="http://www.jslint.com/">JSLint is a cool tool to get rid of smaller syntax errors and check the code quality</a>.</li>    <li><a href="http://github.com/MarkNijhof/Cre8iveThought/blob/master/public/jslint/jslint.html">My JSLint execution page</a>, not very special, but hey here it is.</li> </ul>  <h2>Questions?</h2>  <p>If you have any questions, then please let me know, I am more then happy to help where I can.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/06/24/me-ndc2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby &#8211; Heroku</title>
		<link>http://elegantcode.com/2010/05/02/ruby-heroku/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-heroku</link>
		<comments>http://elegantcode.com/2010/05/02/ruby-heroku/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:10:04 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/05/02/ruby-heroku/</guid>
		<description><![CDATA[When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did. Heroku offers a unique way of [...]]]></description>
			<content:encoded><![CDATA[<p>When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into <a href="http://www.heroku.com">Heroku</a> and I have to say that I am very happy that he did.</p>  <p>Heroku offers a unique way of deploying your Ruby web applications, you push them!</p>  <h4>git push heroku master</h4>  <p>Even do it is the first thing you see when visiting the site I still want to walk you through the process of setting up Heroku and deploying your Ruby application.</p>  <ol>   <li>$ sudo gem install heroku</li>    <li>$ heroku create &lt;your application name&gt;</li>    <li>$ git push heroku master</li>    <li>$ open http://&lt;your application name&gt;.heroku.com/</li> </ol>  <p>Oh did I mention yet that the initial plan is free? Free as in you don’t have to pay anything! Of course when your application starts to attract visitors and you need more performance then you will need to start paying. But you have full control over this and I believe you can push it pretty far. </p>  <p>There are also many <a href="http://addons.heroku.com/">addons</a> that you can enable (for some you need to pay for some not) providing a lot of functionality. </p>  <p>Now this looks like a commercial, but until someone told me about it I didn’t know, so now I am telling you. If you are doing some playing around or are actually working on a serious project. If it is in Ruby then this is worth checking out. </p>  <p>They are also offering some beta Node.js support! </p>  <p>More Ruby and other web stuff coming soon!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/05/02/ruby-heroku/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby</title>
		<link>http://elegantcode.com/2010/04/11/ruby/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby</link>
		<comments>http://elegantcode.com/2010/04/11/ruby/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:02:40 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/ruby/</guid>
		<description><![CDATA[After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about [...]]]></description>
			<content:encoded><![CDATA[<p>After a disappointing first of April I decided to look over the fence and see what other exciting areas of software development there are (Ok I am joking). Ruby has been something that I wanted to learn for quite some time, and I finally took the plunge. So now you can expect some posts about that in the near future :)</p>  <p>I am currently working / playing with the following:</p>  <ul>   <li>Ruby</li>    <li>Sinatra, because I want to actually learn Ruby and not just Rails</li>    <li>Haml</li>    <li>Sass</li>    <li>Compass</li>    <li>jQuery, lots of it</li>    <li>CouchDB</li>    <li>MongoDB</li>    <li>Cucumber</li>    <li>RSpec</li>    <li>QUnit</li>    <li>JsTestDriver</li>    <li>RubyMine, still in the evaluation time, but looks promising</li> </ul>  <p>I can tell you that there is a lot of new stuff here for me, and the list keeps on growing, so very exciting, very exciting indeed.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking</title>
		<link>http://elegantcode.com/2010/04/11/speaking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking</link>
		<comments>http://elegantcode.com/2010/04/11/speaking/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:26:15 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/11/speaking/</guid>
		<description><![CDATA[I have been quite for a while, too many different things on my mind. European Virtual Alt.Net (E-VAN) I am proud to have been asked to join the Software Craftsmanship discussion together with Robert C. Martin and David Starr on E-VAN which in case you have missed it you can listen to it here: http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html [...]]]></description>
			<content:encoded><![CDATA[<p>I have been quite for a while, too many different things on my mind.</p>  <h2>European Virtual Alt.Net (E-VAN)</h2>  <p>I am proud to have been asked to join the Software Craftsmanship discussion together with <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> and <a href="http://elegantcode.com/about/david-starr/">David Starr</a> on E-VAN which in case you have missed it you can listen to it here: <a title="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html" href="http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html">http://europevan.blogspot.com/2010/04/recording-of-discussion-on-software.html</a></p>  <h2>XP 2010 in Trondheim</h2>  <p><a href="http://xp2010.org/">XP 2010</a> will be held in Trondheim from 1st of June till the 4th of June and _two_ of my lightning talk suggestions have been selected. I am looking very much forward to this day, lightning talks are new to me and I expect to gain a lot of insights.</p>  <h4>5 Practices of a Software Craftsman (in the Personal Development track)</h4>  <p>One of the principles of software craftsmanship is continuous improvement; i.e. the importance of keeping their knowledge up-to-date and to keep improving and expanding their skill sets. But one of the problems is that is can be hard to get started, what is a good approach, and where does one start?</p>  <h4>Test Driven Spikes (in the Knowledge and Innovation track)</h4>  <p>Creating spike code is often seen as an exercise purely for exploring unknown territory and that any resulting code should be thrown away right after finding the solution. I am proposing to drive these spikes through tests; this brings an easy way to execute the code, but more importantly the code and tests created can be used instead of thrown away.</p>  <h2>NDC 2010 in Oslo</h2>  <p>From 16th of June till the 18 of June I’ll be in Oslo for <a href="http://www.ndc2010.no/">NDC 2010</a> and if it is anything like last year then this is also something to look forward to. This time it will be held in the city, so that means an even more interesting for Speaker Stalkers then last year. </p>  <h4>FubuMVC</h4>  <p>FubuMVC is an open source framework for web development using the Model View Controller (MVC) pattern. FubuMVC is built in C# and depends on the System.Web.Routing subsystem of the base CLR, but has no dependency on the ASP.Net MVC framework. In this talk I will highlight the architectural design of FubuMVC, how it works and more importantly the reasoning behind it. I will not make this into a comparison match with ASP.NET MVC, but there are so many interesting patterns being used in the FubuMVC code base that in its self should make this a very interesting talk. The FubuMVC code base has been an example for many others even in different areas outside of web development.</p>  <h2>Speaker Stalker</h2>  <p>Speaker Stalker is a pattern that I came up with at QCon London. Dan North gave the book “<a href="http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484">97 Things Every Programmer Should Know</a>” away (with many of the authors signatures) for the best conference pattern. I won by proving it was an actual established pattern :)</p>  <h2>The example application</h2>  <p>In an earlier post I mentioned that I was going to write an example application using FubuMVC and CQRS, but I am afraid that that has been put on hold for a while. Too many other things to give this a good effort, so then it is better to wait with it. Sorry about that.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/11/speaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiate and Embrace change</title>
		<link>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=initiate-and-embrace-change</link>
		<comments>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 17:00:00 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/26/initiate-and-embrace-change/</guid>
		<description><![CDATA[My new blog is at at http://cre8ivethought.com/blog/index come and follow me there.-Mark Nijhof I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>My new blog is at at <a href="http://cre8ivethought.com/blog/index">http://cre8ivethought.com/blog/index</a> come and follow me there.<br><br>-Mark Nijhof</em></p> </blockquote><p>I have initiated many changes throughout my career, I have for example lived and worked in Holland (duh I am Dutch, so yeah), Norway and Australia. I have worked as a consultant going to clients, and I have worked in-house doing product development. I have even been working as a responsible person for designing and implementing large scale systems using the companies existing building blocks without daily coding.</p>  <p>People tell me that I have been lucky to have been able to do all of these things, but it is not luck, it is about embracing the opportunities that come along in life. All of these changes came from nice opportunities that later proved the be great. But it takes faith and trusting your instincts, and yeah a big leap of faith.</p>  <p>Well that time has come again, I am going to take a leap of faith:</p>  <p>&#160;</p>  <p align="center"><a href="http://www.cre8ivethought.com/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cre8iveThought_100_top" border="0" alt="Cre8iveThought_100_top" src="http://elegantcode.com/wp-content/uploads/2010/02/Cre8iveThought_100_top.jpg" width="350" height="75" /></a><a href="http://www.Cre8iveThought.com">www.Cre8iveThought.com</a>&#160; </p>  <p>&#160;</p>  <p>I am going to be working for myself. This is been something that has been on my mind for a very long time, and I feel that now is the time to do it. I am actively initiating change.</p>  <p>I eventually want to be asked to initiate change in your development teams, helping them improve their skills and processes. I am a strong believer of continuous improvement, or kaizen and I have always enjoyed teaching others and seeing them just suddenly ‘get it’.</p>  <p>Another thing I will be doing is just delivering quality software, whatever is needed. I enjoy writing software immensely and that is something that won’t ever change.</p>  <p>So if you are in need of a person that is able to do any of the above mentioned things then I can be your man. Don’t hesitate to contact me on my e-mail <a href="mailto:Mark.Nijhof@Gmail.com">Mark.Nijhof@Gmail.com</a> or on my phone: 0047 95 00 99 37.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/26/initiate-and-embrace-change/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Ubiquitous Language is not Ubiquitous</title>
		<link>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-ubiquitous-language-is-not-ubiquitous</link>
		<comments>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:32:25 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/</guid>
		<description><![CDATA[I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post. My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous. Lets first look at the definition of ubiquitous: Being [...]]]></description>
			<content:encoded><![CDATA[<p>I attended an interesting Domain-Driven Design talk today given by <a href="http://twitter.com/miss_haugen/">Janniche Haugen</a> talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.</p>  <p>My statement is that the Ubiquitous Language in Domain-Driven Design is not Ubiquitous.</p>  <p>Lets first look at the definition of ubiquitous: <a href="http://wordnetweb.princeton.edu/perl/webwn?s=ubiquitous">Being present everywhere at once</a>. Hmm that sounds a bit vague; here is a definition of ubiquitous language: <a href="http://domaindrivendesign.org/node/132">A language structured around the domain model and used by all team members to connect all activities of the team with the software</a>. Ah that is better. So the ubiquitous language is a common language shared by the domain experts, developers and the code. </p>  <p>But it is not a common language throughout all of the domain and code, this is one of the reasons why we have different <a href="http://domaindrivendesign.org/node/91">bounded contexts</a>. Because the same language may mean different things to different domain experts. Think for example about a shipping company, the meaning of the word ship is completely different when talking to accounting versus maintenance. For accounting a ship is an asset that degrades in value over time, but for maintenance a ship is an object that needs service every x nautical miles.</p>  <p>The same word has a different meaning when used in a different context, that is not ubiquitous. </p>  <p>Lets continue the small example, domain experts from maintenance also talk about an engine and rotor blades. But the domain expert in accounting don’t use these words at all, they have no meaning to them.</p>  <p>Some words even have no meaning at all when used in a different context, this as well is not ubiquitous.</p>  <p>So the Ubiquitous Language is only Ubiquitous within a given Context. What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/the-ubiquitous-language-is-not-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>.Net User Group get-together at QCon London</title>
		<link>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=net-user-group-get-together-at-qcon-london</link>
		<comments>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:57:23 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/</guid>
		<description><![CDATA[NNUG Bergen together with QCon London are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated tech people as possible [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NNUGBergen" border="0" alt="NNUGBergen" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/NNUGBergen200.png" width="200" height="74" /> NNUG Bergen</a> together with <a href="https://secure.trifork.com/london-2010/" target="_blank">QCon London</a> are arranging a geek get-together on Thursday evening the 11th from 18:30 right after the second day of the QCon London conference. We are planning to meet at one of the local bars near the event and we are working on gathering as many motivated <a href="https://secure.trifork.com/london-2010/"><img style="border-right-width: 0px; margin: 5px 0px 5px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Billede 9" border="0" alt="Billede 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/02/Billede9.png" width="200" height="81" /></a>tech people as possible to have a great evening. Our main focus is .Net but I hope the turn-up&#160; won’t be limited to that.</p>  <p><a href="http://www.nnug.no/Avdelinger/Bergen/" target="_blank"></a></a>If you would like to join us, then please register yourself here: <a href="https://secure.trifork.com/london-2010/freeevent/register.m?eventOID=2389" target="_blank">Registration form and (eventually) more information</a></p>  <p>We are also inviting some QCon speakers to spice things up a little bit, more details on that as well as the actual location will follow later.</p>  <p>So far the following speakers have accepted the invite:</p>  <ul>   <li><a href="http://twitter.com/coreyhaines">Corey Haines</a> </li>    <li><a href="http://twitter.com/udidahan">Udi Dahan</a> </li>    <li><a href="http://twitter.com/Ayende">Ayende</a> </li>    <li><a href="http://twitter.com/tastapod">Dan North</a></li>    <li><a href="http://twitter.com/jonskeet">Jon Skeet</a></li> </ul>  <ul>So if you are at QCon London _or_ just in London and like to join us, then please do so! It will be fun!</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/net-user-group-get-together-at-qcon-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS &#8211; Event Versioning</title>
		<link>http://elegantcode.com/2010/02/09/cqrs-event-versioning/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cqrs-event-versioning</link>
		<comments>http://elegantcode.com/2010/02/09/cqrs-event-versioning/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 23:37:28 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[CQRS]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[Event Sourcing]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/09/cqrs-event-versioning/</guid>
		<description><![CDATA[When using Event Sourcing you store your events in an Event Store. This Event Store can only insert new events and read historical events, nothing more nothing less. So when you change your domain logic and also the events belonging to this behavior, then you cannot go back into the Event Store and do a [...]]]></description>
			<content:encoded><![CDATA[<p>When using Event Sourcing you store your events in an Event Store. This Event Store can only insert new events and read historical events, nothing more nothing less. So when you change your domain logic and also the events belonging to this behavior, then you cannot go back into the Event Store and do a one time convert of all the historical events belonging to the same behavior. The Event Store needs to stay intact, that is one of its powers.</p>  <p>So you make a new version of the original event, this new version carries more or less information then the original one. Lets take a look at a very simple example:</p>  <div style="padding-bottom: 10px; margin: 0px; font-family: monaco,verdana; background: rgb(22,36,51); color: white; font-size: 10pt; overflow: scroll; padding-top: 10px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">   <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 1</span>&#160;<span style="color: #0080c0">namespace</span> Fohjin<span style="color: aqua">.</span>DDD<span style="color: aqua">.</span>Events<span style="color: aqua">.</span>Account</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 2</span> {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 3</span>&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Serializable</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 4</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">CashWithdrawnEvent</span> : <span style="color: #2b91af">DomainEvent</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 5</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 6</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">decimal</span> Balance { <span style="color: #0080c0">get</span>; <span style="color: #0080c0">private</span> <span style="color: #0080c0">set</span>; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">decimal</span> Amount { <span style="color: #0080c0">get</span>; <span style="color: #0080c0">private</span> <span style="color: #0080c0">set</span>; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 8</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> CashWithdrawnEvent(<span style="color: #0080c0">decimal</span> balance, <span style="color: #0080c0">decimal</span> amount)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Balance <span style="color: aqua">=</span> balance;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 12</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Amount <span style="color: aqua">=</span> amount;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 14</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 15</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 16</span>&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Serializable</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 17</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">CashWithdrawnEvent_v2</span> : <span style="color: #2b91af">DomainEvent</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 18</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 19</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">decimal</span> Balance { <span style="color: #0080c0">get</span>; <span style="color: #0080c0">private</span> <span style="color: #0080c0">set</span>; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 20</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">decimal</span> Amount { <span style="color: #0080c0">get</span>; <span style="color: #0080c0">private</span> <span style="color: #0080c0">set</span>; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 21</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">Guid</span> AtmId { <span style="color: #0080c0">get</span>; <span style="color: #0080c0">private</span> <span style="color: #0080c0">set</span>; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 22</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 23</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> CashWithdrawnEvent_v2(<span style="color: #0080c0">decimal</span> balance, <span style="color: #0080c0">decimal</span> amount, <span style="color: #0080c0">Guid</span> atmId)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 24</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 25</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Balance <span style="color: aqua">=</span> balance;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 26</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Amount <span style="color: aqua">=</span> amount;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 27</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AtmId <span style="color: aqua">=</span> atmId;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 28</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 29</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 30</span> }</pre>
</div>

<p></p>

<p>This to me looks like a natural evolution for this type of event, so how do you deal with this. Because after having used the system, before adding this extension there have been many cash withdrawals. So all these events are in the Event Store, they cannot be altered, and when you retrieve an Aggregate Root from the Event Store all these historical events need to be processed in order to restore the internal state.</p>

<p>Now what you don’t want is to maintain code in the Aggregate Root that knows how to handle these old event versions, sure one version is ok, but what about one hundred different versions? Also we are not just talking about just in the Aggregate Root, also the different event handlers need to be kept and maintained.</p>

<p>The better approach is to have a mechanism that you can hook-up with different event convertors. Then when an event is retrieved from the Event Store it first goes through this pipeline of convertors to be converted to the latest event version.</p>

<p>Now I wanted to do this properly and write some actual code for this, and then blog about it, but someone kept nagging me about it, so here is a very rough spike instead, first some tests:</p>

<div style="padding-bottom: 10px; margin: 0px; font-family: monaco,verdana; background: rgb(22,36,51); color: white; font-size: 10pt; overflow: scroll; padding-top: 10px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 1</span>&#160;<span style="color: #0080c0">namespace</span> Test<span style="color: aqua">.</span>Fohjin<span style="color: aqua">.</span>DDD<span style="color: aqua">.</span>Spike</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 2</span> {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 3</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">Spike_test_1</span> : <span style="color: #2b91af">BaseTestFixture</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 4</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">private</span> <span style="color: #0080c0">object</span> ConvertedEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 6</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">protected</span> <span style="color: #0080c0">override</span> <span style="color: #0080c0">void</span> When()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> EventConvertor()<span style="color: aqua">.</span>Convert(<span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent</span>(<span style="color: yellow">10.0M</span>, <span style="color: yellow">20.0M</span>));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 11</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 12</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Then</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_is_the_latest_version()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 14</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 15</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>WillBeOfType<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>();</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 16</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 17</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 18</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Then</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 19</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_wil_contain_the_correct_data()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 20</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 21</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Balance<span style="color: aqua">.</span>WillBe(<span style="color: yellow">10.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 22</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Amount<span style="color: aqua">.</span>WillBe(<span style="color: yellow">20.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 23</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>AtmId<span style="color: aqua">.</span>WillBe(<span style="color: #0080c0">string</span><span style="color: aqua">.</span>Empty);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 24</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 25</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 26</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 27</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">Spike_test_2</span> : <span style="color: #2b91af">BaseTestFixture</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 28</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 29</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">private</span> <span style="color: #0080c0">object</span> ConvertedEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 30</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 31</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">protected</span> <span style="color: #0080c0">override</span> <span style="color: #0080c0">void</span> When()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 32</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 33</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> EventConvertor()<span style="color: aqua">.</span>Convert(<span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v2</span>(<span style="color: yellow">10.0M</span>, <span style="color: yellow">20.0M</span>, <span style="color: #a31515">&quot;12345&quot;</span>));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 34</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 35</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 36</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Then</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 37</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_is_the_latest_version()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 38</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 39</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>WillBeOfType<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>();</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 40</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 41</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 42</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Then</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 43</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_wil_contain_the_correct_data()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 44</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 45</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Balance<span style="color: aqua">.</span>WillBe(<span style="color: yellow">10.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 46</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Amount<span style="color: aqua">.</span>WillBe(<span style="color: yellow">20.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 47</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>AtmId<span style="color: aqua">.</span>WillBe(<span style="color: #a31515">&quot;12345&quot;</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 48</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 49</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 50</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 51</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">Spike_test_3</span> : <span style="color: #2b91af">BaseTestFixture</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 52</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 53</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">private</span> <span style="color: #0080c0">object</span> ConvertedEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 54</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 55</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">protected</span> <span style="color: #0080c0">override</span> <span style="color: #0080c0">void</span> When()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 56</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 57</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> EventConvertor()<span style="color: aqua">.</span>Convert(<span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v3</span>(<span style="color: yellow">10.0M</span>, <span style="color: yellow">20.0M</span>, <span style="color: #a31515">&quot;12345&quot;</span>));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 58</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 59</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 60</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [Then]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 61</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_is_the_latest_version()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 62</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 63</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>WillBeOfType<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>();</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 64</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 65</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 66</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [Then]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 67</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_wil_contain_the_correct_data()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 68</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 69</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Balance<span style="color: aqua">.</span>WillBe(<span style="color: yellow">10.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 70</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Amount<span style="color: aqua">.</span>WillBe(<span style="color: yellow">20.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 71</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>AtmId<span style="color: aqua">.</span>WillBe(<span style="color: #a31515">&quot;12345&quot;</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 72</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 73</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 74</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 75</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">Spike_test_4</span> : <span style="color: #2b91af">BaseTestFixture</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 76</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 77</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">private</span> <span style="color: #0080c0">object</span> ConvertedEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 78</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 79</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">protected</span> <span style="color: #0080c0">override</span> <span style="color: #0080c0">void</span> When()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 80</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 81</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> EventConvertor()<span style="color: aqua">.</span>Convert(<span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v4</span>(<span style="color: yellow">10.0M</span>, <span style="color: yellow">20.0M</span>, <span style="color: #a31515">&quot;12345&quot;</span>));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 82</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 83</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 84</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [Then]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 85</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_is_the_latest_version()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 86</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 87</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>WillBeOfType<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>();</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 88</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 89</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 90</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [<span style="color: #2b91af">Then</span>]</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 91</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">void</span> The_converted_event_wil_contain_the_correct_data()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 92</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 93</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Balance<span style="color: aqua">.</span>WillBe(<span style="color: yellow">10.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 94</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>Amount<span style="color: aqua">.</span>WillBe(<span style="color: yellow">20.0M</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 95</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ConvertedEvent<span style="color: aqua">.</span>As<span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span>()<span style="color: aqua">.</span>AtmId<span style="color: aqua">.</span>WillBe(<span style="color: #a31515">&quot;12345&quot;</span>);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 96</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 97</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 98</span> }</pre>
</div>

<p></p>

<p>So basically some tests to confirm the correct conversion from one event to another event, now below here is the full implementation:</p>

<div style="padding-bottom: 10px; margin: 0px; font-family: monaco,verdana; background: rgb(22,36,51); color: white; font-size: 10pt; overflow: scroll; padding-top: 10px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 1</span>&#160;<span style="color: #0080c0">namespace</span> Test<span style="color: aqua">.</span>Fohjin<span style="color: aqua">.</span>DDD<span style="color: aqua">.</span>Spike</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 2</span> {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 3</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">EventConvertor</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 4</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">private</span> <span style="color: #0080c0">readonly</span> <span style="color: #2b91af">Dictionary</span><span style="color: aqua">&lt;</span><span style="color: #2b91af">Type</span>, <span style="color: #2b91af">Func</span><span style="color: aqua">&lt;</span><span style="color: #0080c0">object</span>, <span style="color: #0080c0">object</span><span style="color: aqua">&gt;&gt;</span> _convertors;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 6</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> EventConvertor()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160;&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _convertors <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">Dictionary</span><span style="color: aqua">&lt;</span><span style="color: #2b91af">Type</span>, <span style="color: #2b91af">Func</span><span style="color: aqua">&lt;</span><span style="color: #0080c0">object</span>, <span style="color: #0080c0">object</span><span style="color: aqua">&gt;&gt;</span>();</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RegisterEventConvertors();</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 12</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">private</span> <span style="color: #0080c0">void</span> RegisterEventConvertors()</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 14</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 15</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _convertors<span style="color: aqua">.</span>Add(<span style="color: #0080c0">typeof</span>(<span style="color: #2b91af">CashWithdrawnEvent</span>), x <span style="color: aqua">=&gt;</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEventConvertor</span>()<span style="color: aqua">.</span>Convert((<span style="color: #2b91af">CashWithdrawnEvent</span>)x));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 16</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _convertors<span style="color: aqua">.</span>Add(<span style="color: #0080c0">typeof</span>(<span style="color: #2b91af">CashWithdrawnEvent_v2</span>), x <span style="color: aqua">=&gt;</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v2Convertor</span>()<span style="color: aqua">.</span>Convert((<span style="color: #2b91af">CashWithdrawnEvent_v2</span>)x));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 17</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _convertors<span style="color: aqua">.</span>Add(<span style="color: #0080c0">typeof</span>(<span style="color: #2b91af">CashWithdrawnEvent_v3</span>), x <span style="color: aqua">=&gt;</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v3Convertor</span>()<span style="color: aqua">.</span>Convert((<span style="color: #2b91af">CashWithdrawnEvent_v3</span>)x));</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 18</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 19</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 20</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">object</span> Convert(<span style="color: #0080c0">object</span> soureEvent)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 21</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 22</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #2b91af">Func</span><span style="color: aqua">&lt;</span><span style="color: #0080c0">object</span>, <span style="color: #0080c0">object</span><span style="color: aqua">&gt;</span> convertor;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 23</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">return</span> _convertors<span style="color: aqua">.</span>TryGetValue(soureEvent<span style="color: aqua">.</span>GetType(), <span style="color: #0080c0">out</span> convertor) </pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 24</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: aqua">?</span> Convert(convertor(soureEvent)) </pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 25</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; : soureEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 26</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 27</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 28</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 29</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">interface</span> <span style="color: #2b91af">IEventConvertor</span><span style="color: aqua">&lt;</span>TSourceEvent, TTargetEvent<span style="color: aqua">&gt;</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 30</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">where</span> TSourceEvent : <span style="color: #2b91af">IDomainEvent</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 31</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">where</span> TTargetEvent : <span style="color: #2b91af">IDomainEvent</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 32</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 33</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; TTargetEvent Convert(TSourceEvent sourceEvent);</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 34</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 35</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 36</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">CashWithdrawnEventConvertor</span> : <span style="color: #2b91af">IEventConvertor</span><span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent</span>, <span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 37</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 38</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #2b91af">CashWithdrawnEvent_v4</span> Convert(<span style="color: #2b91af">CashWithdrawnEvent</span> sourceEvent)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 39</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 40</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">var</span> theEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v4</span>(sourceEvent<span style="color: aqua">.</span>Balance, sourceEvent<span style="color: aqua">.</span>Amount, <span style="color: #0080c0">string</span><span style="color: aqua">.</span>Empty)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 41</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 42</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AggregateId <span style="color: aqua">=</span> sourceEvent<span style="color: aqua">.</span>AggregateId</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 43</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; };</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 44</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (theEvent <span style="color: #0080c0">as</span> <span style="color: #2b91af">IDomainEvent</span>)<span style="color: aqua">.</span>Version <span style="color: aqua">=</span> (sourceEvent <span style="color: #0080c0">as</span> <span style="color: #2b91af">IDomainEvent</span>)<span style="color: aqua">.</span>Version;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 45</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">return</span> theEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 46</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 47</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 48</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 49</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">CashWithdrawnEvent_v2Convertor</span> : <span style="color: #2b91af">IEventConvertor</span><span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v2</span>, <span style="color: #2b91af">CashWithdrawnEvent_v3</span><span style="color: aqua">&gt;</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 50</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 51</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #2b91af">CashWithdrawnEvent_v3</span> Convert(<span style="color: #2b91af">CashWithdrawnEvent_v2</span> sourceEvent)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 52</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 53</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">var</span> theEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v3</span>(sourceEvent<span style="color: aqua">.</span>Balance, sourceEvent<span style="color: aqua">.</span>Amount, sourceEvent<span style="color: aqua">.</span>AtmId)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 54</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 55</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AggregateId <span style="color: aqua">=</span> sourceEvent<span style="color: aqua">.</span>AggregateId</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 56</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; };</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 57</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (theEvent <span style="color: #0080c0">as</span> <span style="color: #2b91af">IDomainEvent</span>)<span style="color: aqua">.</span>Version <span style="color: aqua">=</span> (sourceEvent <span style="color: #0080c0">as</span> <span style="color: #2b91af">IDomainEvent</span>)<span style="color: aqua">.</span>Version;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 58</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">return</span> theEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 59</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 60</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 61</span>&#160;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 62</span>&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #0080c0">class</span> <span style="color: #2b91af">CashWithdrawnEvent_v3Convertor</span> : <span style="color: #2b91af">IEventConvertor</span><span style="color: aqua">&lt;</span><span style="color: #2b91af">CashWithdrawnEvent_v3</span>, <span style="color: #2b91af">CashWithdrawnEvent_v4</span><span style="color: aqua">&gt;</span></pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 63</span>&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 64</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">public</span> <span style="color: #2b91af">CashWithdrawnEvent_v4</span> Convert(<span style="color: #2b91af">CashWithdrawnEvent_v3</span> sourceEvent)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 65</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 66</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">var</span> theEvent <span style="color: aqua">=</span> <span style="color: #0080c0">new</span> <span style="color: #2b91af">CashWithdrawnEvent_v4</span>(sourceEvent<span style="color: aqua">.</span>Balance, sourceEvent<span style="color: aqua">.</span>Amount, sourceEvent<span style="color: aqua">.</span>AtmId)</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 67</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 68</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AggregateId <span style="color: aqua">=</span> sourceEvent<span style="color: aqua">.</span>AggregateId</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 69</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; };</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 70</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (theEvent <span style="color: #0080c0">as</span> <span style="color: #2b91af">IDomainEvent</span>)<span style="color: aqua">.</span>Version <span style="color: aqua">=</span> (sourceEvent <span style="color: #0080c0">as</span> <span style="color: #2b91af">IDomainEvent</span>)<span style="color: aqua">.</span>Version;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 71</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #0080c0">return</span> theEvent;</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 72</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 73</span>&#160;&#160;&#160;&#160; }</pre>

  <pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: rgb(22,36,51); padding-top: 0px"><span style="background: #121e31">&#160;&#160; 74</span> }</pre>
</div>

<p></p>

<p>This implementation is definitely not very elegant (so it doesn’t really belong on this blog) but hey it does show you how a possible solution would work. When building this yourself you might want to use conventions to auto register the convertors and chain them together during configuration so there is no need for the recursive functionality.</p>

<p>Also look at the jump from version 1 to version 4, this is an optimization to speed up the conversion. You would do this after a few versions, not for each version.</p>

<p>I’ll be adding a proper solution to the example in the near future, something that you would just plug the convertors in and the system would figure out how to handle them itself.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/09/cqrs-event-versioning/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

