<?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>Digital Bricklayer &#187; Programming</title>
	<atom:link href="http://www.digitalbricklayer.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.digitalbricklayer.com</link>
	<description>One brick at a time...</description>
	<lastBuildDate>Sat, 08 Nov 2008 17:58:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Java web development lighter, but not light yet</title>
		<link>http://www.digitalbricklayer.com/java-web-development-lighter-but-not-light-yet/</link>
		<comments>http://www.digitalbricklayer.com/java-web-development-lighter-but-not-light-yet/#comments</comments>
		<pubDate>Thu, 15 Mar 2007 16:00:39 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/03/15/java-web-development-lighter-but-not-light-yet/</guid>
		<description><![CDATA[For all the talk of lighter, leaner Java web development things still seem to be pretty difficult. Not to say they are as bad they were in the J2EE days, but pretty tough nevertheless.
When you&#8217;ve had a look over what is available in Ruby on Rails you start to realise just how far even supposedly [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>For all the talk of lighter, leaner Java web development things still seem to be pretty difficult. Not to say they are as bad they were in the <a href="http://java.sun.com/javaee/">J2EE</a> days, but pretty tough nevertheless.</p>
<p>When you&#8217;ve had a look over what is available in <a href="http://www.rubyonrails.org/">Ruby on Rails</a> you start to realise just how far even supposedly light Java frameworks like Spring have to go.</p>
<p>With Rails the easy stuff really is easy, and the tough stuff doesn&#8217;t look too bad either.</p>
<p>Where are the tools to make Java web development as pain free? The tools are there, the language is superb, no language has a better tool or library ecosystem. All that is needed is something to bind it all together into a cohesive whole.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/java-web-development-lighter-but-not-light-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Will software development come to resemble hardware development?</title>
		<link>http://www.digitalbricklayer.com/will-software-development-come-to-resemble-hardware-development/</link>
		<comments>http://www.digitalbricklayer.com/will-software-development-come-to-resemble-hardware-development/#comments</comments>
		<pubDate>Thu, 15 Mar 2007 12:13:36 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/03/15/will-software-development-come-to-resemble-hardware-development/</guid>
		<description><![CDATA[Sometimes it is interesting to ponder the future of programming. And, like most future gazing it is almost always wrong. But, good fun nevertheless  
One thing I believe is certain is that today&#8217;s arty/craft programming methods won&#8217;t outlive me (I&#8217;m 38 yo). Why? Mainly because they don&#8217;t work often enough. One thing business and [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Sometimes it is interesting to ponder the future of programming. And, like most future gazing it is almost always wrong. But, good fun nevertheless <img src='http://www.digitalbricklayer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>One thing I believe is certain is that today&#8217;s arty/craft programming methods won&#8217;t outlive me (I&#8217;m 38 yo). Why? Mainly because they don&#8217;t work often enough. One thing business and governments want from IT in general is predictability. They want to have software delivered on time, on budget with the features they asked for.</p>
<p>Software production isn&#8217;t predictable. Some programmers/teams perform brilliantly some perform very badly.</p>
<p>If I were to hazard a guess where things will go I would say that software development will come to resemble hardware development in many respects.</p>
<p>Take a look at tools like <a href="http://www.cogiton.com/demo/Calculator1/calculator_modified.xml">this</a>. That looks a lot more like hardware development than traditional software development. I&#8217;d hazard a guess that artifacts created with the <a href="http://www.cogiton.com/home.html">Cogitron</a> tools could be verified for correctness by the software itself.</p>
<p>From my experience working in ISDN, the hardware people seemed a whole lot more predictable than the software people. Their first deliverables were never perfect but they were a lot closer than the software deliverables. They took a lot fewer iterations to reach a shippable deliverable too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/will-software-development-come-to-resemble-hardware-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Programmer ludites holding back the software industry</title>
		<link>http://www.digitalbricklayer.com/programmer-ludites-holding-back-the-software-industry/</link>
		<comments>http://www.digitalbricklayer.com/programmer-ludites-holding-back-the-software-industry/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 14:00:34 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/03/13/programmer-ludites-holding-back-the-software-industry/</guid>
		<description><![CDATA[One of the most frustrating things about software development is the politics.
You would think by many programmer&#8217;s attitude that all is a bed of roses&#8230;that systems are delivered on time, to budget and with all of the features you asked for.
And of course software isn&#8217;t a bed of roses, in fact it couldn&#8217;t be much [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>One of the most frustrating things about software development is the politics.</p>
<p>You would think by many programmer&#8217;s attitude that all is a bed of roses&#8230;that systems are delivered on time, to budget and with all of the features you asked for.</p>
<p>And of course software isn&#8217;t a bed of roses, in fact it couldn&#8217;t be much further from the truth.</p>
<p>So against the background of failure you would assume that programmers and their managers would be open to new tools and techniques that improve performance.</p>
<p>Well, you&#8217;d be wrong. Programmers are amongst the most technically conservative group of workers you will ever meet.</p>
<p>Which is a pitty. There are proven tools and techniques around that do improve software quality. The biggest problem may be that customers are far too accepting of poor software. So, market forces don&#8217;t weed out the cowboys.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/programmer-ludites-holding-back-the-software-industry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software vendor honesty</title>
		<link>http://www.digitalbricklayer.com/software-vendor-honesty/</link>
		<comments>http://www.digitalbricklayer.com/software-vendor-honesty/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 12:37:17 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/03/07/software-vendor-honesty/</guid>
		<description><![CDATA[I like this blog about software by Dave Winer&#8230;all software is shit. The only difference is the software vendor. Some vendors admit it, some don&#8217;t. The ones who don&#8217;t are deluding themselves.
All software is buggy, period.
So, find software vendors who admit their software is shit and are determined to fix it.
Wordpress is shit and I [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I like this <a href="http://stories.scripting.com/2007/03/05/wordpressIsShittySoftware.html">blog about software</a> by <a href="http://www.scripting.com/">Dave Winer</a>&#8230;all software is shit. The only difference is the software vendor. Some vendors admit it, some don&#8217;t. The ones who don&#8217;t are deluding themselves.</p>
<p>All software is buggy, period.</p>
<p>So, find software vendors who admit their software is shit and are determined to fix it.</p>
<p>Wordpress is shit and I love it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/software-vendor-honesty/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Deployment platforms first, development tools second</title>
		<link>http://www.digitalbricklayer.com/deployment-platforms-first-development-tools-second/</link>
		<comments>http://www.digitalbricklayer.com/deployment-platforms-first-development-tools-second/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 14:22:22 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/03/05/deployment-platforms-first-development-tools-second/</guid>
		<description><![CDATA[On the deployment side of software development, one of the trickiest aspects is deciding which versions of Microsoft Windows you plan to support.
From the logs of this and other websites I manage, it is obvious that there are a wide variety operating systems in use. But, how can I, as a software developer, support software [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>On the deployment side of software development, one of the trickiest aspects is deciding which versions of Microsoft Windows you plan to support.</p>
<p>From the logs of this and other websites I manage, it is obvious that there are a wide variety operating systems in use. But, how can I, as a software developer, support software running on an operating system that itself is not supported?</p>
<p>I&#8217;d argue that you cannot&#8230;but that won&#8217;t stop customers expecting it anyway <img src='http://www.digitalbricklayer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>When Windows 2000 support is finally dropped, then there is just going to be XP, 2003 Server &amp; Vista to worry about. That doesn&#8217;t sound too bad until you realise that there are two XP versions (Home &amp; Professional) and, oh, loads of Vista versions.</p>
<p>As soon as you remove Windows 2000 from your support list then that opens up some nice new Microsoft technologies for you to work with like .NET 3.</p>
<p>Of course, the Windows 2000 support issue is likely to be less important for home users. Most business users are likely to be more sensitive to support issues than home users, they are also less likely to be sensitive to upgrade issues because of price pressures. Many medium/large Windows users will have the right to OS upgrades as a part of their broad Microsoft licences. So, upgrading from Windows 2000 to XP or above won&#8217;t require them to give Microsoft any more money.</p>
<p>My suspicion is that there are an awful lot of homes still running Windows 98, so if that is a part of your market then you&#8217;d better support it. That will then feed back into the types of development tools you can use.</p>
<p>So, you need to start from the deployment platforms and then choose the development tools not the other way around. Unless you want seperate products for legacy platforms and Microsoft supported platforms?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/deployment-platforms-first-development-tools-second/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manual free is the real productivity booster</title>
		<link>http://www.digitalbricklayer.com/manual-free-is-the-real-productivity-booster/</link>
		<comments>http://www.digitalbricklayer.com/manual-free-is-the-real-productivity-booster/#comments</comments>
		<pubDate>Tue, 27 Feb 2007 16:06:53 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/02/27/manual-free-is-the-real-productivity-booster/</guid>
		<description><![CDATA[Architecting IT systems is hard. Figuring out which technologies are worth investing your time and effort into is a complex process.
You&#8217;d think it would be a simple process of selecting the best tool for a particular job. Not really. Things are a little more complex than that.
Utilising a technology takes a lot of effort and [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Architecting IT systems is hard. Figuring out which technologies are worth investing your time and effort into is a complex process.</p>
<p>You&#8217;d think it would be a simple process of selecting the best tool for a particular job. Not really. Things are a little more complex than that.</p>
<p>Utilising a technology takes a lot of effort and expense. It takes a long time to become &#8220;<strong>manual free</strong>&#8220;. To stay manual free requires constant contact with the technology.</p>
<p>Therefore, if you utilise too many technologies you risk never being manual free.</p>
<p>Whatever the technology, the main productivity gains are to be had when the people using it are manual free. In other words, they can just get on with the job at hand without having to figure out too much about the underlying technology.</p>
<p>So, sometimes you have to decline to use technologies even though they may well theoretically be a more productive solution.</p>
<p>I&#8217;ve just had to make a decision like this myself. We need to re-work an area of our site. Add a database backend, add an admin section etc etc&#8230;all standard web requirements. What would be perfect for that? Well, Ruby on Rails sprung out to me as an obvious choice. I&#8217;m sure it would to a lot of other folks too.</p>
<p>So why did I decide against adopting it? The main problem is that I would never be manual free with it. I would struggle to solve my problem, never being really productive because I don&#8217;t know it well enough. Then, when I had done my makeover I might not touch the system again for six months. Any knowledge I had won would be lost to me. So, I&#8217;d be starting again wth those manuals <img src='http://www.digitalbricklayer.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Instead I am going to be using Java + Spring. Not as productive perhaps as Rails but at least I already have some investment in it. Our e-commerce system is already written in it so I will be using it on a continuous basis. So when I become manual free I will retain my knowledge better too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/manual-free-is-the-real-productivity-booster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unit testing discipline</title>
		<link>http://www.digitalbricklayer.com/unit-testing-discipline/</link>
		<comments>http://www.digitalbricklayer.com/unit-testing-discipline/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 12:22:25 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/02/09/unit-testing-discipline/</guid>
		<description><![CDATA[One of the hardest things when unit testing is retaining discipline. I have a nasty habit of refactoring code and then fixing something else that is completely unrelated to the job at hand. I find it really hard to stop tinkering.
What then happens? Well, your tests go red.  You then find yourself trying to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>One of the hardest things when <a href="http://en.wikipedia.org/wiki/Unit_test">unit testing</a> is retaining discipline. I have a nasty habit of <a href="http://en.wikipedia.org/wiki/Refactoring">refactoring code</a> and then fixing something else that is completely unrelated to the job at hand. I find it really hard to stop tinkering.</p>
<p>What then happens? Well, your tests go red.  You then find yourself trying to figure out whether the tests are failing because of your initial refactoring or your code tinkering.</p>
<p>One <a href="http://www.martinfowler.com/articles/continuousIntegration.html">potential remedy might be continous integration</a>. Perhaps, if every time I checked in changes and the system refused because of broken tests then maybe I&#8217;d be able to stop myself tinkering. Unfortunately, for now we are doing ActiveX components in ATL/C++. There is very little tool support for continuous integration in the Visual C++ world.</p>
<p>Role on .NET&#8230;we&#8217;ll be there soon <img src='http://www.digitalbricklayer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/unit-testing-discipline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugs unit testing won&#8217;t find</title>
		<link>http://www.digitalbricklayer.com/bugs-unit-testing-wont-find/</link>
		<comments>http://www.digitalbricklayer.com/bugs-unit-testing-wont-find/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 18:21:38 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/02/07/bugs-unit-testing-wont-find/</guid>
		<description><![CDATA[I found a bug today. Quite a biggie too. Not something that will happen everyday but nevertheless it will happen.
We are currently working on a software development kit for a range of temperature sensors we sell. We have a unit test suite with around 80 or so tests give or take. The tests cover what [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I found a bug today. Quite a biggie too. Not something that will happen everyday but nevertheless it will happen.</p>
<p>We are currently working on a software development kit for a range of temperature sensors we sell. We have a unit test suite with around 80 or so tests give or take. The tests cover what you&#8217;d probably expect. Read the sensor, make sure the values coming back are what you know should be coming back.</p>
<p>We created a mock sensor so we know precisely what should be coming back.</p>
<p>I was trawling through the code writing some more tests and it occured to me that I couldn&#8217;t see anything in the code that handled what would happen if the sensor&#8217;s owner randomly changed the default temperature units on the sensor. Now, that isn&#8217;t going to happen very much but it will happen and the code as it is will get it wrong.</p>
<p>So, I am going to have to write a test to cover this scenario. It will fail&#8230;and then I can fix it <img src='http://www.digitalbricklayer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>But the point is, no amount of unit testing + code coverage analysis would have caught this scenario. The code didn&#8217;t handle the scenario, therefore there is no code to cover so to speak.</p>
<p>In the end, it is still down to the designer/developer to properly analyse the problem and create a correct solution taking into account all of the boundary cases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/bugs-unit-testing-wont-find/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My developer testing gene</title>
		<link>http://www.digitalbricklayer.com/my-developer-testing-gene/</link>
		<comments>http://www.digitalbricklayer.com/my-developer-testing-gene/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 15:23:09 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/01/26/my-developer-testing-gene/</guid>
		<description><![CDATA[Read a great blog by Alberto Savoia about developer testing. Alberto discusses what the future of developer testing is likely to be. He suggests that the future of any developer testing may be in doubt. Which would be a shame.
Programmers are far too happy shipping sub-standard software. We need all of the tools at our [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Read a <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=192781">great blog by Alberto Savoia about developer testing</a>. Alberto discusses what the future of <a href="http://en.wikipedia.org/wiki/Unit_testing">developer testing</a> is likely to be. He suggests that the future of any developer testing may be in doubt. Which would be a shame.</p>
<p>Programmers are far too happy shipping sub-standard software. We need all of the tools at our disposal to increase quality. Developer testing through unit tests has got to be the best single task you can do to ensure software reliability. And the best thing by far is that you can keep running the tests whenever you make a change. So, your tests just keep paying back time and again.</p>
<p>Hard to see how you can argue against it&#8230;plainly many programmers do. Anyway, according to Alberto&#8217;s developer testing gene categorisation I am a T1: highly susceptible to test infection.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/my-developer-testing-gene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++: the noughties assembly language?</title>
		<link>http://www.digitalbricklayer.com/c-the-noughties-assembly-language/</link>
		<comments>http://www.digitalbricklayer.com/c-the-noughties-assembly-language/#comments</comments>
		<pubDate>Thu, 25 Jan 2007 17:06:42 +0000</pubDate>
		<dc:creator>JackH</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.digitalbricklayer.com/blog/2007/01/25/c-the-noughties-assembly-language/</guid>
		<description><![CDATA[Everybody seems to be using virtual machine based languages at the moment. And with good reason. Java and the .NET family of languages are certainly productivity enhancing, though not for the obvious reasons.
The main benefit from the new virtual machine based languages are that, relieved of the burden for deleting objects we are suddenly more [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Everybody seems to be using virtual machine based languages at the moment. And with good reason. Java and the .NET family of languages are certainly productivity enhancing, though not for the obvious reasons.</p>
<p>The main benefit from the new virtual machine based languages are that, relieved of the burden for deleting objects we are suddenly more productive. It&#8217;s not an argument I buy into. Not many people writing C++ get to delete their objects manually. A combination of the C++ Standard Library and Boost have seen to that.</p>
<p>The main benefit to me are the tool sets surrounding both Java and .NET. I&#8217;ve never seen a richer ecosystem of tools like IDEs, profilers, build systems, unit testers etc, especially supporting Java but .NET is catching up too.</p>
<p>What&#8217;s more, most of the tools are available for little or no cost. Most notably the wonderful Eclipse IDE.<br />
C++ doesn&#8217;t have a broad ecosystem of tools. Performing unit testing and continuous integration with C++ is arduous. Most programmers don&#8217;t bother.</p>
<p>It is a pitty, C++ has a lot of strengths. I love writing it&#8230;though I suspect that may be a minority opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalbricklayer.com/c-the-noughties-assembly-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
