<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>Crafting software</title>
	<link>http://davidlaing.com</link>
	<description>David Laing&#039;s thoughts on software development</description>
	<lastBuildDate>Wed, 01 Feb 2012 11:02:25 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.2.1" -->

	<item>
		<title>AMEE in Excel</title>
		<description><![CDATA[The AMEEConnect API gives access to a vast amount of climate related data. It also exposes standardise methodologies and to perform calculations based on that data. As part of the London Green Hackathon I created the AMEE-in-Excel addin to tightly integrate this data and calculations into Excel. So, if Excel is your preferred way to [...]]]></description>
		<link>http://davidlaing.com/2012/01/29/amee-in-excel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=amee-in-excel</link>
			</item>
	<item>
		<title>Googlewack!</title>
		<description><![CDATA[Hurrah! My first googlewack, discovered by complete accident.]]></description>
		<link>http://davidlaing.com/2012/01/29/googlewack/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=googlewack</link>
			</item>
	<item>
		<title>Functional programming in Javascript and F#</title>
		<description><![CDATA[During June 2011 I presented a session at the SPA2011 conference in London, UK. My session was a hands on introduction to functional programming techniques with code samples in Javascript and F#. The focus on the session was to get peopling thinking about first class functions; and the techniques they enable to simplify and increase [...]]]></description>
		<link>http://davidlaing.com/2011/06/19/functional-programming-in-javascript-and-f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=functional-programming-in-javascript-and-f</link>
			</item>
	<item>
		<title>Implementing the strategy pattern without an explosion of classes &#8211; part 3 of ??</title>
		<description><![CDATA[I feel uncomfortable when I see large switch statements. I appreciate how they break the Open Closed Principle. I have enough experience to know that they seem to attract extra conditions &#38; additional logic during maintenance, and quickly become bug hotspots. A refactoring I use frequently to deal with this is Replace Conditional with Polymorphism; [...]]]></description>
		<link>http://davidlaing.com/2011/04/16/implementing-the-strategy-pattern-without-an-explosion-of-classes-part-3-of/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=implementing-the-strategy-pattern-without-an-explosion-of-classes-part-3-of</link>
			</item>
	<item>
		<title>Higher order functions &#8211; simplifying loops &#8211; part 2 of ??</title>
		<description><![CDATA[This is the 2nd part of my series on everyday functional programming. Filtering Suppose you have a collection of items and need to grab just a subset that match a certain criteria. Programming C# in an imperative style, you could use a for or foreach loop as follows: Functional programming recognises this common scenario as [...]]]></description>
		<link>http://davidlaing.com/2011/04/04/higher-order-functions-simplifying-loops-part-2-of/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=higher-order-functions-simplifying-loops-part-2-of</link>
			</item>
	<item>
		<title>Everyday functional programming &#8211; part 1 of ??</title>
		<description><![CDATA[This is the first of a series of blog posts where I will be exploring how functional programming techniques are useful in the daily life of a working &#8220;enterprise software&#8221; developer. If you, like me, began programming in the 1990&#8242;s, then you will probably have started in a procedural programming style with simple task orientated [...]]]></description>
		<link>http://davidlaing.com/2011/04/04/everyday-functional-programming-part-1-of/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=everyday-functional-programming-part-1-of</link>
			</item>
	<item>
		<title>A Defect Exception</title>
		<description><![CDATA[Occasionally one comes across a idea that is just brilliant. How often have you been writing a bit of code, and got to a point where you think &#8220;gee, if the program ever gets into this state, then something is really wrong&#8221;. Throwing an exception seems appropriate, but what kind of exception to throw? Enter [...]]]></description>
		<link>http://davidlaing.com/2011/02/18/a-defect-exception/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-defect-exception</link>
			</item>
	<item>
		<title>Learning functional Javascript through Koans</title>
		<description><![CDATA[Given how Javascript interpreters are improving in leaps and bounds; and that it seems to be the only language that will be supported by all web devices; its time to for me to revive my Javascript skilz. Fortunately the tooling has improved greatly; Eclipse 3.6 for Web Developers and JsTestDriver bring a refactoring and a [...]]]></description>
		<link>http://davidlaing.com/2010/07/19/learning-functional-javascript-through-koans/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learning-functional-javascript-through-koans</link>
			</item>
	<item>
		<title>Fitnesse Smell &#8211; Executable Requirements that look like Scripts</title>
		<description><![CDATA[Gojko (who wrote the Fitnesse book) has this interesting discussion on what makes a good acceptance test in Fitnesse. http://gojko.net/2010/06/16/anatomy-of-a-good-acceptance-test/ His point seems to be that Fitnesse is a good tool for documenting specifications, and continuously automating their validation. When your Fitnesse tests become like &#8220;scripts&#8221; (which is how developers are trained to see the [...]]]></description>
		<link>http://davidlaing.com/2010/06/16/fitnesse-smell-executable-requirements-that-look-like-scripts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fitnesse-smell-executable-requirements-that-look-like-scripts</link>
			</item>
	<item>
		<title>Why Pair Programming Doesn&#8217;t Reduce Productivity</title>
		<description><![CDATA[The other day I was asked why pair programming doesn&#8217;t reduce productivity; and its taken me a few days to come up with a this succinct answer &#8211; because we&#8217;re building a system to release software changes rapidly over a long period of time, not type more lines of code to reach some predefined goal [...]]]></description>
		<link>http://davidlaing.com/2010/06/06/why-pair-programming-doesnt-reduce-productivity/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-pair-programming-doesnt-reduce-productivity</link>
			</item>
</channel>
</rss>

