<?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>Gojko Adzic &#187; altdotnet</title>
	<atom:link href="http://gojko.net/tag/altdotnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net</link>
	<description>Building software that matters</description>
	<lastBuildDate>Wed, 04 Aug 2010 11:38:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Upcoming .NET events at Skills Matter:  MassTransit, Future of Web development and Mono</title>
		<link>http://gojko.net/2009/09/14/upcoming-net-events-at-skills-matter-masstransit-future-of-web-development-and-mono/</link>
		<comments>http://gojko.net/2009/09/14/upcoming-net-events-at-skills-matter-masstransit-future-of-web-development-and-mono/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 08:06:57 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[alt.net]]></category>
		<category><![CDATA[altdotnet]]></category>
		<category><![CDATA[aspnetmvc]]></category>
		<category><![CDATA[masstransit]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1127</guid>
		<description><![CDATA[The plan for the opensource .NET events at Skills Matter for the following three months is: Mike Hadlow: Enterprise integration with MassTransit, October 1st Dylan Beattie: The future of Web development: HTML 5 and ASP.NET MVC 2, November 2nd Toby Henderson: Introduction to Mono, December 3rd All these events are free, but up-front registration is [...]]]></description>
			<content:encoded><![CDATA[<p>The plan for the opensource .NET events at Skills Matter for the following three months is:</p>
<ul>
<li><a href="http://mikehadlow.blogspot.com/">Mike Hadlow</a>: <a href="http://skillsmatter.com/event/open-source-dot-net/enterprise-integration-with-masstransit">Enterprise integration with MassTransit</a>, October 1st</li>
<li><a href="http://www.dylanbeattie.net/">Dylan Beattie</a>: <a href="http://skillsmatter.com/event/open-source-dot-net/the-future-of-web-development-html-5-and-aspdot-net-httpaspdot-net-mvc-2">The future of Web development: HTML 5 and ASP.NET MVC 2</a>, November 2nd</li>
<li><a href="http://holytshirt.blogspot.com/">Toby Henderson</a>: <a href="http://skillsmatter.com/event/open-source-dot-net/an-introduction-to-mono">Introduction to Mono, December 3rd</a></li>
</ul>
<p>All these events are free, but up-front registration is required for capacity planning. Click on individual events to register.</p>
<p>In addition to that, I&#8217;ll be running the 3 day Progressive .NET course again on November 11th-13th. The course helps students learn the most important emerging practices in the .NET community such as dependency injection, aspect oriented programming, MVC, object-relational mapping, unit and acceptance TDD and so on, with practical exercises using leading opensource .NET tools such as the Castle stack, NHibernate, MBUnit&#8230; For more information and to register, see <a href="http://skillsmatter.com/course/open-source-dot-net/opensource-dot-net-tools-crash-course">http://skillsmatter.com/course/open-source-dot-net/opensource-dot-net-tools-crash-course</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/09/14/upcoming-net-events-at-skills-matter-masstransit-future-of-web-development-and-mono/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Free presentation on Space Based Programming, September 2nd, London</title>
		<link>http://gojko.net/2009/08/19/free-presentation-on-space-based-programming-september-2nd-london/</link>
		<comments>http://gojko.net/2009/08/19/free-presentation-on-space-based-programming-september-2nd-london/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 10:22:53 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[alt.net]]></category>
		<category><![CDATA[altdotnet]]></category>
		<category><![CDATA[skillsmatter]]></category>
		<category><![CDATA[space based architectures]]></category>

		<guid isPermaLink="false">http://gojko.net/2009/08/19/free-presentation-on-space-based-programming-september-2nd-london/</guid>
		<description><![CDATA[I&#8217;m doing a free evening talk on space based programming on September 2nd at Skills Matter. Space-based architectures are an alternative to the traditional n-tier model for enterprise applications. Instead of a vertical tier partitioning, space based applications are partitioned horizontally into self-sufficient units. This leads to almost linear scalability of stateful, high-performance applications. In [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m doing a free evening talk on space based programming on September 2nd at Skills Matter. </p>
<p>Space-based architectures are an alternative to the traditional n-tier model for enterprise applications. Instead of a vertical tier partitioning, space based applications are partitioned horizontally into self-sufficient units. This leads to almost linear scalability of stateful, high-performance applications. In this presentation, I&#8217;ll talk about space based programming in general and demonstrate how to do that on the .NET platform. </p>
<p>The event is free but up-front registration is required. See <a href="http://skillsmatter.com/podcast/open-source-dot-net/space-based-programming/">http://skillsmatter.com/podcast/open-source-dot-net/space-based-programming/</a> for more information and to register.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/08/19/free-presentation-on-space-based-programming-september-2nd-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDD as if you meant it &#8211; revisited</title>
		<link>http://gojko.net/2009/08/02/tdd-as-if-you-meant-it-revisited/</link>
		<comments>http://gojko.net/2009/08/02/tdd-as-if-you-meant-it-revisited/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 03:31:42 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[alt.net]]></category>
		<category><![CDATA[altdotnet]]></category>
		<category><![CDATA[altnetuk]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1035</guid>
		<description><![CDATA[Yesterday at AltNetUK Openspace Coding Days we repeated the TDD as if you meant it exercise, originally organised by Keith Braithwaite at the Software Craftsmanship 2009 conference. This gave me a chance to once again go back to the problem, but from a completely different perspective. The exercise involves developing a very simple piece of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/tictactoe.png" align="left"/>Yesterday at <a href="http://www.altnetuk.com/2009.en.html">AltNetUK Openspace Coding Days</a> we repeated the <a href="http://gojko.net/2009/02/27/thought-provoking-tdd-exercise-at-the-software-craftsmanship-conference/">TDD as if you meant it exercise</a>, originally organised by <a href="http://peripateticaxiom.blogspot.com/">Keith Braithwaite</a> at the <a href="http://softwarecraftsmanship.org.uk">Software Craftsmanship 2009</a> conference. This gave me a chance to once again go back to the problem, but from a completely different perspective.<span id="more-1035"></span></p>
<p>The exercise involves developing a very simple piece of code strictly adhering to the TDD rules, so much so that participants aren&#8217;t allowed to create domain methods or classes other than extracting them from test code. The goal of the exercise is to demonstrate factoring out just what you really need from the test code into domain design rather than starting with a pre-set design structure. Although this is in general taken as a goal of TDD, many programmers (me included) don&#8217;t realise how much their assumptions make them jump ahead too quickly. By making it very painful to add new domain code, this exercise slows participants down to a point where people have to spend a considerable amount of time actually focusing code on exactly what is required  and no more. </p>
<p>Even on a very simple problem such as tic-tac-toe, differences from a pre-conceived design and the one that emerges from code are considerable, the latter being a lot more elegant and better suited to describe a problem.</p>
<h2>The exercise</h2>
<p>The original exercise involved stones and the Go game. As I&#8217;ve never played that before and we had a lot less time than in the original one, I suggested tic-tac-toe. This turned out to be a very good idea as we spent less time explaining what the domain but it still proved the point of the exercise. </p>
<p>The requirements on the flip-chart were the following:</p>
<ul>
<li>a game is over when all fields are taken</li>
<li>a game is over when all fields in a column are taken by a player</li>
<li>a game is over when all fields in a row are taken by a player</li>
<li>a game is over when all fields in a diagonal are taken by a player</li>
<li>a player can take a field if not already taken</li>
<li>players take turns taking fields until the game is over</li>
</ul>
<h2>The dynamics</h2>
<p>All the participants worked in pairs. Most of the teams started by building a 3&#215;3 board and describing requirements that were not given at all (eg first player won, tics or noughts being placed) and took three or four attempts at describing the problem to really go down to basics. As predicted, people were annoyed by this but I did make an effort to explain that the start of the exercise feels silly and annoying so this went much better than I expected. After the first requirement was done correctly, the next three followed easily as they are fairly related. The fifth one though posed a problem again and this is where things got really interesting, some teams falling back on the grid idea (and getting their code deleted) and some teams starting to flesh out the concepts of players and the actual dynamics of fields being taken.</p>
<p>By the end of the exercise, almost half the teams were coding towards something that was not a 3&#215;3 char/int grid. We did not have the time to finish the whole thing, but some interesting solutions in making were:</p>
<ul>
<li>a bag of fields that are literally taken by players &#8211; field objects start in the collection belonging to the game and move to collections belonging to players, which simply avoids edge cases such as taking an already taken field and makes checking for game end criteria very easy.</li>
<li>fields that have logic whether they are taken or not and by whom</li>
<li>game with a current state field that was recalculated as the actions were performed on it and methods that could set this externally to make it easy to test</li>
</ul>
<p>Most of the game classes had very nice explicit methods for checking different game end criteria. During a short retrospective at the end, some participants said that their code was very nicely isolated and encapsulated, with &#8220;less leakage than normal&#8221;, and that very explicit specifications ended up in the code making it easy to understand.    </p>
<h2>Multiple models</h2>
<p>This exercise reminded me again about Eric Evans&#8217; <a href="http://www.infoq.com/presentations/model-to-work-evans">introductory presentation to domain modeling</a>. One of the basic ideas there is that the best models are not the most realistic ones but the ones that allow us to describe a particular problem efficiently. The best models are good because they serve a particular purpose in a particular context, so a bag of fields might be a better model of the tic-tac-toe game than a 3&#215;3 board even if the latter feels much more realistic and natural.  </p>
<h2>Conclusions</h2>
<p>In my view, this exercise worked really well. It was interesting to observe it from a different perspective (this time I got the role of the annoying git who went around the room and deleted code that people wrote and did not need). Tic-tac-toe was a good choice as it did not require spending time on explaining and comes with an almost guaranteed 3&#215;3 pre-conceived model. Some participants suggested that we should have done requirements 5 and 6 first and then moved to 1-4. Although this would take away the big refactoring moment, it might actually work better to allow people to factor out a very different model straight from the start. Introducing that the exercise is a bit annoying at the start was also a good idea, as I think that it went smoother than the original one with less opposition to dropping unnecessary code. </p>
<p>You can see some of the code examples on <a href="http://openspacecode.googlecode.com/svn/trunk/src/2009-08-01%20London/TddAsIfYouMeanIt/">the openspacecode repository</a>. For more information on the original exercise and the rules, see <a href="http://gojko.net/2009/02/27/thought-provoking-tdd-exercise-at-the-software-craftsmanship-conference/">my earlier post</a> about it. Mark Needham repeated the exercise earlier as well, building a message interceptor &#8211; something much more technical and practical than a tic-tac-toe or Go game. You can read his conclusions at <a href="http://www.markhneedham.com/blog/2009/04/30/coding-dojo-13-tdd-as-if-you-meant-it/">markhneedham.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/08/02/tdd-as-if-you-meant-it-revisited/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>OpenSource .NET Exchange III</title>
		<link>http://gojko.net/2009/07/17/opensource-net-exchange-iii/</link>
		<comments>http://gojko.net/2009/07/17/opensource-net-exchange-iii/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 07:38:06 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[presentations]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[alt.net]]></category>
		<category><![CDATA[altdotnet]]></category>
		<category><![CDATA[altdotnetuk]]></category>
		<category><![CDATA[altnetuk]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[skillsmatter]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1020</guid>
		<description><![CDATA[I had a great time yesterday at the Opensource .NET Exchange III. Opensource .NET exchange is a meeting of .NET enthusiasts organised by Skills Matter every six months in London with lots of speakers giving 15 minute talks on different subjects, loosely related to opensource and .NET, with lots of time for socialising over beer [...]]]></description>
			<content:encoded><![CDATA[<p>I had a great time yesterday at the <a href="http://skillsmatter.com/event/open-source-dot-net/open-source-dot-net-exchange-iii">Opensource .NET Exchange III</a>. Opensource .NET exchange is a meeting of .NET enthusiasts organised by <a href="http://www.skillsmatter.com">Skills Matter</a> every six months in London with lots of speakers giving 15 minute talks on different subjects, loosely related to opensource and .NET, with lots of time for socialising over beer and pizza. <span id="more-1020"></span></p>
<p>The event started with <a href="http://www.trelford.com/blog/">Phil Trelford</a> talking about SI system units of measure and how they fit into F# programming &#8211; apparently from the next release this language will have static compile-time checking that you&#8217;re using metres, grams and units such as that correctly without requiring you to implement a special class only for that. Phil well earned the appluause from the crowd when he launched a lunar lander game developed entirely in F# based on units of measure, the first practical application in F# that I&#8217;ve seen. </p>
<p><a href="http://dylanbeattie.blogspot.com/">Dylan Beattie</a> again did a very interesting presentation, this time on web deployment with <a href="http://blogs.iis.net/msdeploy/default.aspx">MSDeploy</a> and <a href="http://www.microsoft.com/web/downloads/platform.aspx">Web Platform Installer</a>, two new Microsoft&#8217;s tools for web deployment. He started by going through a list of problems that people typically experience when they want to try out an opensource .NET web tool: setting up the correct version of ASP.NET web platform, SQL server, dependencies, configuring web.config, machine settings and IIS. Dylan then showed the Web Plaform Installer Gallery, a very interesting solution that automates installation of popular applications &#8211; comparing it to the Apple iPhone AppStore. Web Plaform Installer Gallery has installation scripts for lots of popular web projects so you can just install them with a few clicks. Dylan then explained how MSDeploy and Web Platform Installer work together to provide this functinality and how teams can use them to automate in-house web site deployment and synchronising development, test and production servers deployments. </p>
<p><a href="http://pebblesteps.com/">David Ross</a> presented <a href="http://www.codeplex.com/mpinet">MPI.NET</a>, a library that helps organise computing clusters for Fork/Join parallel calculations. MPI (Message Passing Interface) is a standard for message interchange and collaboration for distributed processing, and MPI.NET is a wrapper around the original C API that makes it easier to use and exposes a .NET interface. David talked about Fork/Join and Map reduce patterns and demonstrated how MPI.NET helps write those with very little code.</p>
<p><a href="http://alandean.blogspot.com/">Alan Dean</a> then talked about <a href="http://openspacecode.com/">Openspace coding days</a>, a community project that started in January as a spin-off of the Alt.NET UK conference intended to be more practical. Openspace coding days are organised without a pre-determined plan, where attendees vote for topics of interest and then participate in workshops on those topics. These workshops range from well established technologies and practices to collaborative learning of a completely new technology or tool.</p>
<p><a href="http://sleepoverrated.com/">Scott Cowan</a> demonstrated <a href="http://sparkviewengine.com/">Spark</a>, a view engine that has the advantages of intellisense support, being able to generate HTML using a command line tool and being more readable than ASP.NET tags. Spark uses special HTML elements and attributes and should look much more familiar to people who know HTML than ASP.NET or NVelocity. One of the more interesting things in the demonstration for me was how loops and conditional logic can be attached to normal HTML elements, such as DIV, avoiding the introduction of custom tags.</p>
<p>I presented how <a href="http://code.google.com/p/concordion-net/">Concordion.NET</a> helps us implement acceptance tests in plain English. Concordion.NET is a port of Concordion acceptance testing framework, originally developed by David Peterson and converted to .NET by Jeffrey Cameron. It works on HTML files and uses special HTML attributes to mark  inputs and expected outputs of acceptance tests, allowing us to write and manage tests in free-form HTML text. Concordion.NET integrates with Gallio and links HTML documents to domain code using MBUnit-like fixtures. You can download the slides from <a href="/resources/concordiondotnet.pdf">resources</a>.</p>
<p>The event ended in what is almost becoming a tradition, <a href="/resources/concordiondotnet.pdf">Sebastien Lambla</a> presenting his <a href="http://trac.caffeine-it.com/openrasta">Openrasta</a> web framework (and working on the code to present until 10 minutes before his talk). Openrasta started as a REST framework which Sebastien presented at the first exchange, then became a MVC framework (implemented probably during the second exchange) and yesterday Sebastien demonstrated using embedded pre-compilers for ASP.NET and a standalone service, along with a new view engine based on C# with full intellisense support, so I guess OpenRasta is becoming a web server now. </p>
<p>In retrospect, I really enjoyed catching up with lots of people and I look forward to the next exchange. Next time I should really remember to start drinking after my talk, not before, or arrange to go earlier in the schedule. </p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/07/17/opensource-net-exchange-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get 25% off Test Driven .NET Development in Practice</title>
		<link>http://gojko.net/2009/07/15/get-25-off-test-driven-net-development-in-practice/</link>
		<comments>http://gojko.net/2009/07/15/get-25-off-test-driven-net-development-in-practice/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 10:52:58 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[alt.net]]></category>
		<category><![CDATA[altdotnet]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1017</guid>
		<description><![CDATA[I&#8217;m launching a new TDD course with Skills Matter &#8211; very practical with hands-on exercises straight from the start and very little theory just to explain how things work. Covering the latest TDD tools and practices. Get 25% off when you book by quoting get 25% off my new Test Driven .NET Development in Practice [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m launching a new TDD course with Skills Matter &#8211; very practical with hands-on exercises straight from the start and very little theory just to explain how things work. Covering the latest TDD tools and practices. Get 25% off when you book by quoting get 25% off my new Test Driven .NET Development in Practice (London, 3 Aug) quote SM1604-622777-ALT at <a href="http://skillsmatter.com/course/open-source-dot-net/test-driven-dot-net-development-in-practice/ng-131">http://skillsmatter.com/course/open-source-dot-net/test-driven-dot-net-development-in-practice/ng-131</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2009/07/15/get-25-off-test-driven-net-development-in-practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
