<?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>Jason Jacques &#124; Blog</title>
	<atom:link href="http://blog.homedsl.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.homedsl.co.uk</link>
	<description>... dreams in code</description>
	<lastBuildDate>Sun, 30 Oct 2011 00:24:08 +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>A Web of Memories</title>
		<link>http://blog.homedsl.co.uk/2011/10/a-web-of-memories/</link>
		<comments>http://blog.homedsl.co.uk/2011/10/a-web-of-memories/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 10:41:59 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Exams]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=301</guid>
		<description><![CDATA[The near ubiquitous web, even in it&#8217;s basic form, provides a vast interconnected mesh of facts, thoughts and ideas such that there is almost never a question where the answer is not at our finger tips, but can our education system, and the world, keep up with such a radical new way of thinking and [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>The near ubiquitous web, even in it&#8217;s basic form, provides a vast interconnected mesh of facts, thoughts and ideas such that there is almost never a question where the answer is not at our finger tips, but can our education system, and the world, keep up with such a radical new way of thinking and learning?</strong></p>
<p>With the ever increasing ubiquity of the internet, carried wherever you might want it on your laptop, tablet or smart phone means that you now have constant access to a stream of information about almost anything. <a href="http://www.imdb.com/">Who&#8217;s that actor</a>? <a href="http://www.shazam.com/">What&#8217;s that song</a>? <a href="http://www.google.com/search?q=what+is+the+speed+of+light">What is the speed of light</a>? <a href="http://en.wikipedia.org/wiki/Wolfgang_Amadeus_Mozart">When was Mozart born</a>? Two or three taps on your device of choice and you have the answer, anywhere, any time.</p>
<div class="separator" style="clear: both; text-align: center;"><a style="clear: right; float: right; margin-bottom: 1em; margin-left: 2em;" href="http://decrypt3d.blogspot.com/2011/06/internet-addiction-make-brain-shrinking.html"><img style="border-style: initial; border-color: initial; border-width: 0px;" src="http://4.bp.blogspot.com/_cKYt3Bf4w1k/TMqq6lAZ3oI/AAAAAAAAAFs/hfy9qlF24-U/s320/Nice_brain_pic.jpg" alt="" width="224" height="182" border="0" /></a></div>
<p>If you can have the answer to anything at your fingertips, instantly, where is the value of memorising untold quantities of facts, figures, formula and processes? More and more the human condition is being stored in a digital enclave, thoughts and feelings, facts and figures, all safely stored for later retrieval away from our fragile collection of flesh and bone.</p>
<p>Those in accademia have long accepted that learning to do things repeatably and accurately by rote has become less and less valuable, this is highlighted no better than manufacturing. Once the great engine of the British industrial age, manufacturing has withered away as such tasks have been moved to areas with suplus labour, and hence lower wages, such as China. Even the precision or artistry of an engineer or craftsman has been largely replaced by mechanised alternatives who work tirelessly without mistakes. So what of our studies?</p>
<p>One might argue that even at the university level much of what is required is nothing more than creative plagiarism and rote regurgitation. Take Brunel University&#8217;s CS3010 where the students are tasked with filling a wiki with social web concepts. Here much of the work required is simply ripping off the appropriate articles from Wikipedia and not getting caught. A task that could no doubt be accomplished algorithmically with a little thought, replacing the students with nothing more than <a href="http://www.urbandictionary.com/define.php?term=go%20away%20or%20I%20will%20replace%20you%20with%20a%20simple%20shell%20script">a small shell script</a>.</p>
<p>And here in lies the answer. It is the creation of such an algorithm, such a script, which requires thought, understanding and presence of mind. It could be argued that universities already assess understanding of concepts and ability to apply concepts in their testing, but ever so frequently this is entirely dependant on rote learning of an underlying thought. For example, imagine a question like so: &#8220;Apply a WBS to the following case study.&#8221; Here we are undeniably testing the ability to apply concepts, but without the rote learning of how to do such a process, or even what <a href="http://en.wikipedia.org/wiki/Work_breakdown_structure">WBS</a> is, you have little hope of attaining any grade.</p>
<p>The fragile existence of human beings lends itself to offloading as much as possible into this backing store, a cloud brain, that can be accessed at will without burdening our main cognitive processing abilities, but at what point do we stop such progression and how do we determine fact from fiction and who has what abilities as we move on from the Information Age, where information is currency, to an era where information is ubiquitous and truly free?</p>
<div class="shr-publisher-301"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2011/10/a-web-of-memories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In honour of the Dancing Kame</title>
		<link>http://blog.homedsl.co.uk/2011/06/in-honour-of-the-dancing-kame/</link>
		<comments>http://blog.homedsl.co.uk/2011/06/in-honour-of-the-dancing-kame/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 09:36:13 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Idle]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[IPv4]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Kame]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=297</guid>
		<description><![CDATA[With world IPv6 day growing ever closer I have made a small change to my logo. For those of you viewing the site over v4 connection you&#8217;ll see the new low-res imagery, but if you&#8217;re using a v6 connection (and your operating system is correctly prioritising it), then you&#8217;ll see the slick glossy one you&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>With world IPv6 day growing ever closer I have made a small change to my logo. For those of you viewing the site over v4 connection you&#8217;ll see the new low-res imagery, but if you&#8217;re using a v6 connection (and your operating system is correctly prioritising it), then you&#8217;ll see the slick glossy one you&#8217;d normally see.</p>
<p>I&#8217;ll keep this logo until at least the end of the month and for those of you on v6 connections who want to see what the v4 variation looks like you can check it out <a href="http://jason.homedsl.co.uk/portfolio/images/jason-glossy.png/jason-glossy-v4.png">here</a>.</p>
<p><a href="http://www.kame.net/"><img class="aligncenter" title="Kame!" src="http://www.kame.net/img/kame-noanime-small.gif" alt="" width="124" height="100" /></a></p>
<div class="shr-publisher-297"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2011/06/in-honour-of-the-dancing-kame/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>World IPv6 day, are you ready?</title>
		<link>http://blog.homedsl.co.uk/2011/05/world-ipv6-day-are-you-ready/</link>
		<comments>http://blog.homedsl.co.uk/2011/05/world-ipv6-day-are-you-ready/#comments</comments>
		<pubDate>Sun, 15 May 2011 12:35:28 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[IPv4]]></category>
		<category><![CDATA[IPv6]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=287</guid>
		<description><![CDATA[World IPv6 day is coming, if you&#8217;ve not already experimented with IPv6 now is the time to try it out. So, global networking is on the cusp of a big change. IPv4 addresses are already getting quite scarce and ISPs are being allocated v6 addresses with every request &#8212; whether they want them or not [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>World IPv6 day is coming, if you&#8217;ve not already experimented with IPv6 now is the time to try it out.</strong><a href="http://isoc.org/wp/worldipv6day/"><img class=" alignright" style="margin: -40px;" title="World IPv6 Day Logo" src="http://isoc.org/wp/worldipv6day/files/2011/05/IPv6-badge-blue-256-trans.png" alt="World IPv6 Day Logo" width="256" height="256" /></a></p>
<p><span>So, global networking is on the cusp of a big change. IPv4 addresses are already getting quite scarce and ISPs are being allocated v6 addresses with every request &#8212; whether they want them or not &#8212; in an attempt to increase adoption of the new standard. At some point soon new users will be unable to get a v4 address and that means they won&#8217;t be able to connect to your site or service. With less than one month remaining until <a href="http://isoc.org/wp/worldipv6day/">World IPv6 Day</a>, a global test if IPv6 infrastructure and the effect on end users, it&#8217;s time to try out v6 connectivity for yourself.</span></p>
<p>Many large organisations including <a href="http://ipv6.google.com/">Google</a>, <a href="http://www.v6.facebook.com/">Facebook</a>, Yahoo and Microsoft will be taking part and enabling IPv6 DNS records on their websites, which means that, should you have IPv6 connectivity, you&#8217;ll be connecting via the new-fangled protocol. But what about users who don&#8217;t have IPv6 connectivity? Well, for the most part they&#8217;ll happily continue to connect via IPv4. There may be a few instances where a bad configuration, such as the computer thinking it has IPv6 connectivity when it does not, that could result in slow or no access to the sites, but finding out who is affected is part of this global networking experiment. Fortunately ARIN has a <a href="http://www.getipv6.info/index.php/Customer_problems_that_could_occur">comprehensive wiki</a> covering many of these potential issues.</p>
<p>If you want to test your IPv6 connectivity there are a number of sites which will break this down for you such as <a href="http://ipv6-test.com/">ipv6-test.com</a> and for the more technically inclined <a href="http://test-ipv6.com/">test-ipv6.com</a> or simply visit one of the IPv6 demonstration pages set up by <a href="http://ipv6.google.com/">Google</a> or <a href="http://www.v6.facebook.com/">Facebook</a>. Note that the latter two will only work if you already have an IPv6 connection.</p>
<p>Should you not have IPv6 connectivity already, and most users don&#8217;t, it&#8217;s easy to get setup with providers such as <a href="http://tunnelbroker.net/">Hurricane Electric</a> who provide a free tunnel service. Once set-up your IPv6 traffic goes through the tunnel to one of Hurricane Electric&#8217;s many points of presence and out onto the wider v6 Internet. I&#8217;ve been using this service to provide IPv6 connectivity to my home network since February and am extremely pleased with both the stability and speed. In addition Hurricane Electric provides DNS services which have been invaluable to getting me fully IPv6 ready.</p>
<p>Hurricane Electrics service also includes some fantastic training material with their v6 certification and has an enthusiastic forum where your questions can be answered by knowledgable users and involved staff, and keeping up with IPv6 news is equally easy with their regular <a href="http://www.youtube.com/hurricaneelectric">web casts</a>.</p>
<p>With the availability of fast, free connectivity there really is no excuse not to give IPv6 a go, both at home and crucially in your organisation.</p>
<div class="shr-publisher-287"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2011/05/world-ipv6-day-are-you-ready/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This Code is Such a Brainf*ck &#8212; No, Really!</title>
		<link>http://blog.homedsl.co.uk/2010/06/this-code-is-such-a-brainf-ck/</link>
		<comments>http://blog.homedsl.co.uk/2010/06/this-code-is-such-a-brainf-ck/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 15:22:37 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Esolang]]></category>
		<category><![CDATA[Code Abuse]]></category>
		<category><![CDATA[Code Sample]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=247</guid>
		<description><![CDATA[While languages such as Brainf*ck and the more kid-friendly Ook! (in name only) are generally left to the realm of toys and bragging rights, their real beauty is having an extremely simple turing complete interactive environment in which to learn underlying computer science concepts. Engineers like to do things differently, and nothing demonstrates this more [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>While languages such as </strong><a href="http://www.muppetlabs.com/~breadbox/bf/"><strong>Brainf*ck</strong></a><strong> and the more kid-friendly </strong><strong><a href="http://www.dangermouse.net/esoteric/ook.html">Ook</a></strong><strong><a href="http://www.dangermouse.net/esoteric/ook.html">!</a></strong><strong> (in name only) are generally left to the realm of toys and bragging rights, their real beauty is having an extremely simple turing complete interactive environment in which to learn underlying computer science concepts.</strong></p>
<p>Engineers like to do things differently, and nothing demonstrates this more than the <a href="http://esolangs.org/wiki/Language_list">plethora of esoteric programming languages available</a>. Usually relegated to research projects of debatable value, toys and bragging rights the ability to strip back to the bare metal of the computer hardware, of even an emulation thereof, can be of huge educational value for the legion of high level software developers who have no understanding on exactly a pixel is actually rendered on a screen.</p>
<p>For example, a code sample in the unfortunately named <a href="http://www.muppetlabs.com/~breadbox/bf/">Brainf*ck</a>.</p>
<pre class="prettyprint">++++++++++        // Set first cell (counter) to 10
[
        &gt;         // Move to next cell (output)
        +         // Increase value of current cell
        .         // Display value of current cell
        &lt;         // Move to previous cell (counter)
        -         // Decrease value of current cell
]</pre>
<p>The above commented code simply displays the value 1 to 10 on the output. A few things to note:</p>
<ol>
<li>Memory cells can be used for any purpose, their use as described in the above comments, is to aid in understanding only.</li>
<li>Code blocks (defined by &#8216;[' and ']&#8216;) continue to execute while the current memory cell is greater than zero.</li>
<li>Brainf*ck compilers/interpreters typically display output as ASCII symbols, so running this program will not display actual characters.</li>
<li>Seven of the eight available operations, with the exception of <em>read value to current cell</em> indicated by a comma (&#8216;,&#8217;), are represented in the example program.</li>
<li>Layout, whitespace and unknown characters are (or at least should be) ignored.</li>
</ol>
<p>The program can be executed with <a href="http://koti.mbnet.fi/villes/php/bf.php">an online interpreter</a>. To see the output rendered in a human readable form you will need to use <em>debug-mode</em> as the ASCII symbols for number 1 to 10 are control characters and do not normally display anything on screen.</p>
<p>Using only eight instructions with an implicit operand makes this an excellent model for understanding memory allocation and for thinking about how these operations can be completed at the basic level. The use of ASCII output highlights the relation between the decimal value of a memory cell and it&#8217;s on screen representation. Parallels can also be drawn with assembly language programming. The highly reduced instruction set, again, coupled with implicit operands and pointer, provides a deeper insight to how a modern microprocessor might carry out instructions and introduces the thought processes required to understand memory addressing and operations.</p>
<p>While such and intricate understanding of the underlying implementation details of computer hardware is arguably not essential, and as such only peripherally taught in many modern degree level computer science course, esoteric programming languages such as Brainf*ck can help developers understand these underlying concepts of the digital computer by giving them an interactive path for investigation and have the potential to bring about a more enlightened, openminded and flexible developer workforce if their educational value is properly exploited &#8212; despite some rather institution unfriendly names.</p>
<div class="shr-publisher-247"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2010/06/this-code-is-such-a-brainf-ck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going Loopy with Loops</title>
		<link>http://blog.homedsl.co.uk/2010/05/going-loopy-with-loops/</link>
		<comments>http://blog.homedsl.co.uk/2010/05/going-loopy-with-loops/#comments</comments>
		<pubDate>Sat, 22 May 2010 18:59:47 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Code Abuse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Pi]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=230</guid>
		<description><![CDATA[Reinventing the wheel can often give a deeper understanding of the problem and highlight some of the esoteric features of your chosen programming language &#8212; however, remember to go back to using the standard method and style in your production code! I like loops, they are predictable, reliable and relatively easy to understand. For many [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>Reinventing the wheel can often give a deeper understanding of the problem and highlight some of the esoteric features of your chosen programming language &#8212; however, remember to go back to using the standard method and style in your production code!</strong></p>
<p>I like loops, they are predictable, reliable and relatively easy to understand. For many common algorithms there are much more efficient ways of computing the solution, however loops often provide an easy to understand approach to getting to the right answer &#8212; eventually.</p>
<p>Recently, when demonstrating looping constructs to a beginner I provided the following three examples which spit out 1 to 10 on the terminal.</p>
<pre class="prettyprint">// Traditional
for(int i = 1; i &lt;= 10; i++) {
    System.out.println(i);
}

// Unorthodox
int i = 0;
while(i &lt; 10) {
    System.out.println(i+1);
    i = i + 1;
}

// Too smart for own good
for(int i = 0; i &lt; 10; System.out.println(++i));</pre>
<p>Each sample was slightly more complex, conceptually, than the next. The final sample demonstrating how the <em>for </em>could be abused to show the desired output on only one correctly formatted line. In it we use <a href="/2010/04/dreams-in-code-snippet/">my favourite pre-increment operator</a> to push the the 0 up to 1 <em>before</em> we output the number to the display. Of course we could have used 1 and 11 as our bound with the post-increment operator, but any sane programmer would agree that <a href="http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html">numbering should start at zero</a>.</p>
<p>Extending the code abuse further, while browsing over at Stack Overflow I discovered that <a href="http://stackoverflow.com/questions/2888558/java-what-is-for"><em>while</em> is largely redundant</a>, if you are happy to abuse <em>for</em> some more. Turns out that <em>for</em>, as typically defined, assumes the test condition to be <em>true</em> when omitted and all three sections of the for statement are in fact optional. As one of the moderators put it:</p>
<blockquote><p>This answer pretty much proves the awesomeness of the &#8220;No question is too simple&#8221; policy. <img src='http://blog.homedsl.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8212; Bill the Lizard</p></blockquote>
<p>Likewise, while browsing an <a href="http://thedailywtf.com/Articles/Sticking-to-the-Method.aspx">interesting article on The Daily WTF</a> which highlights a simple method for square root calculation my muse overcame me. The article makes it quite clear that such iterative approximations are not highly regarded (<a href="http://en.wikipedia.org/wiki/Fast_inverse_square_root">unless you are John Carmack</a>), however, it reminded me of a <a href="http://jason.homedsl.co.uk/projects/pi/">simple <em>pi</em> calculator</a> that I wrote using JavaScript a number years ago when similarly inspired.</p>
<p>Armed with new knowledge about the abuse of <em>for</em> and an entirely redundant algorithm to code I set about developing a square root function.</p>
<pre class="prettyprint">double sqrt(double n) {
    for(double r = 1; r != n; n = r == (r = 0.5 * (r + (n &lt; 0 ? -n : n) / r)) ? r : n);
    return n;
}</pre>
<p>There are so many things wrong with this I&#8217;m not sure where to start. How about the blatant abuse of the parameter <em>n</em> as both the input and output, simply to avoid declaring another variable? This requires the <em>break</em> condition to determine whether the usually untouched <em>n</em> contains the currently calculated value of the result.</p>
<p>The final chunk of code actually does the calculation of the square root while deterministically assigning the value to <em>n</em> to terminate the loop and return the result. The calculation itself is relatively simple: is the average of our calculated root, <em>r</em>, and <em>n</em> / <em>r</em> equal to the previous value of <em>r</em>? If not, further refine <em>r</em> in the same way.</p>
<pre class="prettyprint">r == ( 0.5 * ( r + n / r ) )</pre>
<p>The calculation, as implemented in my <em>sqrt()</em> function, is complicated somewhat by the embedded assignment of the new value to <em>r</em>, the poor-mans error handling of negative numbers (who wants to deal with <a href="http://en.wikipedia.org/wiki/Square_root#Square_roots_of_negative_and_complex_numbers"><em>imaginary</em> numbers</a> anyway?) and the inline <em>if</em> used to assign the final value to <em>n</em>.</p>
<p>Of course, we could always use the built in Java <em>Math.sqrt()</em> method which efficiently passes the calculation off to the hardware, but where&#8217;s the fun in that!?</p>
<div class="shr-publisher-230"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2010/05/going-loopy-with-loops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Future of Software Development</title>
		<link>http://blog.homedsl.co.uk/2010/05/the-future-of-software-development/</link>
		<comments>http://blog.homedsl.co.uk/2010/05/the-future-of-software-development/#comments</comments>
		<pubDate>Tue, 11 May 2010 22:13:52 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Small Basic]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=191</guid>
		<description><![CDATA[The future of software development is not found in a language, technology or technique but dependant on having a critical mass of educated individuals who apply themselves to the discipline. I like to romanticise the history of computer science, the days where everything you could possibly need to know about a computer was printed in [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>The future of software development is not found in a language, technology or technique but dependant on having a critical mass of educated individuals who apply themselves to the discipline.</strong></p>
<p>I like to romanticise the history of computer science, the days where everything you could possibly need to know about a computer was printed in the included manual, from the schematic from which it was built right up to user guides explaining how to use the included software, if any. I envy those were lucky enough to be there when computers first became affordable to the general populous and they could know <em>everything</em> there was to know about the machine they had purchased.</p>
<p>As times marched on and graphical user interfaces became the norm, abstracting users from the tangled mess of syntax familiar to those using the command line, and I was born. Microsoft <a href="http://en.wikipedia.org/wiki/Windows_2.0">Windows 2.0</a> was just about to roll off the production line and Apple was introducing multitasking into their operating system, <a href="http://en.wikipedia.org/wiki/Mac_OS_history#System_Software_5">System 5</a>, for the <a href="http://en.wikipedia.org/wiki/Macintosh_SE">Macintosh SE</a> and <a href="http://en.wikipedia.org/wiki/Macintosh_II">Macintosh II</a>. Both companies laying the foundation for the computers people know and love (or hate) today.</p>
<p>Here in the UK, the government had been focusing of the computer literacy for around 5 years and a series of BBC programmes introduced the population to software development on the <a href="http://en.wikipedia.org/wiki/BBC_Micro">BBC Micro</a> which was available, due to government grants, in every school and in high street retailers across the land. While I was a little late to this party, a suite of these machines were available for my use in the school computer lab and I cut my teeth on <a href="http://en.wikipedia.org/wiki/BBC_BASIC">BASIC</a> while everyone else was drawn to the pretty pictures available on the successor computers running the graphical operating system <a href="http://en.wikipedia.org/wiki/RISC_OS">RISC OS</a>.</p>
<p>There are no such drives today. While there are some <a href="http://www.telegraph.co.uk/news/election-2010/party-policy/7299827/Technology-policy-and-Digital-Britain-General-Election-2010.html">general technology policies</a> for a so called &#8216;Digital Britain&#8217; concerning itself with accessible broadband and access to information there is little in the way of encouraging youth to look at computers as anything other than social entertainment devices. While I applaud the efforts of companies such as Apple to create &#8216;technology for the rest of us&#8217; the increasingly limited access to the hardware will no doubt negatively affect the skill of the software developers of the future.</p>
<p>As computer science as a whole progresses so does it&#8217;s development tools. What was once a simple power-on prompt where the words</p>
<pre class="prettyprint">PRINT "Hello, World!"</pre>
<p>would elegantly demonstrate the innate power and infinite control of the machine avaliable, users are now instead presented with ostensibly easy-to-use, but exceedingly imposing and complex environments each with their own preferred conventions in which to work. Scripting languages like <a href="http://python.org">Python</a> rekindle this spirit but at the expense of  being totally incongruent with the interfaces to which users have become accustom.</p>
<p>One area in which Microsoft should be commended is their continued high quality support of software developers. Not only does Microsoft have a comprehensive <a href="http://www.microsoft.com/mspress/">press</a> for their extensive library of developer references but provides high quality, accessible, and often free, <a href="http://www.microsoft.com/express/">tools</a> and <a href="http://msdn.microsoft.com/">resources</a>. Microsoft actively target potential developers with their <a href="http://msdn.microsoft.com/en-us/beginner/">Beginner Developer Learning Center</a> and specifically <a href="http://msdn.microsoft.com/en-us/beginner/bb308754.aspx">Kids Corner</a> and <a href="http://smallbasic.com/">Small Basic</a>.</p>
<p style="text-align: center;"><a href="http://blog.homedsl.co.uk/wp-content/uploads/2010/05/small-basic-asteroids.png"><img class="aligncenter size-full wp-image-196" title="small-basic-asteroids" src="http://blog.homedsl.co.uk/wp-content/uploads/2010/05/small-basic-asteroids.png" alt="" width="469" height="347" /></a></p>
<p>Microsoft, here, dare to fail. Small Basic is <strong>not</strong> a finished product. It has it&#8217;s flaws. The hodge-podge of objects and parameterless sub-routines makes Small Basic a little confusing for new and experienced developers alike, but in a spirit of openness the lead author has ensured solid interaction with a community of developers resulting in gradual improvement to the fledgling product. It is, no doubt, a great effort in making computing, the way I want to remember it, accessible again. While I can understand efforts like <a href="http://www.alice.org/">Alice</a> and <a href="http://scratch.mit.edu/">Scratch</a>, essentially the Lego of programming, their relation to &#8216;real world&#8217; development is questionable at best. In holding this view I have to question Microsoft&#8217;s own choice and the value of yet <em>another</em> (intentionally hobbled) language, but here the &#8216;Graduate&#8217; functionality is standing by for those ready to move on.</p>
<p>Without drives like Microsoft&#8217;s to bring development tools, most crucially at an appropriate level, to the masses students will continue to confuse computer science with &#8216;IT&#8217;. As the potential of those who, had they been able to overcome the initial hurdles of development, would have gone on to create great software is wasted the true power of technology will be limited to a smaller and smaller elite who were lucky enough to have been exposed to development in the right way and at the right time. While technological dictatorship certainly has its benefits, democratisation, the freedom of knowledge and open participation is the driving force behind the computer revolution of today.</p>
<div class="shr-publisher-191"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2010/05/the-future-of-software-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thoughts on Computer Science Education</title>
		<link>http://blog.homedsl.co.uk/2010/05/thoughts-on-cs-education/</link>
		<comments>http://blog.homedsl.co.uk/2010/05/thoughts-on-cs-education/#comments</comments>
		<pubDate>Sat, 01 May 2010 10:20:44 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[BlueJ]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Exams]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[University]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=121</guid>
		<description><![CDATA[While the old adage &#8220;Computer science is no more about computers than astronomy is about telescopes.&#8221; is often brought to bear, I often have to ask &#8220;But how else is one supposed to chart the heavens?&#8221;. Throughout my time at school, college and university I have been passionate about the standard of the education provided [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>While the old adage &#8220;Computer science is no more about computers than astronomy is about telescopes.&#8221; is often brought to bear, I often have to ask &#8220;But how else is one supposed to chart the heavens?&#8221;.</strong></p>
<p>Throughout my time at school, college and university I have been passionate about the standard of the education provided to not only myself, but my fellow students as well. At many stages I&#8217;ve wondered, could I do a better job and teaching has always been something I would consider doing given the opportunity.</p>
<p>While I&#8217;m not an &#8216;activist&#8217; student or even one who would voluntarily join the popularity contest which masquerades as a student parliament, or whatever the institution in question happens to call it (no, I&#8217;m not bitter, I&#8217;ve never run), I do try take an active role in shaping my learning experience.</p>
<p>Back in 2006 Jeff Atwood of <a href="http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html">Coding Horror</a> wrote an interesting piece regarding the teaching of programming to computer science students. In <a href="http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf">the paper to which he refers</a> the authors, for the most part, write off a large proportion of students and their ability to <strong>ever</strong> learn the skills required. However, the paper does have some interesting points, such as the following footnote.</p>
<blockquote><p>Nowadays in the UK one has to say that they <em>ought</em> to fail, but because of misguided Quality Assurance procedures and the efforts of colleagues who doggedly believe in the normal curve, very many of them are mistakenly and cruelly ‘progressed’ into following courses. That process so far degrades the quality of their education and the reputation of computer science as an academic discipline as to be of burning commercial, professional and intellectual importance, but in this paper it must be by the by.</p></blockquote>
<p>This somewhat struck a chord. Whenever big programming projects are due and I&#8217;ve got time to spare I make myself available to my peers and even in our second year I find students who are still unsure of the correct placement of semicolons in their Java code. Was it fair &#8212; to them &#8212; that they were progressed into the second year?</p>
<h2>Testing What You Teach</h2>
<p>In December 2008, the first year of my computer science course, the class was given a 1 hour, open-book programming test. The failure rate was astronomical and, if I recall the figures correctly, one of the lecturers informed us that of the first 50 projects he attempted to run from his test harness none of them compiled, let alone ran &#8212; at which point he gave up and began grading manually. The test was actually relatively simple, manipulating our numeric student ID in various ways and displaying the results on the terminal; the threshold for a pass was simpler still: anything that compiled, regardless of if you attempted to answer any questions. At this point it is probably prudent to note that IDE (if you can call it that) which we were using at the time was <a href="http://www.bluej.org/">BlueJ</a> and as you may imagine new projects compiled by default.</p>
<p>Regardless of the perceptual ease of this assignment I wrote a 2500 word essay on all the things wrong with the exam, including an alternative question set which I felt was more appropriate and focused on the objects first teaching style to which we had been exposed rather than the mathematically heavy string and integer manipulation. I felt that while students likely grasped Java to a reasonable standard, it was likely that the totally left-field questions and the untaught functional style required to answer the questions was the root of the problem, but the problems ran much deeper than that.</p>
<h2>Syntactical Challenges</h2>
<p>During the exam season in the following May we were given a written exam for the same class. While I don&#8217;t have a copy of the exam paper (the ethics of which are moot as first year students now take <a href="http://python.org/">Python</a> as part of a fully re-designed module instead) I have prepared an example question from the paper as it was presented:</p>
<p><span style="font-family: Georgia, Times New Roma, serif; font-size: 125%;">5. Why does the following Java code fail to compile? (1 mark)</span><br />
<a style="text-decoration: none;" href="http://blog.homedsl.co.uk/wp-content/uploads/2010/04/example-programming-question.png"><img class="aligncenter size-full wp-image-127" style="margin-bottom: -2.5em;" title="Example Programming Question" src="http://blog.homedsl.co.uk/wp-content/uploads/2010/04/example-programming-question.png" alt="" width="514" height="406" /></a></p>
<p>The astute among you may notice the error message at the bottom of the editor and the associated yellow highlight on the relevant line of code which in no uncertain terms explains why the code, does indeed, fail to compile. Yes, the answer to the exam question was in plain text in the question itself. When I asked students about this after the exam none of those I spoke to claimed to have noticed this and many professed that they did not answer the question at all. In light of this revelation my 6 page rant at the teaching staff regarding functional vs. object-oriented programming styles seemed rather redundant.</p>
<p>Despite this, which was said to have been an essential and doubly weighted module, it appears very few students were not progressed through to the second year.</p>
<h2>Building a Team Environment</h2>
<p>Our second year programming assignment was done as a group project and as such I expected there to be appropriate collaboration tools at our disposal, I was sorely disappointed. Each of my repeated request for collaboration tools to be made available were summarily turned down. Despite independent research into appropriate collaborative solutions being a requirement of the module, support from the teaching staff was noticeably lacking and no mention of the options available was made.</p>
<p>When I made both a <a href="http://trac.edgewall.org/">Trac</a> and <a href="http://subversion.apache.org/">Subversion (SVN)</a> server available for my group to use they were clearly in awe and immediately saw the huge potential over passing .zip files of code back and fourth as most (if not all) of the other groups were forced to do. Of course, this configuration was neither sanctioned nor easy as I had to setup each of my group members with pre-compiled binaries of subversion and have them take up a fair percentage of the allocated storage on their mapped network drive.</p>
<p>In addition, despite being told we would have total control over the database schema for the project the entire class was given a single login to a single, poorly designed database on the provided database server. As you can imagine the database was quickly reduced to meaningless gibberish as around 150 students hammered away at it with different perceptions of what where appropriate values for each field with their buggy code. Here I was not alone in setting up my own database for the project for our software to use, insulating us from the chaos and allowing some subtle re-engineering to simplify development.</p>
<h2>Solving Problems</h2>
<p>The ability to work so closely with a group of inexperienced developers allowed me to note another interesting conundrum. Some students just don&#8217;t know how to tackle a problem programmatically. For example, I gave the following code snippet to a student in my group who was having trouble getting started.</p>
<pre class="prettyprint">public ArrayList&lt;Donor&gt; name(String name) {
    ArrayList donors = new ArrayList();

    // Get an iterable list of all Donors
    Donors allDonors = new Donors();

    // TODO: Search for [name] in each donors' name
    //         - Add matching donors to [donors] list

    return donors;
}</pre>
<p>Where Donors is a fully documented and conveniently packaged database access class representing all rows in the donor table (unless constructed otherwise) as simple data-bearing Donor objects, and inherits from the familiar and iterable ArrayList.</p>
<p>40 minutes later no progress had been made. Straight forward enough you may think, but still you have to give each student their due, this still doesn&#8217;t solve the problem &#8212; and maybe it is not obvious to everyone what to do now. Despite the clue in the return type, initially the student believed that the method should return the name of the user who was being searched for until we discussed the limited value in this response as we <em>already</em> knew the name of the person we were looking for. I prompted the student still further by asking</p>
<blockquote><p>What would you do if I gave you the list on paper?</p></blockquote>
<p>We discussed the repetitive task of going down the list, checking to see if the name matched and the proceeding to copy the donors&#8217; details to another sheet of paper if the search term matched before drafting the following solution together.</p>
<pre class="prettyprint">public ArrayList&lt;Donor&gt; name(String name) {
    ArrayList donors = new ArrayList();

    // Get an iterable list of all Donors
    Donors allDonors = new Donors();

    for (Donor d : allDonors) {
        if (d.getName().toLowerCase().contains(name.toLowerCase())) {
            donors.add(d);
        }
    }

    return donors;
}</pre>
<p>A totally workable iterative solution. Gets a little hairy with those nested statements in the <em>if</em> as we do the search, but nothing ground breaking or ridiculously complex. Next I asked the student to fill out the following method body to search on the address.</p>
<pre class="prettyprint">public ArrayList&lt;Donor&gt; address(String address) {
    ArrayList donors = new ArrayList();

    // Get an iterable list of all Donors
    Donors allDonors = new Donors();

    // TODO: Search for [address] in each donors' address
    //         - Add matching donors to [donors] list

    return donors;
}</pre>
<p>The stark similarity should have been obvious, but they simply had no idea of where to start. After showing them some copy-&#8217;n'-paste coding we had a working solution in seconds. It wasn&#8217;t until I was explaining the most basic of algorithm designs and demonstrating the flexibility and, in many ways, the purpose of using an object oriented design methodology had I realised that problems that students were facing.</p>
<p>In reviewing the final and submitted code for this article, I noted the following comment had been added to the return statement of the address search method.</p>
<pre class="prettyprint">    return donors; // returns the address of the donor</pre>
<p>My heart sank. I thought we had this concept nailed down.</p>
<h2>Timing, it&#8217;s of the Essence</h2>
<p>Over the course of the class the teaching staff slowly dolled out the required materials, unnecessarily slowing the development of our projects and, as I noted before, when it came to version control and collaboration tools, none were provided. To add insult to injury the week before the project was due the class was finally given a lecture on design patterns &#8212; specifically MVC &#8212; and it was suggested that we use it in our project. It was a little late to ask for the class to re-engineer their projects.</p>
<p>The nature of group projects also allowed a number of students to avoid work, either by being uncooperative or simply ignoring emails and not turning up. A number of groups were half the specified size by the time the project was due. My own experience of this was one student who finally showed up the day before the project was due. It was a real shame as he understood the projects, just didn&#8217;t want to do any work. Together we rushed out some thing workable for his assigned part of the project and left it at that.</p>
<h2>Setting the Standard</h2>
<p>While results for the module have yet to be announce the class was informed that code that met the given criteria was not expected and projects which failed to work could still easily result in a pass for the module. While the nature of group projects does require some understanding from those who grade them to allow for students who are either well in advance or below that of their peers the idea that a group software engineering project which does not come close to working as an integrated whole garnering a pass mark shocked me somewhat.</p>
<p>Of course, I have myself benefitted from this arrangement. Our project is by no stretch of the imagination &#8220;complete&#8221;, however it does have some basic functionality. Had our group not had to fight the system to get collaborative tools maybe we would have been able to spend more time actually getting some work done &#8212; and maybe the other groups would have had the chance to get something working at all.</p>
<h2>Conclusions</h2>
<p>You might wonder why I would publicly criticise my university education? Well, for starters the university itself has already acknowledged the issues in my course by opting to re-engineer it from the ground up for the 2009-2010 intake of students. It also seems that my experience is not unique with supporting research from other institutions publicly available. I also believe in acting on issues and I made a point, maybe to the teaching staffs&#8217; dismay, of raising my issues both with them and, as appropriate, our head of year.</p>
<p>I still truly believe that, despite the research mentioned in the paper, everyone <em>can</em> learn to program, at least to a basic level. I think for most students I have spoken to, they <em>want</em> to learn.  It seems the issue is one of breaking down a problem into manageable chunks, finding where to look for solutions and maybe most importantly learning how to <a href="http://en.wikipedia.org/wiki/RTFM">RTFM</a>.</p>
<div class="shr-publisher-121"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2010/05/thoughts-on-cs-education/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreams in Code Snippet</title>
		<link>http://blog.homedsl.co.uk/2010/04/dreams-in-code-snippet/</link>
		<comments>http://blog.homedsl.co.uk/2010/04/dreams-in-code-snippet/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 13:35:47 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Photoshop]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=98</guid>
		<description><![CDATA[A quick overview of my development of the code snippet used in the blog byline. Looking for a simple graphic to add to the site byline I elected to use some C-type code, being my most familiar dialect, and being a Mac user, the Monaco typeface in an appropriately anti-aliased size. Now I&#8217;d set out [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignright" title="int sleep(int z) { return ++z; }" src="/wp-content/themes/dropshadow-2column/images/dream-code.png" alt="" width="96" height="48" /><strong>A quick overview of my development of the code snippet used in the blog byline.<br />
</strong></p>
<p>Looking for a simple graphic to add to the site byline I elected to use some C-type code, being my most familiar dialect, and being a Mac user, the <a title="Monaco Typeface" href="http://en.wikipedia.org/wiki/Monaco_(typeface)">Monaco</a> typeface in an appropriately anti-aliased size.</p>
<p>Now I&#8217;d set out some basic requirements, the question remained, what should it do? With the line &#8220;dreams in code&#8221; it certainly had to epitomise sleep and naturally I wanted to show some Zs. Thus the concept was born: sleep makes more Z! Latching onto the universally recognised ++ notation for incrementing a variable my first iteration looked like so:</p>
<pre class="prettyprint">int sleep(int z) {
  return z++;
}</pre>
<p>The first thing you might notice is that my use of braces is different. The above snippet being my preferred style of layout. The reason for the change? I had limited myself to a fixed sized graphic and the alternative code-block style allowed me to use a slightly larger font size. Lets clean that up so it&#8217;ll fit better in my Photoshop template:</p>
<pre class="prettyprint">int sleep(int z)
{
  return z++;
}</pre>
<p>However, that keen eyed among you are more likely to point out that my function, though perfectly legal in C, C++, Java, Objective-C and probably a number of other languages, does not in fact do as it appears. As ++ is a <em>post</em>-increment the increase in <em>z</em> would happen after the function or method returns &#8212; therefore the value of z is returned before it is changed.</p>
<p>Now, I debated whether to keep this as it, after all you might say that when sleeping the goal <em>is</em> to do nothing; however, my goal had been to increase the number of <em>z</em>, so the solution? <em>Pre</em>-increment.</p>
<pre class="prettyprint">int sleep(int z)
{
  return ++z;
}</pre>
<p>While this notation is not nearly as commonly seen in code, it does allow the function to return an increased value for <em>z</em> without using another line or a hard coded value. It was a shame to drop the original concept of <em>z++</em>, and you might consider the whole thing rather over-engineered, but as this tiny code-snippet sits proud atop every page on a blog about development I certainly believe this was an excellent occasion to favour a <em>correct</em> solution over a visually appealing one.</p>
<div class="shr-publisher-98"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2010/04/dreams-in-code-snippet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To WordPress&#8230; and Beyond!</title>
		<link>http://blog.homedsl.co.uk/2010/04/to-wordpress-and-beyond/</link>
		<comments>http://blog.homedsl.co.uk/2010/04/to-wordpress-and-beyond/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 18:06:23 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Moveable Type]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=62</guid>
		<description><![CDATA[Blogging on-and-off again for more years than you should know my blog has been relocated; from Blogger to WordPress&#8230; and beyond. I&#8217;ve been blogging on-and-off again for more years than I can count. My latest &#8216;official&#8217; blog, and by latest I mean 2008, was on Blogger. I&#8217;ve been looking to skin up my blog for [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>Blogging on-and-off again for more years than you should know my blog has been relocated; from Blogger to WordPress&#8230; and beyond.</strong></p>
<p><a href="http://wordpress.org"><img class="alignleft" title="WordPress Logo" src="http://s.wordpress.org/about/images/logo-grey/grey-l.png" alt="" width="150" height="150" /></a>I&#8217;ve been blogging on-and-off again for more years than I can count. My latest &#8216;official&#8217; blog, and by latest I mean 2008, was on <a href="http://www.blogger.com/">Blogger</a>. I&#8217;ve been looking to skin up my blog for some time, preserving my &#8216;brand&#8217;, but it just never happened. It&#8217;s not that it can&#8217;t be done over on blogger, but I do like to tinker so the edit/refresh/observer-bug/find-your-position-in-file cycle in the browser just wasn&#8217;t conducive to the way I work, so I grabbed a standard template and that was it.</p>
<p>Looking for a &#8216;professional&#8217; blogging platform I took a look at <a href="http://www.movabletype.org/">Moveable Type</a> but I&#8217;d actually done a fair bit of work with <a href="http://www.wordpress.org">WordPress</a> before as it&#8217;s the engine used for my brother&#8217;s art blog over at <a href="http://jacquesy.co.uk">jacquesy.co.uk</a>, that coupled with my &#8216;leet PHP skillz and it was settled. I&#8217;d also seen a theme that with a few tweaks would integrate well with the existing styling used on my <a href="http://jason.homedsl.co.uk">portfolio</a> called <a href="http://www.briangardner.com/themes/dropshadow-wordpress-theme.htm">Dropshadow</a>. Unfortunately, the download link is a dud, fortunately the good folks at <a href="http://web.archive.org/web/20080507152616/http://www.briangardner.com/themes/dropshadow-wordpress-theme.htm">Archive.org</a> have everything in stock.</p>
<p>Now, I was debating whether to copy the four published posts on Blogger over, by hand, when I find that you can <a href="http://codex.wordpress.org/Importing_Content#Blogger">import into WordPress right from Blogger</a>. I must admit I was pretty damn impressed by the functionality. Old comments, posts, images and even drafts have been pulled over, no effort. Just had to choose to, automatically, convert all categories to tags to finish off the import. I popped right over to Blogger and added some quick-n-dirty re-direct code to forward any lost souls to the new URL, like so:</p>
<pre class="prettyprint lang-html">&lt;meta HTTP-EQUIV='REFRESH' content='0; url=http://blog.homedsl.co.uk/'/&gt;
&lt;script type='text/javascript'&gt;
&lt;!--
window.location = "http://blog.homedsl.co.uk/";
//--&gt;
&lt;/script&gt;</pre>
<p>Four hours of copy-n-pasting CSS from my portfolio&#8217;s stylesheet and a few image-tweaks in Photoshop and everything is looking pretty good. I hop along and grab a few plugins: <a href="http://txfx.net/wordpress-plugins/page-links-to/">Page Links To</a>, to allow me to easily integrate links into the tab/page bar at the top of the page; <a href="http://www.statpress.org/">StatPress</a>, to keep an eye on you all and <a href="http://www.webveteran.com/blog/index.php/visual-code-editor/">Visual Code Editor</a>, to clean up the rendering of &lt;code&gt; and &lt;pre&gt; blocks, before going on to syntax highlight them. For this I&#8217;m using <a href="http://code.google.com/p/google-code-prettify/">Google Code Prettify</a> in combination to some pre-processing on the relevant tags (to set the class) as modifications to the Visual Code Editor plugin.</p>
<p>So, I&#8217;m pretty much &#8216;done&#8217;, though I&#8217;m sure they&#8217;ll be a few more tweaks required &#8211; there was, just to publish this post &#8211; but, I&#8217;m ready to have yet another bash at this blogging m&#8217;larkey.</p>
<div class="shr-publisher-62"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2010/04/to-wordpress-and-beyond/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Slower Computer, Higher Productivity</title>
		<link>http://blog.homedsl.co.uk/2009/04/slower-computer-higher-productivity/</link>
		<comments>http://blog.homedsl.co.uk/2009/04/slower-computer-higher-productivity/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 09:22:39 +0000</pubDate>
		<dc:creator>Jason Jacques</dc:creator>
				<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Apple Care]]></category>
		<category><![CDATA[Digg]]></category>
		<category><![CDATA[Exams]]></category>
		<category><![CDATA[G3]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[PowerMac]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Revision]]></category>
		<category><![CDATA[Slashdot]]></category>
		<category><![CDATA[Tiger]]></category>

		<guid isPermaLink="false">http://blog.homedsl.co.uk/?p=9</guid>
		<description><![CDATA[While good enough computing maybe the future of the tech industry, the unfortunate failure of one modern machine has seriously improved productivity in an age of constant distractions. My MacBook died. Again. The nice man at Apple Care tells me it&#8217;s a hard drive failure. Again. You might think I lob the machine around, no [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><span style="font-weight: bold;">While <a href="http://www.linuxworld.com/news/2009/042209-the-future-of-computing-will.html?fsrc=rss-linux-news">good enough computing</a> maybe the future of the tech industry, the unfortunate failure of one modern machine has seriously improved productivity in an age of constant distractions.</span></p>
<p>My MacBook died. Again. The nice man at Apple Care tells me it&#8217;s a hard drive failure. Again. You might think I lob the machine around, no consideration, just chuck it in my bag &#8211; but no; for the last month it&#8217;s been happily sitting, safe and sound on a laptop stand on my desk. So I&#8217;m sitting there, listening to <a href="http://twit.tv/">Leo Laporte</a> and the machine just stops responding, pin wheel and everything. I hard-reset it an no OS X for me. Great. No machine, and to top it off as of next week it&#8217;s exam season for me.</p>
<p><a href="http://www.apple.com/support/powermac/g3/"><img class="alignright" title="PowerMac G3" src="http://images.apple.com/support/_images/hero_powermacg3.jpg" alt="PowerMac G3" width="180" height="180" /></a>Fortunately, being sat on the desk full time, I have a <a href="http://www.apple.com/macosx/features/timemachine.html">Time Machine</a> backup of the drive so my files, in particular my class notes, are safe. With any luck the restore functionality works wonderfully and I&#8217;ll have my machine back in no time at all and restore it right over the top. In the mea- time, however, I&#8217;m on my <a href="http://en.wikipedia.org/wiki/Power_Macintosh_G3_(Blue_&amp;_White)">Blue and White PowerMac G3</a>. For comparison: Black MackBook, 2.16 GHz Core 2 Duo, 2 GB DDR RAM, OS X Leopard, vintage 2007  vs PowerMac G3, 450 MHz o/c, 512 MB SD RAM, OS X Tiger (slowly), vintage 1999. The machine is 10 years old. While its a beautiful machine and my first Mac (kept for sentimental value), obsolete is a generous way to describe it.</p>
<p>Yet, my productivity is up.</p>
<p>As I mentioned, it&#8217;s exam season for me right now and my revision has been almost non-existent; I am easily distracted by the vast amounts of interesting content to be found on the information superhighway. Not being able to open more than 4 tabs in my browser without it slowing to a state where I can no longer scroll coupled with a total inability to watch video at a frame rate higher than 4 frames per second has made me really consider the way I work with my computer.</p>
<p>Email drives me, for a student I get a fair amount, and as such I really appreciate a good desktop client, like Mail.app on OS X &#8211; but there is no way I&#8217;m going to set that up on this machine, it&#8217;s only temporary and I have GBs of the stuff which will have to be synchronised before the barely usable spotlight search can provide anything like accurate results. My new found tab limitation has really killed my obsession with this killer app of the 21st century.</p>
<p>My two favorite time killers, <a href="http://digg.com/">Digg</a> and <a href="http://slashdot.org/">Slashdot</a>, are also stemmed by my browser&#8217;s limitations. Where as before I&#8217;d browse down Digg or Slashdot and open 50 pages of trivial information, audio, photos and media. Now I have to seriously consider every page. Video of dancing hamster? No point. Photo stream of worlds cutest cats? Only if I want to reboot the machine two photos in. Want three different options on a particular current affairs issue? Not all at once. Flipping back and fourth to open links, it&#8217;s just not the way I browse the web. I like to cue my content up.</p>
<p>So I spent the entire day on the university website doing quizzes and practice tests, reading materials and browsing the student discussion boards for tips and reviews of exam questions. Not only do I feel like I&#8217;ve made serious progress in the last few hours I&#8217;ve unlocked reams of additional content to review which should help me tie up my studies over the next few days.</p>
<p>But make note: once I realised this old beast could handle one page of text at a time, notice what I had time to do&#8230; oh well, maybe I&#8217;ll pass next year.</p>
<div class="shr-publisher-9"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://blog.homedsl.co.uk/2009/04/slower-computer-higher-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

