<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>On the Edge of Occam&#039;s Razor 2.0</title>
	<atom:link href="http://mattgumbley.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattgumbley.wordpress.com</link>
	<description>Let’s stick with the past, ‘cos the future won’t last…</description>
	<lastBuildDate>Sun, 22 Jan 2012 22:15:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mattgumbley.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/5aac64c0a91fb3af11fc7c044113909c?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>On the Edge of Occam&#039;s Razor 2.0</title>
		<link>http://mattgumbley.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mattgumbley.wordpress.com/osd.xml" title="On the Edge of Occam&#039;s Razor 2.0" />
	<atom:link rel='hub' href='http://mattgumbley.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Using Bayesian filtering on your Twitter timeline</title>
		<link>http://mattgumbley.wordpress.com/2012/01/22/using-bayesian-filtering-on-your-twitter-timeline/</link>
		<comments>http://mattgumbley.wordpress.com/2012/01/22/using-bayesian-filtering-on-your-twitter-timeline/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 10:40:05 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Linux/UNIX Software]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">https://mattgumbley.wordpress.com/?p=124</guid>
		<description><![CDATA[In 2002, Paul Graham published A Plan For Spam, in which he describes the use of a Bayesian filter to detect spam in email. Today, this is one of the techniques used by most modern mail clients to detect spam, after initial training. Could the same technique be used to filter your Twitter timeline? This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=124&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In 2002, Paul Graham published <a href="http://www.paulgraham.com/spam.html">A Plan For Spam</a>, in which he describes the use of a Bayesian filter to detect spam in email. Today, this is one of the techniques used by most modern mail clients to detect spam, after initial training.</p>
<p>Could the same technique be used to filter your Twitter timeline? This could be either to detect spam, or, as I wanted to use it, to filter out things that I&#8217;m just not interested in, e.g. the current discussion of American politics. (Not that this is not worthy of discussion, it&#8217;s just that I have very little interest in it, and live in England.)</p>
<p>The idea is that upon reading a tweet, you decide whether it is interesting or not, and mark it accordingly. The filter learns that this particular combination of words is spam or ham, and uses this to adjust its assessment of the spamminess of other tweets. Tweets are then displayed in different colours, depending on the probability being high, low or medium. The record of your choices is stored on disk, and reloaded on startup; the effect being that over time, the program learns your interests.</p>
<p>One problem is the 140-character limit of tweets. This does not provide much with which to train a filter! However, I have had some initial success, not yet to the extent that I could simply not display low priority tweets; the filter still needs tuning.</p>
<p>The filter is an extension to Cameron Kaiser&#8217;s excellent <a href="http://www.floodgap.com/software/ttytter/">TTYtter</a> command-line Twitter client, which is written in Perl 5. As TTYtter does not currently provide a mechanism for an extension to indicate the &#8216;priority&#8217; of tweets, and hence, colour them differently, I have patched TTYtter 1.2.5. In addition to TTYtter&#8217;s requirements, you will also need to install Gea-Suan Lin&#8217;s <a href="http://search.cpan.org/~gslin/Algorithm-Bayesian-0.5/lib/Algorithm/Bayesian.pm">Algorithm::Bayesian</a> module from the CPAN. I also recommend installing <a href="http://search.cpan.org/~ckaiser/Term-ReadLine-TTYtter-1.3/">Term-ReadLine-TTYtter</a>. The filter memory is persisted using Data::Dumper.</p>
<p>To use, invoke TTYtter as:</p>
<pre>
./ttytter.pl -readline -exts=bayes.pl -ansi
</pre>
<p>To mark tweets as spam, use the command &quot;<strong>/spam xx yy .. zz</strong>&quot; where xx, yy, zz are one or more tweet menu IDs, as shown in the incoming timeline. To mark as ham, use &quot;<strong>/ham xx yy .. zz</strong>&quot;. Alternatively, use &quot;<strong>/- xx yy .. zz</strong>&quot; for spam and &quot;<strong>/+ xx yy .. zz</strong>&quot; for ham.</p>
<p>Tweets are then coloured according to the filter. Ham or interesting tweets are bold white, spam is yellow, undecided is plain white.</p>
<p>The weighting of the filter&#8217;s probability could possibly be better: I&#8217;m splitting the probability range [0..1] into three equal parts, [0..1/3), [1/3..2/3) and [2/3..1]. This was a guess <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The patched TTYtter, and the module, can be found on the <a href="http://code.google.com/p/devzendo-misc/source/browse/#hg%2Fttytter-bayes">DevZendo Miscellaneous Mercurial repository</a> . Changes to TTYtter are under the same licence as TTYtter itself; the Bayesian filter extension is under the Apache License v2.0.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=124&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2012/01/22/using-bayesian-filtering-on-your-twitter-timeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Initial thoughts on the Qumana offline blog editor</title>
		<link>http://mattgumbley.wordpress.com/2012/01/20/initial-thoughts-on-the-qumana-offline-blog-editor/</link>
		<comments>http://mattgumbley.wordpress.com/2012/01/20/initial-thoughts-on-the-qumana-offline-blog-editor/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 21:54:21 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Recommended]]></category>

		<guid isPermaLink="false">https://mattgumbley.wordpress.com/?p=118</guid>
		<description><![CDATA[I&#8217;ve started using the Qumana offline blog editor to prepare blog posts. I&#8217;m using version 3.2.4 on Mac OS X Snow Leopard. I&#8217;m impressed so far. Here are some initial thoughts on it. I&#8217;d considered ScribeFire, I used it previously, but was not impressed. I&#8217;d hoped that it might have improved recently, but a recent [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=118&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started using the Qumana offline blog editor to prepare blog posts. I&#8217;m using version 3.2.4 on Mac OS X Snow Leopard. I&#8217;m impressed so far. Here are some initial thoughts on it.</p>
<p>I&#8217;d considered ScribeFire, I used it previously, but was not impressed. I&#8217;d hoped that it might have improved recently, but a recent rewrite received something of a panning in reviews, hence, the search for something better. Qumana seems to do what I need.</p>
<p>It syncs up well with WordPress; I now have some of my earlier posts on the laptop.</p>
<p>It doesn&#8217;t seem to like the apostrophe in my blog title, showing it as a HTML Entity &#8211; bloggers do use apostrophes, you know; some of us, correctly. It does the same with categories, one has an ampersand which it shows as &amp;amp;. Hmmmm.</p>
<p>It gets the funky foreign letters in <a href="http://mattgumbley.wordpress.com/pages/project-bo%c3%b8kwurm/">BoøkWürm</a> correct; and even inserted that as a hypertext link to that category. As I mouse over the link in the editor, its address doesn&#8217;t show anywhere. I&#8217;d have to switch to HTML Source View.</p>
<p>I can&#8217;t seem to add categories from it. That&#8217;s a pain. It does allow me to add tags though, which link through to Technorati</p>
<p>It&#8217;s written in Java. This has pros and cons. Portability is good. There are small resize and toolbar layout problems; it has that certain Javaesque <em>je ne sais quoi</em>. I know from my own Open Source Mac OS X endeavours that making Java programs look beautiful is <strong>hard</strong>, and on the Mac, even harder. (I use Quaqua; Qumana uses JGoodies Looks, which I use on Windows and Linux)</p>
<p>The editor is very nice &#8211; offering WYSIWYG and HTML Source View. It has basic formatting options: fonts, underline/bold/italic/strikethrough, alignment, lists, blockquotes, indent/outdent, images and links. Just enough; I don&#8217;t want anything fancy. Word count would be useful. The spell checker is useful, but I can&#8217;t change the language from American English to British English.</p>
<p>I won&#8217;t be making use of its Ad feature. The Blog Manager allows multiple blogs. Could be useful <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In all, a nice application &#8211; and it seems reliable so far.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=118&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2012/01/20/initial-thoughts-on-the-qumana-offline-blog-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Third time&#8217;s the charm</title>
		<link>http://mattgumbley.wordpress.com/2012/01/20/third-times-the-charm/</link>
		<comments>http://mattgumbley.wordpress.com/2012/01/20/third-times-the-charm/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 21:30:11 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">https://mattgumbley.wordpress.com/?p=116</guid>
		<description><![CDATA[I learned to touch-type in the 80&#8242;s, as I got into computing, with help from a lunchtime class that our commerce teacher ran. Not so easy to touch-type on a ZX81 &#8211; we used typewriters. I&#8217;m fairly fast, but I&#8217;ve drifted from doing it properly, and tend to keep looking down at what I&#8217;m typing. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=116&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I learned to touch-type in the 80&#8242;s, as I got into computing, with help from a lunchtime class that our commerce teacher ran. Not so easy to touch-type on a ZX81 &#8211; we used typewriters. I&#8217;m fairly fast, but I&#8217;ve drifted from doing it properly, and tend to keep looking down at what I&#8217;m typing.</p>
<p>As I expect to be programming and using computers until I can&#8217;t physically do it any more, I need to look after my ability to type effectively. Qwerty isn&#8217;t optimal.</p>
<p>A couple of times in the last few years, I&#8217;ve tried to remedy this by learning the Dvorak layout. I&#8217;ve gone through lessons with a tutor program twice, but then as soon as I started using it for the day job, the difficulty of adjusting my muscle memory&#8217;s knowledge of Vim and Eclipse rears up, and I stop using it. Having to enter the usual panoply of symbols whilst programming is also more difficult. </p>
<p>If I were only writing straight English, this wouldn&#8217;t be so much of a problem. So, write more English&#8230; like this blog, which has become woefully neglected. There&#8217;s also the possibility of resurrecting writing short stories. (Thomas Pynchon need not start getting worried.) I also like the idea of 750words.com, where a writer puts down 750 words of any stuff that comes into your head, first thing, every day.</p>
<p>The Colemak layout is supposed to be better for programming with than Dvorak, so for my third and final attempt at speeding up, I&#8217;m using aTypeTrainer4Mac with this layout. It&#8217;s going well so far; I&#8217;m just moving off the home row.</p>
<p>So the plan is to train up, then when I&#8217;ve got all the keys in muscle memory, write English daily with it. Then and only then start looking at adapting it to use for programming.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=116&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2012/01/20/third-times-the-charm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>New Open Source Projects for Autumn</title>
		<link>http://mattgumbley.wordpress.com/2010/10/15/new-open-source-projects-for-autumn/</link>
		<comments>http://mattgumbley.wordpress.com/2010/10/15/new-open-source-projects-for-autumn/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 21:59:52 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=113</guid>
		<description><![CDATA[More on these later, but I&#8217;ve spent quite some time honing the Cross Platform Launcher plugin, making it work nicely with the Maven NAR (Native Archive) Plugin. You can now build JVM launchers across all three platforms (Mac OS X, Ubuntu Linux and Windows) with one plugin, that contain cross platform JNI code. This is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=113&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>More on these later, but I&#8217;ve spent quite some time honing the Cross Platform Launcher plugin, making it work nicely with the Maven NAR (Native Archive) Plugin. You can now build JVM launchers across all three platforms (Mac OS X, Ubuntu Linux and Windows) with one plugin, that contain cross platform JNI code.</p>
<p>This is in preparation for another large-scale project, to replace my hodgepodge of clunky shell/perl backup scripts and Windows XP backup with something a little more&#8230; industrial.</p>
<p>I need a decent backup system. Time Machine looks great for the Mac, and I use it&#8230; but don&#8217;t entirely trust it. I use FileVault, and having to log out just to start a back up of any bands that have changed is just retarded.</p>
<p>I could just go out and buy Retrospect, but that&#8217;s not my style <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>It has to back up in the background, notifying the user of activity unobtrusively. I&#8217;m thinking of a continuous incremental system, from the usual trio of operating systems, managing retention periods and disk space. I want to go back to any point in time and see/restore that data. It has to store all file metadata, so, extended attributes, modes/ACLs, multiple streams, sparse files, long filenames, symlinks, long symlinks to long filenames, ownership, etc. I want to be able to translate backup data into tar streams for verification and off-site backups. i.e. give me a tar stream of the whole data from last Wednesday, 18:34 onto this disk. It has to have a sparse, Zen-like UI &#8211; I&#8217;ve seen too many backup programs that were obviously written for developers!</p>
<p>I don&#8217;t ask much, really&#8230;..</p>
<p>The first seeds have been sown; I have the beginnings of a cross-platform library for filesystem access and access to all the above enhanced metadata that&#8217;s not available in Java. I know Java 7 has some of this; I can&#8217;t wait for Java 7. I wrote quite a bit of this for UNIX some time ago, using Ant and Eclipse, but didn&#8217;t do it using TDD. I&#8217;m revisiting this, and starting from first principles using TDD.</p>
<p>I also need to reuse some common code from MiniMiser. Mercurial makes transplanting code between repositories quite easy.</p>
<p>I think with this project that I&#8217;ll open it as soon as I&#8217;ve cut something that builds in my CI server. Shouldn&#8217;t be long now.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=113&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/10/15/new-open-source-projects-for-autumn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Homebrew Z80 Progress</title>
		<link>http://mattgumbley.wordpress.com/2010/10/15/homebrew-z80-progress/</link>
		<comments>http://mattgumbley.wordpress.com/2010/10/15/homebrew-z80-progress/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 21:41:23 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Homebrew Z80]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=111</guid>
		<description><![CDATA[Oh look, some tumbleweed&#8230;.. Actually, there has been progress on the homebrew Z80 system! No actual hardware yet, but I now have a working simulator, with the beginnings of a Z80SIO serial I/O simulator. This correctly intercepts all the I/O port access that the chip understands, and displays the state of all the registers on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=111&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oh look, some tumbleweed&#8230;..</p>
<p>Actually, there has been progress on the homebrew Z80 system!</p>
<p>No actual hardware yet, but I now have a working simulator, with the beginnings of a Z80SIO serial I/O simulator. This correctly intercepts all the I/O port access that the chip understands, and displays the state of all the registers on screen, with an interpretation: rather than just dumping the raw register contents, it describes what each bit or bit group is intended to do, i.e. 7-bit data, 2 stop bits, receive interrupt enabled.</p>
<p>I&#8217;ve got a prototype perl script communicating back-to-back with minicom via a pseudo-terminal; now to reimplement this in C, and wire it into the SIO simulator. </p>
<p>Getting the pty code controlled by the register access is going to be tricky.</p>
<p>Then it&#8217;s time to write a quick &#8216;local echo&#8217; test program in Z80, and off we go&#8230;..</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=111&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/10/15/homebrew-z80-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Building your own computer</title>
		<link>http://mattgumbley.wordpress.com/2010/07/25/building-your-own-computer/</link>
		<comments>http://mattgumbley.wordpress.com/2010/07/25/building-your-own-computer/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 18:39:31 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Homebrew Z80]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=99</guid>
		<description><![CDATA[These days, if an enthusiast builds their own computer, more than likely, they choose a screamingly fast x86 32- or 64-bit mainboard, appropriate memory, drives, etc., put it in a fancy case with perspex sides, coloured lights, install Windows 7, et viola, job done. Been there &#8211; although in the interests of reducing RF noise [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=99&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>These days, if an enthusiast builds their own computer, more than likely, they choose a screamingly fast x86 32- or 64-bit mainboard, appropriate memory, drives, etc., put it in a fancy case with perspex sides, coloured lights, install Windows 7, et viola, job done.</p>
<p>Been there &#8211; although in the interests of reducing RF noise into an Amateur Radio environment, no way would I ever use a perspex case. Also, no Windows 7, and the clock speeds are decidedly vintage 2004.</p>
<p>This is all quite reasonable. I&#8217;ve been building Intel-based computers like this since probably 1992 (didn&#8217;t keep that one) or 1996. For the most part, this has been one continual upgrade of one part or another, since 1996. I&#8217;m still using the same floppy drive I had back then &#8211; everything else has changed. Several times. It&#8217;s totally boring. Something essential has been lost over the years. Modern hobbyist computing has become somewhat jaded; innovation stifled under a smothering of bland conformity.</p>
<p>This was most definitely <em>not</em> the case back in the golden days of the microcomputer revolution in the UK.</p>
<p>(By the way, one reason for this post is so I can recollect all the stuff that follows. I&#8217;m 41 now, and it&#8217;s been hard trying to sequence all of it. If any friends remember any additional things, or can correct me, please let me know!)</p>
<p>Thanks to Jim Walwyn and Pete Wood, maths and computer studies teachers at Sir Thomas Boughey High School, I first used a computer at around age 11, way back in 1981.</p>
<p>This was a teletype connected via acoustic coupler to &#8211; I believe &#8211; the Manchester Computing Centre. I remember being fascinated by the game of Nim it played (I always lost; these days I understand it&#8217;s all about <a href="http://blog.plover.com/math/sprague-grundy.html">Sprague-Grundy theory</a>&#8230;.). The school also had an <a href="http://en.wikipedia.org/wiki/Apple_II_series">Apple ][</a>, which sparked a life-long appreciation of Apple hardware; at one stage, I was collecting, renovating and selling second-hand Apple ][ and /// hardware - possibly a topic for another blog post; there's a motherlode in there.</p>
<p>The school soon took charge of several other computers of the day: <a href="http://highfields-arc.6te.net/geninfo/pchist/zx81.htm">ZX81</a>s. My neighbour had a ZX80, so I had an idea of what to expect.</p>
<p>It may have been Christmas 1981 or 1982, that I pursuaded my parents that a ZX81 would be the perfect Christmas present. Of course, it would be useful for computer studies and maths at school, so can I have one, please, please please? (And it would also be jolly good for games.) My parents relented, and although expensive, they bought me one.</p>
<p>I learned ZX81 BASIC of course, and quickly went on to Z80 assembler, typing in listings (as hex dumps) from the computer magazines of the day, and writing my own games. I really <em>did</em> use it for educational purposes as well, honestly! I very much doubt I would be doing what I do today if I hadn&#8217;t had a home computer &#8211; and had one at that time. There was a critical mass of children getting computers and mastering them at that time. It would be very interesting to research the mastery level of children exposed to computers at that age, over the years. My cynical hypothesis is that as the interface to computers has made them less intimidating, and has hidden their programmability, mastery will have decreased. People are tool users these days, not tool makers. Or game players, not game writers, if you will.</p>
<p>Anyway, I digress. </p>
<p>After the ZX81, I upgraded to a <a href="http://en.wikipedia.org/wiki/Vic_20">Vic 20</a> (later with 8k &#8216;STACK&#8217; expansion pack&#8217;), then <a href="http://en.wikipedia.org/wiki/Zx_spectrum">ZX Spectrum<a>, <a href="http://en.wikipedia.org/wiki/Atari_8-bit_family">Atari 800XL</a> and 1050 disk drive. I think it was while I was going through my Atari phase that I started work. I later upgraded to an <a href="http://en.wikipedia.org/wiki/Amiga_500">Amiga 500</a>, <a href="http://en.wikipedia.org/wiki/Amiga_2000">Amiga 2000</a>. Around this time, I left home, had a brief dalliance with a 386, but it was fairly boring. Upgrade to an <a href="http://en.wikipedia.org/wiki/Amiga_1200">Amiga 1200</a>. Around this time I was at university, towards the end of which, I bought my first &#8216;real&#8217; PC, installed Beta-Tamu Linux, then Yggdrasil Linux on it, and the rest is history&#8230;. I&#8217;m going to leave the PC trail here, because as I stated above, they&#8217;re incredibly boring.</p>
<p>All the above computers came with <a href="http://en.wikipedia.org/wiki/BASIC">BASIC</a> available as their main programming language, although I usually preferred their native assembly languages, Z80, 6502, 80&#215;86 and 680&#215;0. If I wasn&#8217;t coding in assembler, I&#8217;d be writing in <a href="http://en.wikipedia.org/wiki/Forth_%28programming_language%29">FORTH</a>. I started using FORTH on the Spectrum with an implementation called <a href="http://www.crashonline.org.uk/08/whitelig.htm">White Lightning</a> by Oasis Software. I never bought a <a href="http://en.wikipedia.org/wiki/Jupiter_Ace">Jupiter ACE</a>. I should have. FORTH is a very simple, yet powerful language. Chuck Moore, its creator, is clearly a genius. There are many good articles on FORTH: <a href="http://mvanier.livejournal.com/2133.html">Mike Vanier&#8217;s post</a> is particularly good. FORTH is having something of a renaissance, or at least, it has inspired new languages like the <a href="http://factorcode.org/">Factor programming language</a>.</p>
<p>Throughout this time, I was also interested in electronics and amateur radio &#8211; I still am, although it&#8217;s taken a distinct back seat since university.</p>
<p>So to actually get to the point, although I&#8217;ve assembled PCs, I&#8217;ve never actually built my own computer; although I&#8217;ve used FORTH implementations written by others on all the above computers, I&#8217;ve never finished an implemention of it myself (see <a href="http://www.gumbley.me.uk/psion-forth.html">Psion Forth</a> for the furthest I got, the last time I tried).</p>
<p>For the past 30 years (crikey!) I&#8217;ve been a tool user, not a tool maker.</p>
<p>So, to remedy this, and revitalise those parts of my memory where the Z80 opcodes live, I plan to build a small single-board Z80-based microcomputer, and implement FORTH on it. Nothing earth-shattering, just the CPU, ROM, RAM, serial I/O to a terminal (will have to get an RS232-to-USB serial converter for the Mac!), and possibly a CompactFlash disk.</p>
<p>I am fortunate enough to have a box of Z80 and Z80-SIO chips; I have EPROMs, and a programmer (not sure if it still works), but no UV eraser. No RAM yet, but there&#8217;s always eBay. No MAX232 line drivers, but RS still sell them. </p>
<p>I have books: Rodnay Zaks&#8217; <a href="http://www.msxarchive.nl/pub/msx/mirrors/msx2.com/zaks/index-nf.htm">Programming the Z80</a>, and the masterpiece of FORTH wisdom that is R. G. Loeliger&#8217;s <a href="http://retrocode.blogspot.com/2010/03/threaded-interpretive-languages-by-r-g.html">Threaded Interpretive Languages</a> (a copy of which was always tempting me, on the bookshelves at Keele University; now I have my own copy). </p>
<p>Don&#8217;t need any fancy PCB design, layout, etching kit &#8211; it&#8217;s possible to build something with just matrix board: take a look at this: <a href="http://digitarworld.uw.hu/z80.htm">Homebrew Z80 Computer</a>. It&#8217;s a work of greatness.</p>
<p>I&#8217;m doing it in three parts. </p>
<p>First, get a Z80 + hardware simulator running on the Mac, with a simple serial bootloader. I started that part in August 2006, but put it down &#8211; for four years.</p>
<p>Second, implement FORTH for it.</p>
<p>Third, build the hardware.</p>
<p>Watch this space&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=99&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/07/25/building-your-own-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Demand Reviewed Open Source Crypto</title>
		<link>http://mattgumbley.wordpress.com/2010/07/09/demand-reviewed-open-source-crypto/</link>
		<comments>http://mattgumbley.wordpress.com/2010/07/09/demand-reviewed-open-source-crypto/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 22:11:24 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=95</guid>
		<description><![CDATA[I&#8217;ve been using CryptoPad for many years, on my Handspring Visor. &#8220;CryptoPad is a MemoPad replacement that uses the Blowfish encryption algorithm to allow for encryption of arbitrary length data with a password of up to 448 bits.&#8221; Cool, uses Blowfish&#8230; by Bruce Schnieier&#8230; must be secure. And it&#8217;s Open Source too! This&#8217;ll fox those [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=95&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://cryptopad.sourceforge.net/">CryptoPad</a> for many years, on my Handspring Visor. &#8220;CryptoPad is a MemoPad replacement that uses the Blowfish encryption algorithm to allow for encryption of arbitrary length data with a password of up to 448 bits.&#8221;</p>
<p>Cool, uses Blowfish&#8230; by Bruce Schnieier&#8230; must be secure. </p>
<p>And it&#8217;s Open Source too! This&#8217;ll fox those pesky NSA spooks.</p>
<p>At least, this was an assumption &#8211; proved wrong when I came to transfer my encrypted data over to the iPod. This is a two stage process:</p>
<p>1. Extract the encrypted data from the synced CryptoPad database, and decrypt it on the PC. (How hard can this be?!!)<br />
2. Import it into some new, as yet undiscovered program on the PC, that syncs with the iPod, allowing me to encrypt it.</p>
<p>The first part is going amazingly well &#8211; and has proven that even a good algorithm can be useless (or reduced in security) by an implementation flaw.</p>
<p>The problem is that the password you encrypt your memo with is encrypted with itself, and the ciphertext of this stored in the memo. When attempting to open a memo, you enter a password. The password-stored-as-ciphertext is then decrypted with the entered password, and if this yields the password you entered, then you have the correct password, and the ciphertext of the memo is decrypted with it.</p>
<p>The length of the password is also stored in the memo record. It&#8217;s trivial to mount a brute force attack against all possible n-character passwords, especially since you could restrict the keyspace to that allowed by the Grafitti alphabet.</p>
<p>I don&#8217;t actually have to do the brute force attack, as I know all the passwords I use, so can get the plaintext of all my memos easily.</p>
<p>But this serves as a warning to check the source code of any crypto system you&#8217;re intending to use. Unfortunately, crypto systems are often complex. Sometimes &#8211; as in this case &#8211; this complexity is deployed with a chink in the armour that can be detected even by those without strong crypto-fu.</p>
<p>The next stage of this project is to find an iPod app that allows import of memo data on the PC. I&#8217;m thinking of <a href="http://www.msevensoftware.com/msecure.html">mSecure</a>, but if there&#8217;s no source code, I&#8217;m not buying.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=95&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/07/09/demand-reviewed-open-source-crypto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Incentives for Improvement in Quality and Training</title>
		<link>http://mattgumbley.wordpress.com/2010/06/09/incentives-for-improvement-in-quality-and-training/</link>
		<comments>http://mattgumbley.wordpress.com/2010/06/09/incentives-for-improvement-in-quality-and-training/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 17:39:31 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[The Decline]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=92</guid>
		<description><![CDATA[We&#8217;ve all been there, phoning a company to be told by their automated menu system: &#8220;This call may be monitored for quality and training purposes.&#8221; Call me cynical, but I doubt many companies actually follow through on this. Perhaps they record the enraged customers, and play them back at parties for a good laugh. I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=92&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve all been there, phoning a company to be told by their automated menu system:<br />
&#8220;This call may be monitored for quality and training purposes.&#8221;</p>
<p>Call me cynical, but I doubt many companies actually follow through on this. Perhaps they record the enraged customers, and play them back at parties for a good laugh. I just don&#8217;t hear any improvements in customer support from many companies.</p>
<p>So, in keeping with my penchant for V&#8217;s &#8220;People should not fear their governments; governments should fear their people&#8221;, here&#8217;s perhaps one way that consumers can really make a difference in the companies they deal with. </p>
<p>&#8220;Your call may be recorded for quality and training purposes. &#8230; Hello, thank you for calling MegaCorp inc., you&#8217;re through to Sarah, how may I help you?&#8221;</p>
<p>&#8220;Hello Sarah, my name is Matt Gumbley, and before discussing my problem, I heard that you&#8217;ll be recording this for quality and training purposes &#8211; I&#8217;d like to state I will also be blogging a summary of my experiences with MegaCorp, inc. in this matter. I hope this won&#8217;t be a problem for a company with the reputation of MegaCorp, one who takes such a pro-active stance on excellent customer relations? You see, my blog has a wide readership, and I&#8217;m often asked for recommendations of suppliers and products; my readers want to know which companies to trust, and which would give them shoddy treatment(*). I won&#8217;t be mentioning your name personally, of course, but as a MegaCorp&#8217;s customer service department, you represent your company.&#8221;</p>
<p>I am curious to see whether this strategy would work.</p>
<p>* I should wish!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=92&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/06/09/incentives-for-improvement-in-quality-and-training/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>It is done! MiniMiser 0.1.0 released!</title>
		<link>http://mattgumbley.wordpress.com/2010/03/20/it-is-done-minimiser-0-1-0-released/</link>
		<comments>http://mattgumbley.wordpress.com/2010/03/20/it-is-done-minimiser-0-1-0-released/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 22:39:40 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Project MiniMiser]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=81</guid>
		<description><![CDATA[The first version (0.1.0) of The MiniMiser Framework is now available, and work progresses on 0.2.0. See the project home page for more details!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=81&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The first version (0.1.0) of The MiniMiser Framework is now available, and work progresses on 0.2.0.</p>
<p>See <a href="http://bit.ly/cZqTIm">the project home page</a> for more details!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=81&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/03/20/it-is-done-minimiser-0-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
		<item>
		<title>Release Early, Release Often?</title>
		<link>http://mattgumbley.wordpress.com/2010/03/20/release-early-release-often/</link>
		<comments>http://mattgumbley.wordpress.com/2010/03/20/release-early-release-often/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 00:02:24 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattgumbley.wordpress.com/?p=83</guid>
		<description><![CDATA[Note: this post was written some time ago, but wasn&#8217;t published then &#8211; the figures for lines of Java are now: 59416 (main: 31737; test: 27759), 649 tests with 70.1% coverage &#8211; the first &#8217;0.1.0&#8242; release. One of the tenets of Open Source development is “Release early, release often” (see The Cathedral and the Bazaar); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=83&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Note: this post was written some time ago, but wasn&#8217;t published then &#8211; the figures for lines of Java are now: 59416 (main: 31737; test: 27759), 649 tests with 70.1% coverage &#8211; the first &#8217;0.1.0&#8242; release.</p>
<p>One of the tenets of Open Source development is “Release early, release often” (see <a href="//www.catb.org/~esr//writings/homesteading/cathedral-bazaar/ar01s04.html”">The Cathedral and the Bazaar</a>); another is “If you build it, they will come” (not sure where this came from &#8211; it’s in Field of Dreams&#8230;).</p>
<p>I work from slightly different versions of these: Release quality first, then release it often. If you build the code, then you have to build the community, then they come.</p>
<p>I could have created a public repository somewhere (SourceForge? BitBucket? GitHub?) and committed the very first lines of code, allowing developers to keep up with the early progress of the application, but I chose not to. Instead, I’ve spend a year and a half developing on my own, not making the code available. It still isn’t available, nor will it be, until it’s ready. Until it has reached some level of maturity and works as I intend; until it’s sufficiently complete, and until it has ‘quality’ (whatever that is; I’m trying to define it in another post). I’ve seen way too many Open Source projects falter after releasing too early: I want to ensure that the project is viable for myself before I expect others to judge it or use it.</p>
<p>An analogy might help me defend this position: I play guitar and keyboards (occasionally), but I don’t like others listening to me practice. I’d rather perfect my technique and give a performance when I’m good enough. Some players don’t mind others listening to their duff notes and bad timing; I’d rather not inflict that on others.</p>
<p>Likewise, with the code, I think it’s better to let me refactor it into the cleanest, highest-quality, most understandable, tested and testable design that does what it was intended to do first, before letting others loose on it. </p>
<p>Sure, I miss out on early feedback, and now, there’s a lot of code for people to work with and give feedback on (which could be grossly negative, however, I think I’ve got a good design, so that this won’t be the case). The codebase is currently standing at 47,464 lines of Java code in total, that’s 25,207 LOC main code, 22,257 LOC unit/integration test code &#8211; 580 tests in all.</p>
<p>However, I’d rather spend the time completing the architecture; I’ve got ideas to express that I need to get down in tests and code &#8211; <em>then</em>, I’ll take it all public. I definitely don’t want design by committee at this early stage. I might release a few “technology preview” versions though, if only to get the release mechanism in place &#8211; Paul Graham said it best:</p>
<blockquote><p>In the desktop software business, doing a release is a huge trauma, in which the whole company sweats and strains to push out a single, giant piece of code. Obvious comparisons suggest themselves, both to the process and the resulting product.
</p></blockquote>
<p> &#8212; “Hackers and Painters, p62”</p>
<p>He’s talking about the difference between installed software and web-based, server-deployed software, but his point about releases of desktop software is valid: it takes a lot of infrastructure buildup, testing and polish.</p>
<p>One working definition of quality for this project is that the code should be free from internal contradictions (Christopher Alexander, quoted in Richard Gabriel, <a href="//www.dreamsongs.org/Files/PatternsOfSoftware.pdf”">Patterns of Software</a>, p35, &#8211; and having one developer define the architecture helps in this &#8211; there’s a single vision; I don’t have to work against several different aspects of the system at once, or mentor others who may be working in different areas (perhaps this is a trust / delegation issue?) thereby allowing me the time to get things to the state I want them in. Fred Brooks’ suggests, for the size of the team and the creative force:</p>
<blockquote><p>
Ten people, seven of them professionals, are at work on the problem, but the system is the product of one mind &#8211; or at most two, acting uno animo</em>.
</p></blockquote>
<p> (The Mythical Man-Month, 20th Anniversary Ed, p35)</p>
<p>A view against my stance was recently posted by chromatic in his excellent “Modern Perl Books” blog:</p>
<blockquote><p>I&#8217;ve written before that rapid, feedback-aware iteration is an effective way to understand a problem and find working solutions. Feedback from real users with real uses is invaluable (see also why Pugs and, later, Rakudo multiplied the velocity of Perl 6). You won&#8217;t understand the problem fully until you&#8217;ve had to balance multiple, sometimes contradictory, constraints. Just as no battle plan survives contact with the enemy, no software design survives contact with users unscathed. You may find that you&#8217;re painting yourself into a corner.<br />
There&#8217;s a balance: you don&#8217;t want to cause users unnecessary pain by rapid, arbitrary change, but legacy code and features can hamstring a project.
</p></blockquote>
<p> &#8211; from <a href="//www.modernperlbooks.com/mt/2009/08/designing-for-the-unanticipated.html”">Designing for the Unanticipated</a></p>
<p>So I <em>could</em> be “painting myself into a corner” by not releasing until it’s ready. However, perhaps even with the amount of code I have already, it’s still to early to release &#8211; it doesn’t do what it’s intended to do, yet.</p>
<p>Once I cut that first release, <em>then</em> I’ll release often. I prefer “Release quality, release often”. Then I’ll see whether they’ll come after something usable’s built.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattgumbley.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattgumbley.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattgumbley.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattgumbley.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattgumbley.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattgumbley.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattgumbley.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattgumbley.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattgumbley.wordpress.com&amp;blog=11854110&amp;post=83&amp;subd=mattgumbley&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattgumbley.wordpress.com/2010/03/20/release-early-release-often/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f2028800ee8e1fb046c142513b15641a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matt</media:title>
		</media:content>
	</item>
	</channel>
</rss>
