<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUENQnYyeSp7ImA9WhBUGEg.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582</id><updated>2013-05-07T02:28:13.891+10:00</updated><category term="exceptions" /><category term="stuxnet" /><category term="computer virus" /><category term="groovy" /><category term="english" /><category term="patterns" /><category term="cowbell" /><category term="security" /><category term="programming" /><category term="mac" /><category term="culture" /><category term="games" /><category term="language" /><category term="closures" /><category term="osx" /><category term="hackers" /><category term="usability" /><category term="startups" /><title>Chris Mountford</title><subtitle type="html">another layer of abstraction</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.chromosundrift.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Chromosundrift" /><feedburner:info uri="chromosundrift" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D04NQ347fyp7ImA9WhBVF00.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-5894044647607348986</id><published>2013-04-23T18:32:00.000+10:00</published><updated>2013-04-23T18:33:12.007+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-23T18:33:12.007+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="closures" /><category scheme="http://www.blogger.com/atom/ns#" term="groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="exceptions" /><title>Nice Syntax for Ignoring Exceptions in Groovy</title><content type="html">&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Save your breath. I don't need to hear how we shouldn't ignore exceptions. I agree with you. We should use exceptions as a part of an API and we should accept exception handling as an important, fundamental design element in our code. Happy?&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;OK now, sometimes you know you need to ignore an exception. Often it's a narrow exception type, for example, the following exceptions are frequently ignored with good reason (usually the exception cannot happen in practice):&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;MalformedURLException&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;NumberFormatException&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;IllegalAccessException&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;UnsupportedEncodingException&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Groovy inherits Java's exception handling syntax, the try, catch, finally blocks. While writing some code that ignored the exceptions I wondered what a Groovier way to do things would be. The following Config class is a kind of bean containing validated values read from a properties file. The defaults remain if the config file cannot be parsed for the given value.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;

&lt;script src="https://gist.github.com/christo/5441689.js"&gt;&lt;/script&gt;

&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Notice how the &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;try {...} catch {...}&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;looks like Groovy's closure passing syntax, as if there was a try method which is being passed a block. In fact I think Scala's equivalent is literally this (also, Scala is awesome).&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;But while it looks that way, it doesn't quite act that way.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;But could it?&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;What I really wanted to have was something like this:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ignore (NumberFormatException) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;threads = Integer.parseInt(config?.threads as String)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;This would ignore only a NumberFormatException if it was thrown, if something else was thrown, it would be thrown out of the present block.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;As I expected this is pretty easy to implement in Groovy and after a brief search I couldn't really find anything in the standard libraries or the blogosphere at large.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Here's my implemenation with some example code:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;script src="https://gist.github.com/christo/5441677.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Run this on the live &lt;a href="http://groovyconsole.appspot.com/script/950001"&gt;GroovyConsole&lt;/a&gt; yourself.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;What do you think?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/huzLQe0bTEQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/5894044647607348986/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2013/04/nice-syntax-for-ignoring-exceptions-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5894044647607348986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5894044647607348986?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/huzLQe0bTEQ/nice-syntax-for-ignoring-exceptions-in.html" title="Nice Syntax for Ignoring Exceptions in Groovy" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2013/04/nice-syntax-for-ignoring-exceptions-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUENSXc-fip7ImA9WhNaFUU.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-6588281166142208184</id><published>2013-01-31T10:14:00.000+11:00</published><updated>2013-01-31T10:14:58.956+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-31T10:14:58.956+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="osx" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><title>Activate Remote Disc with Command Line on MAC OSX</title><content type="html">&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;On Macs without a DVD drive (i.e. everything these days) OSX is configured to easily allow use of a "Remote Disc" wherever another machine has enabled DVD/CD sharing.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;The trouble is the "Remote Disc" device was not showing up on my old Mac Mini's (broken DVD drive) and although I can usually avoid it I recently wanted to install something from a DVD. This machine has a DVD drive which is presumably why the option did not show up in the Finder preferences under Sidebar.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Fortunately these preferences can be turned on with a command line as follows:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;defaults write com.apple.NetworkBrowser ODSSupported -bool true&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;defaults write com.apple.NetworkBrowser EnableODiskBrowsing -bool true&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Enter that in the terminal and then &lt;i&gt;Restart Finder&lt;/i&gt;&amp;nbsp;using the &lt;i&gt;Force Quit&lt;/i&gt;&amp;nbsp;menu so the settings take effect.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-SQbqsae8UrY/UQmo2kb3EaI/AAAAAAAAAXY/tYqSgLLXwgM/s1600/Screen+Shot+2013-01-31+at+10.07.45+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Remote Disc icon now shows up in the Finder Sidebar under Devices" border="0" src="http://1.bp.blogspot.com/-SQbqsae8UrY/UQmo2kb3EaI/AAAAAAAAAXY/tYqSgLLXwgM/s1600/Screen+Shot+2013-01-31+at+10.07.45+AM.png" title="Remote Disc icon now shows up in the Finder Sidebar under Devices" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Then you should see the remote disc icon and can mount remotely shared DVDs and CDs. Note that you must also enable DVD/CD sharing on the machine with the disc.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/AY1wSAbRu3k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/6588281166142208184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2013/01/activate-remote-disc-with-command-line.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6588281166142208184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6588281166142208184?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/AY1wSAbRu3k/activate-remote-disc-with-command-line.html" title="Activate Remote Disc with Command Line on MAC OSX" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-SQbqsae8UrY/UQmo2kb3EaI/AAAAAAAAAXY/tYqSgLLXwgM/s72-c/Screen+Shot+2013-01-31+at+10.07.45+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2013/01/activate-remote-disc-with-command-line.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8EQHYzeCp7ImA9WhdbGUU.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-3162611717325700547</id><published>2011-10-19T12:30:00.000+11:00</published><updated>2011-10-19T12:30:01.880+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-19T12:30:01.880+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="stuxnet" /><category scheme="http://www.blogger.com/atom/ns#" term="computer virus" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="hackers" /><title>New Stuxnet Virus Beta Version Discovered</title><content type="html">Stuxnet, the most advanced computer virus ever discovered (by a long way), generally believed to be the first sophisticated example of a virus being used as an international military weapon, just got an upgrade. Most likely from its original authors. &lt;br /&gt;
&lt;br /&gt;
At least, according to &lt;a href="http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_duqu_the_precursor_to_the_next_stuxnet.pdf?API1=100&amp;API2=4166445"&gt;Symantec's analysis&lt;/a&gt; lab where a recently found version has been dissected on the operating table, it looks like the versions found in the wild "in Europe" were targeted test runs of a new version that was partly recompiled from the original source code which has so far remained secret.&lt;br /&gt;
&lt;br /&gt;
The new version carries a different payload to the original Stuxnet which, it is generally believed, was intended to shut down or disrupt Iranian nuclear facilities. In fact the new version's actual payload is pluggable. Modules can be loaded dynamically from a command and control server located in India.&lt;br /&gt;
&lt;br /&gt;
Duqu, as the new version is called, can read and write files, execute programs, capture keyboard input (to collect passwords) and generally open back doors for later use by the unknown attackers.&lt;br /&gt;
&lt;br /&gt;
Check out the great article on this by &lt;a href="http://www.readwriteweb.com/hack/2011/10/new-stuxnet-variants-are-found.php"&gt;Read Write Web&lt;/a&gt; and for a quick recap on the original Stuxnet, check this nicely produced - if creepy - video by Hungry Beast in Australia:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/7g0pi4J8auQ?hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/JQoVvnY90IU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/3162611717325700547/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/10/new-stuxnet-virus-beta-version.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3162611717325700547?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3162611717325700547?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/JQoVvnY90IU/new-stuxnet-virus-beta-version.html" title="New Stuxnet Virus Beta Version Discovered" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/7g0pi4J8auQ/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/10/new-stuxnet-virus-beta-version.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UNRHY-cSp7ImA9WhdbEUw.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-7920155538961319011</id><published>2011-10-09T09:01:00.000+11:00</published><updated>2011-10-09T09:01:35.859+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T09:01:35.859+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Why Programming is Hard</title><content type="html">Programming is not hard because computers are fussy. Programming &lt;i&gt;is&lt;/i&gt; hard, but not for that reason.&lt;br /&gt;
&lt;br /&gt;
There are plenty of pesky surface details in managing programming projects and programmers regularly find themselves burdened with managing tools and configuration details. More so when using Maven (Zing!). &lt;br /&gt;
&lt;br /&gt;
But this is just work. Annoying repetitive work. It's not what makes programming hard.&lt;br /&gt;
&lt;br /&gt;
In fact, programming is hard because there are so few limits to what you can do. &lt;br /&gt;
&lt;br /&gt;
Certainly there are limits to computability, and there are famous problems and algorithms that define the state of the art in computer science, but for many programmers, knowing about these limits is enough to prevent them from pushing up against the hardness of these limits on a regular basis. &lt;br /&gt;
&lt;br /&gt;
Programming is hard because the only limit is our own mental capability. It's always going to appear to be hard. It doesn't matter how smart you are.&lt;br /&gt;
&lt;br /&gt;
If programming is not hard, then you're doing it wrong. Your brain is not being fully utilised? You are being limited by your tools and you need to replace them.&lt;br /&gt;
&lt;br /&gt;
Any time spent dealing with repetitive details, remembering lots of things or even managing huge amounts of code, this time waste generally can be eliminated with more programming! This assumes you're in a postion to change the system enough and perhaps this is where practical project tradeoffs impose. And perhaps "the business" isn't interested in funding improvements to the open source build tool, or switching from Java to Scala. (Double Zing!) But those are not programming problems.&lt;br /&gt;
&lt;br /&gt;
For me, because software is so soft, the goals can be altered subtly, continuously, destructively. Especially when ill-defined. The hardest thing generally comes down to dealing with the confusion of some form of not being clear what I'm trying to do. Unravelling the "is it this or is it that" trail of mental plans that led to the curent state. When this happens in the large, a software project is almost certain to fail.&lt;br /&gt;
&lt;br /&gt;
But maybe that's just me. Do you think programming is not hard? Do you think it's hard for a different reason?&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/zgbiIsRbRgU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/7920155538961319011/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/10/why-programming-is-hard.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/7920155538961319011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/7920155538961319011?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/zgbiIsRbRgU/why-programming-is-hard.html" title="Why Programming is Hard" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/10/why-programming-is-hard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4FQ3g7eyp7ImA9WhdUE0k.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-805984911282032048</id><published>2011-09-30T10:29:00.001+10:00</published><updated>2011-09-30T10:35:12.603+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T10:35:12.603+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="culture" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="language" /><title>32 Bit 64 Bit - All up in your Bitness</title><content type="html">Here's one for the logophiles. English usage nerds. I'm coming out as a bit of a language nerd officially, today, so consider yourself warned.&lt;br /&gt;
&lt;br /&gt;
In film they talk of footage. In transport, haulage. Then there are words like passage, patronage and of course cleavage. At school my friends and I would regularly put "-age" after words. "Foodage?" would mean "are you hungry?". "Skateage" was time spent skateboarding.&lt;br /&gt;
&lt;br /&gt;
So what is it when you want to refer to how many bits something is?&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Vyc9mvw_KF4/ToUM2zO7fuI/AAAAAAAAAQI/dyAeX8ENh-k/s1600/alphabits.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Vyc9mvw_KF4/ToUM2zO7fuI/AAAAAAAAAQI/dyAeX8ENh-k/s1600/alphabits.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
You know your latest laptop is 64 bits and your last one was 32 bits. You know about the 16 bit retro video games like Sonic the Hedgehog and maybe even the "8 bit era" of the Commodore 64. So what do call that ... bitness?&lt;br /&gt;
&lt;br /&gt;
I've heard it called bitness, and tweeted about it a while ago and got some interesting alternatives:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;bitness&lt;/li&gt;
&lt;li&gt;bittage&lt;/li&gt;
&lt;li&gt;bittitude&lt;/li&gt;
&lt;li&gt;bitality&lt;/li&gt;
&lt;li&gt;bitosity&lt;/li&gt;
&lt;li&gt;bitch&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;I guess the last one is a little challenging, linguistically. Maybe German?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Of course I had lots of replies to my tweet saying well you're talking about "word length" or "machine architecture" or other term specific to the usage. Well what if I'm talking about sound samples? "Is that a 16 bit sample or a 32 bit one?". Or colour space in digital imagery? Is that 24 bit colour?&amp;nbsp;Ignoring bittitude is just like saying you can't call it footage, you have to call it film length.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;We need to agree on a word that covers bitness and I think I'm coming down on the side of bittage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Of course this is a question of crucial importance to the world (not - but I did warn you).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;What do you think?&lt;br /&gt;
&lt;br /&gt;
image credit&amp;nbsp;&lt;i&gt;jeffrey on&lt;/i&gt;&lt;a href="http://www.mrbreakfast.com/"&gt;Mr Breakfast&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/Hf1ke2pVVA4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/805984911282032048/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/09/32-bit-64-bit-all-up-in-your-bitness.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/805984911282032048?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/805984911282032048?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/Hf1ke2pVVA4/32-bit-64-bit-all-up-in-your-bitness.html" title="32 Bit 64 Bit - All up in your Bitness" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Vyc9mvw_KF4/ToUM2zO7fuI/AAAAAAAAAQI/dyAeX8ENh-k/s72-c/alphabits.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/09/32-bit-64-bit-all-up-in-your-bitness.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDQn0zcCp7ImA9WhdXEUg.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-3559218647429154629</id><published>2011-08-24T12:04:00.000+10:00</published><updated>2011-08-24T12:04:33.388+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T12:04:33.388+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="usability" /><title>Last Minute Usability</title><content type="html">Usability, like scalability and security cannot be added to a finished product any more than flavour can be added to a finished meal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/zebrafx/2697722496/" title="Delightfully Delicious by Shutter Ferret, on Flickr"&gt;&lt;img "="" alt="Delightfully Delicious" height="500" src="http://farm4.static.flickr.com/3185/2697722496_4d0e4600f3.jpg" width="333" /&gt;&lt;/a&gt;&lt;br /&gt;
delicious photo by &lt;a href="http://www.flickr.com/photos/zebrafx/2697722496/"&gt;Shutter Ferret&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/gMnAgIPci60" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/3559218647429154629/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/08/last-minute-usability.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3559218647429154629?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3559218647429154629?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/gMnAgIPci60/last-minute-usability.html" title="Last Minute Usability" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm4.static.flickr.com/3185/2697722496_4d0e4600f3_t.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/08/last-minute-usability.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGSXc-fyp7ImA9WhZQEUQ.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-5832636137888961389</id><published>2011-04-19T17:07:00.001+10:00</published><updated>2011-04-19T17:10:28.957+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-19T17:10:28.957+10:00</app:edited><title>This is NOT the 80:20 Rule You Are Looking For</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8ePzK5WZnU4/Ta0vccZjCEI/AAAAAAAAANY/HFKSUGPUx8Q/s1600/shb-construction-fly-over_web.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-8ePzK5WZnU4/Ta0vccZjCEI/AAAAAAAAANY/HFKSUGPUx8Q/s1600/shb-construction-fly-over_web.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The 80:20 rule is based on the assumption that there is (often) an 80% (ish) subset of the realised value for a project that only costs 20% of the resources (e.g time) to complete. The rule, actually the &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt;&amp;nbsp;popularised by &lt;a href="http://www.scribd.com/doc/3664882/The-8020-Principle-The-Secret-to-Success-by-Achieving-More-with-Less"&gt;Richard Koch&lt;/a&gt;&amp;nbsp;and others, like all rules of thumb, can be applied incorrectly.&lt;br /&gt;
&lt;br /&gt;
It's not a license for doing things half-arsed.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/rAVxcFedX1o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/5832636137888961389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/04/this-is-not-8020-rule-you-are-looking.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5832636137888961389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5832636137888961389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/rAVxcFedX1o/this-is-not-8020-rule-you-are-looking.html" title="This is NOT the 80:20 Rule You Are Looking For" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-8ePzK5WZnU4/Ta0vccZjCEI/AAAAAAAAANY/HFKSUGPUx8Q/s72-c/shb-construction-fly-over_web.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/04/this-is-not-8020-rule-you-are-looking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBRn09eCp7ImA9WhZREEg.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-6065622284691692268</id><published>2011-04-06T10:19:00.001+10:00</published><updated>2011-04-06T12:19:17.360+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-06T12:19:17.360+10:00</app:edited><title>Automated Testing in Games</title><content type="html">So I clearly upset a few game developers with &lt;a href="http://blog.chromosundrift.com/2011/04/are-game-developers-15-years-behind.html"&gt;my last blog post&lt;/a&gt;. Sorry about that! I do find it a bit surprising how strong some of the emotions were but I probably deserved the beating I got on&amp;nbsp;&lt;a href="http://www.reddit.com/r/programming/comments/giq5c/are_game_developers_15_years_behind_the_rest_of_us/"&gt;reddit&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Second my post was too long and based on my stats, it looks like less that 1.0% of visitors read the article. Unless they can read a couple of thousand words in 20 seconds. Again, that was my fault.&lt;br /&gt;
&lt;br /&gt;
But what was interesting was the responses to my article were pretty clearly divided into two main groups (disagreeing and flaming) and one small group (agreeing):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;You are on crack, we do this stuff (automated testing, etc) better than anyone.&lt;/li&gt;
&lt;li&gt;Game developers are moar awesome than normal developers and unit testing, agile and whatever else you are pushing &lt;b&gt;doesn't apply to the game industry &lt;/b&gt;because of [one of]:&lt;/li&gt;
&lt;ol&gt;&lt;li&gt;How can you unit test games anyway that doesn't even make sense!&lt;/li&gt;
&lt;li&gt;Deadlines. We don't have time.&lt;/li&gt;
&lt;li&gt;Games have hundreds of gigs of assets.&lt;/li&gt;
&lt;li&gt;Console contracts / monetisation models etc.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;I agree that the game industry suffers from some poor tool and process adoption habits.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;Those who use these practices I've been talking about - and to keep things specific I think automated testing is an excellent candidate to focus the debate - these people generally didn't seem too upset with me. In fact I know plenty of game developers in this category.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Those who believe that their game studios are backward generally cannot speak publicly about ANYTHING with the only few exceptions being people who have left the industry, like &lt;a href="http://www.reddit.com/r/programming/comments/giq5c/are_game_developers_15_years_behind_the_rest_of_us/c1nuhri"&gt;munificent&lt;/a&gt;&amp;nbsp;who says:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;I worked at EA for eight years. My running joke-that-was-not-a-joke was that we were twenty years behind the times, but I was probably exaggerating. Fifteen is a pretty good estimate.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;At EA, I think the problem was that the company culture was built like this:&lt;/span&gt;&lt;/div&gt;&lt;ol style="list-style-image: initial; list-style-position: outside; list-style-type: decimal; margin-bottom: 10px; margin-left: 2em; margin-right: 2em; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;A bunch of bedroom hackers in their teens started studios and shipped games ten to twenty years ago.&lt;/span&gt;&lt;/li&gt;
&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Those games got successful, and the studios scaled up. The founders hired young people under them.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;More staff churn. Fresh grads come in, burned out experienced coders go out.&lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;
Munificent went on to qualify and contain his own statements as generalisations (as I did with mine).&lt;br /&gt;
&lt;br /&gt;
Tool and process adoption in development teams is of particular interest to me and I have an ongoing conversation with several developers about the barriers to solving problems they have in this area.&lt;br /&gt;
&lt;br /&gt;
As for the middle group, the question boils down to this:&lt;br /&gt;
&lt;br /&gt;
If automated testing is&amp;nbsp;to some degree&amp;nbsp;not suited to the game industry, then why?&lt;br /&gt;
&lt;br /&gt;
If the answers are things like "How could you test Starcraft 1?" or "You can't test for things like game balance" then I'm sorry that's not a convincing reason! How is it obviously impossible to automatically test Starcraft? I'm sure game developers heavily using automated testing (perhaps even Blizzard) will call bullshit and say "yes you can automatically test it".&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;You Can't Write a Test for X&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I've seen so many of these debates and had them myself since the 90s and I've come to believe slowly by being convinced on a case by case basis that you can test the vast majority of what you think you can't test. I've learned this working in a number of different software projects in different industries.&lt;br /&gt;
&lt;br /&gt;
If the answer is the cost benefit trade-offs on this project lead us to conclude it's not worth doing &lt;i&gt;here&lt;/i&gt;&amp;nbsp;and &lt;i&gt;there&lt;/i&gt;&amp;nbsp;then that's interesting. I'm looking for examples because it may well be a tooling problem.&lt;br /&gt;
&lt;br /&gt;
I'm not saying that everything can be tested automatically, and perhaps the up-front cost of writing the tests is never outweighed by the benefits of having the tests because of game industry specific business features or whatever, but I think many of those things are currently subject to rapid change.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Game Revenue&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
WOW is a good case study. This is the sort of game that couldn't be funded 15 years ago. It plays similarly to the MUDs of the early 90s with a lot better graphics etc. but the market was too small for such a grand vision then. We were on 14.4k modems (or worse) and the number of internet users was tiny. WOW has recurring revenue. This is a feature unlike traditional games but not unlike traditional and modern non-game software.&lt;br /&gt;
&lt;br /&gt;
With ongoing revenue you can fund ongoing development in a more continuous way. Updates can be done more frequently and codebases are encouraged to have longer lifespans. Longer lifespan codebases mean legacy code. There's nothing to encourage you to invest more in automated testing like having to maintain legacy code!&lt;br /&gt;
&lt;br /&gt;
I think these are important factors, driven by the modern consumer internet and the market forces that come from it. These forces push game code towards a scenario where automated testing has a bigger benefit.&lt;br /&gt;
&lt;br /&gt;
That doesn't address the cost side. You might think that the costs of automated testing, particularly unit testing, are fixed. Well in&amp;nbsp;my experience of&amp;nbsp;unit testing for the past 12+ years, the biggest barrier to automated testing is bad design. Here's what munificent (who has since moved on to Google) had to say about that:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;Unit testing would be awesome, but the thing is... you need&amp;nbsp;&lt;em style="font-style: italic; font-weight: normal;"&gt;units&lt;/em&gt;&amp;nbsp;for that. A lot of the game codebases I've seen are closer to "giant hairball" than "collection of components", which isn't amenable to unit testing.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
When I was writing software in the 90s and 80s I never wrote automated tests. I thought testing had to be manual and had to be done when the system was "finished". I don't think that any more. When someone tells me that they have to test that way I ask why and I think I'm right to be suspicious of weak, vague answers.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/B0558Md8m9A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/6065622284691692268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/04/automated-testing-in-games.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6065622284691692268?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6065622284691692268?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/B0558Md8m9A/automated-testing-in-games.html" title="Automated Testing in Games" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/04/automated-testing-in-games.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEHR3gzfSp7ImA9WhZSGUQ.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-2533767291025110801</id><published>2011-04-05T09:56:00.001+10:00</published><updated>2011-04-05T18:03:56.685+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T18:03:56.685+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="games" /><title>Are Game Developers 15 Years Behind The Rest of Us?</title><content type="html">Game developers have a reputation, deserved or not, of being a nasty unwashed rabble with no process, no discipline and no skills outside of graphics performance and playing video games. They shoot from the hip, stay up all night and cut corners to hit the ship date, just like all developers, but they commit these sins to a much greater degree than the average developer, or &lt;a href="http://www.doolwind.com/blog/test-driven-game-development/"&gt;so it goes&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It seems much more common that games developers, as opposed to non-game developers will not have automated unit testing and measure code coverage,&amp;nbsp;&lt;a href="http://gojko.net/2010/05/19/agile-in-a-start-up-games-development-studio/"&gt;adopt agile processes&lt;/a&gt;, use proper source code management systems, have proper backups (!), do code reviews, track bugs and do continuous integration.&lt;br /&gt;
&lt;br /&gt;
Obviously, there are going to be game developers who do follow these engineering practices, but a reputation is a form of stereotype.&lt;br /&gt;
&lt;br /&gt;
So I'm wondering how much truth there is in this or if it's a total myth.&lt;br /&gt;
&lt;br /&gt;
Are game developers really less skilled in the big picture of software development? Are they really 15 years behind the rest of the industry on common best practices? Do their knuckles really drag on the ground? And if so, why?&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vQOZeze26T8/TZfxaPUxDTI/AAAAAAAAANU/5SrrU3keJ9E/s1600/Picture+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://1.bp.blogspot.com/-vQOZeze26T8/TZfxaPUxDTI/AAAAAAAAANU/5SrrU3keJ9E/s320/Picture+2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
I'm no expert in game development but I've always been very interested in it. My &lt;a href="http://gbgames.com/blog/2008/07/test-driven-game-development/"&gt;observation&lt;/a&gt; of a number of game projects and my contact with several game developers suggests there are a number of factors that could contribute to the possibility that game developers do not follow many of these practices.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Games Projects Are Not Like Other Software?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
It seems true that game projects are usually dominated by a media production workflow. Like CG movies, modern &lt;a href="http://www.gameproducer.net/2006/05/26/what-are-aaa-titles/"&gt;AAA megabudget console titles&lt;/a&gt; have teams of artists who churn out gigabytes of high quality graphics and other media. The game project's process and its project management is totally dominated by the needs of this media production. Game project managers are quite often called "producers", the companies that make games often call themselves "studios" and, like movies and music, there are "&lt;a href="http://en.wikipedia.org/wiki/Video_game_publisher"&gt;publishers&lt;/a&gt;" who handle distribution and marketing. Funding models for many game studios likewise seem to follow the movie industry.&lt;br /&gt;
&lt;br /&gt;
Interestingly, indie developers react strongly against this model of game development and argue that better games are the true goal, not bigger budgets.&lt;br /&gt;
&lt;br /&gt;
By contrast, a multi-million dollar non-game software project will have a team where visual design work, including "UX" (user experience) design, often takes up less than 10% of total resources. By contrast, software developers and possibly business analysts (the equivalent of a game designer) will represent the majority. Obviously there is huge variation here, but the contrast is clear.&lt;br /&gt;
&lt;br /&gt;
The basic idea behind this factor is that the division of labour on the project tips the scales towards a different set of best practices. Ones that are, arguably, better for making the cost-benefit tradeoffs and &amp;nbsp;managing the risks of those projects.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Game Developers Don't Know Better?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I've been told that game developers mostly started in their bedroom and their skills have not expanded very far due to lack of exposure. Nobody convinced them to use unit testing, so they don't do it. Game development tends to be a passion. I know &lt;b&gt;lots&lt;/b&gt;&amp;nbsp;of skilled developers outside of game development who started coding all night in their bedroom. But just like they no longer use BASIC or name their variables with expletives, they no longer code games. I'm describing myself too here, I started programming like this.&lt;br /&gt;
&lt;br /&gt;
Another aspect to this is that a lot of self-professed game developers participating in online discussions about this stuff &lt;a href="http://www.youtube.com/user/GyroVorbis#p/u/15/vuzkX2xZxSs"&gt;literally are kids in the bedroom&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
This factor is not very convincing but it seems that the game development sector is separated from other software development and the rule of passion is enforced in game development companies in both directions. Game developers feel strongly that they would never want to work on other projects and game development companies have a strong policy of only hiring people who have a passion for games. If this were true for Insurance companies, they'd never find candidates. People don't get passionate about insurance.&amp;nbsp;Part of the truth of this factor may be that the segregation of game developers is so strongly self-policing.&lt;br /&gt;
&lt;br /&gt;
With some exceptions, there are still not many game development courses run by universities, whereas the materials in the general software engineering and computer science courses are often specifically tuned to non-game industry problems. Think of the number of examples in programming tutorials about e-commerce or payroll!&lt;br /&gt;
&lt;br /&gt;
This lack of tertiary education might not be such a big deal, except the game developers I've spoken to think that it is. They believe that game development is a speciality that needs special courses. Managing the media pipeline mentioned above is often cited as a part of this. As are the fast-moving hardware technology advances such as GPU architectures and the iPhone-style app-store project publishing aspects of the game industry. Business IT courses are only gradually starting to touch on this.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Games Don't Ship Upgrades?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Traditionally, games are shipped in their final state.&lt;br /&gt;
&lt;br /&gt;
Back in the olden days people bought physical media in a physical retail outlet. I'm only partially joking here, clearly that method is quickly disappearing and luminaries like John Carmack have predicted next-generation consoles to cater predominantly to online distribution. Games that require dozens of gigs of media have seemingly had no alternative but to rely on ever increasing optical media densities to ship their bits.&lt;br /&gt;
&lt;br /&gt;
While most games these days seem to have upgrades that are made available online, these are universally free, contain bug fixes only and are staffed minimally. Games do not generally go through the same lifecycle as, say, Microsoft Office where a new version of the same software is released on a regular basis and customers usually pay to upgrade.&lt;br /&gt;
&lt;br /&gt;
The effect of this is many of the practices in non-game software development that pay off only in the long term don't seem to be worth the trouble in the short term.&lt;br /&gt;
&lt;br /&gt;
While this factor may have been true in the past it is becoming increasingly less convincing across the board. With the rapid growth of gaming segments such as MMOGs, casual games and mobile games on always-online devices like iOS and Android phones and tablets, I expect a greater proportion of games to get their revenue from long-running projects that include multiple upgrades or in-game purchases that fund continued development of the software.&lt;br /&gt;
&lt;br /&gt;
When the software is under continual development, as is most pronounced in &lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service"&gt;SaaS&lt;/a&gt;, the payoff for the investment in quality engineering practices becomes more obvious. Games that are developed without such practices, as with non-game projects, will often become bogged in technical debt or suffer disasters that severely impact the businesses behind them.&lt;br /&gt;
&lt;br /&gt;
By contrast, those game development studios that adopt automated unit testing regimes and invest in infrastructure like modern version control systems (e.g. Git, Mercurial) and Continuous Integration (CI) not to mention bug tracking and potentially things like code review, have a potential competitive advantage that can lower the cost of development over time.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Games Can't Be Unit Tested?&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've heard several game developers, state that game development is different in a technical sense such that &lt;a href="http://stackoverflow.com/questions/2418845/is-unit-testing-viable-in-game-programming"&gt;unit testing (and other related engineering practices) are not suited to game systems&lt;/a&gt;. While, when pressed, these people will concede that certain parts of game development are &lt;a href="http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development"&gt;like any other software&lt;/a&gt; in their suitedness to unit testing etc. &lt;a href="http://forums.elementalgame.com/395373"&gt;they argue that there is a fundamental mismatch&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;To be frank I find this argument to be just as weak as it is in non-game development projects. I'm not saying there is nothing that can't be unit tested because that's not even the question. The question is whether the effort spent on unit testing is outweighed by benefits derived. The trouble is that the vast majority of "things that can't be unit tested" that I have been shown over the years are really just design problems in the code that only become apparent when a unit test is attempted. Making a small change to the production code fixes this problem. For those developers (both inside and outside game development) who have never gained the benefit of a good regression test suite, the idea of changing the production code to make it easier to test sounds like pure madness.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Of course &lt;a href="http://c2.com/cgi/wiki?ExtremeProgrammingForGames"&gt;it's not pure madness&lt;/a&gt;, it's just the scientific method.&lt;/div&gt;&lt;div style="font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Game Projects Are Too Hardcore For That Crap&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-size: x-large;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I've heard this one from game developers who, let's just say, do their bit to perpetuate the stereotype of the macho code-all-night-eating-pizza-guzzling-caffeine-optimising-the-engine dude. All nighters are not generally seen as sustainable by most enlightened teams I've worked with and whenever it's done it's seen as fail. Fail happens. Heroic efforts are sometimes necessary. And if you feel that the burn out that results is a badge of honour then it can be kind of fun. It's like the pride an extreme sports junkie has of their broken limbs and &lt;a href="http://www.flickr.com/photos/75347665@N00/4434470253/"&gt;sick x-rays&lt;/a&gt;. We all know this is true because most of us have been there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Like a "&lt;a href="http://www.youtube.com/watch?v=9wqIZoI7Gz0"&gt;breakdancing battle&lt;/a&gt;" I remember many schoolyard bragging sessions about how many sprites I could animate on screen at once. My friends challenged me to make more impressive graphics than them and I relished the challenge. I believed in my ultimate mental power over the machine. I felt invincible and omnipotent in my coding. And when I look back on the code I wrote then I can barely read it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Perhaps it's optimal and can't be improved. Only half of that is certain. It can't be changed at all. I'd rather disassemble a binary than read my own teenage source code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;But while it may or may not be fun, it's not sustainable or&amp;nbsp;profitable, except in very narrow windows of opportunity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;To some game developers, game development is like going to war. You have to be tough like a soldier and all the props and niceties of civilian life (unit testing, source control) are luxuries you don't get on the battlefield of a game project. There's no time. There's too much chaos and that goes with the territory. Game projects necessarily have&amp;nbsp;grueling&amp;nbsp;schedules because they must to survive. It's a tough market and if you're not prepared to wade through the swamp in combat boots and 30kg packs then you're not cut out for game development and you should go back to the unicorn and rainbow world of civilian development because you are soft.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I think these guys (invariably this is a guy thing) are delusional. They're living in their own game world.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;This sort of attitude will convince starry-eyed coder kids of who has the most chest hair, but it seems to blind some game developers to the simple fact that games are made of the same material as all software: source code. Software practices are solutions to a common problem: a faster stream of features with an acceptable level of performance and an acceptable defect density, not to mention making the right direction and priority decisions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In the past I would have been more convinced by arguments about the absolute need in games for hyper-performant code and crazy schedules but these days I think those things are less true. As with non-game development before it, the necessity of maximal performance is becoming a marginal one, suited to fewer projects less of the time. Games used to win success on technology and now this happens less than ever.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The online games markets, especially so-called "casual games" have &lt;a href="http://www.nytimes.com/2010/07/25/business/25zynga.html?_r=1"&gt;grown phenomenally&lt;/a&gt; in recent years such that established games companies are taking notice of new generation companies that understand the importance of community, longevity, and viral distribution channels like facebook.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
I think we'll see more legacy game code.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;All of this suggests that the majority of game companies are less and less like the mega hit tech-driven games of the past few decades and a larger part of the growing gaming market is in projects that could easily benefit from decent software development practices. Maintainable code, automated test coverage etc.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Small Projects?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;There are a lot of small software projects in the games industry. Small iPhone projects probably don't have enough bugs to warrant industrial strength bug tracking, especially when the whole team is sitting around one table and the duration of the project is less than 6 weeks.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Several of the engineering practices I've mentioned seem to better suit larger teams and projects, releasing versions on a regular basis. Small projects that aren't like this arguably find benefits of these practices are reduced. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Absolutely I consider this to be a relevant factor for code review and sophisticated bug tracking, but I think more of the reason for small game projects not having source control or unit testing are questionable.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Flash, for example, very popular for online games, strikes me as one of the worst platforms to integrate source control and unit testing into. I've done some flash programming and I just gave up and went with the flow. No unit tests and no source control.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I survived.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;However if I was going to write games in Flash on an ongoing basis, I would find the flashunit framework &lt;a href="http://techblog.julianhidalgo.com/2011/02/03/unit-testing-a-flash-game-part-i-the-challenge/"&gt;I'm sure exists&lt;/a&gt;, and if it doesn't I would build it. I'm vaguely aware of methods in Flash and ActionScript to solve source control issues like merging and you can bet that I would prioritise getting that stuff working. If I had a team working on a MMOG in Flash, I would make sure I put in a Continuous Integration engine, probably &lt;a href="http://www.atlassian.com/software/bamboo/"&gt;Bamboo&lt;/a&gt;&amp;nbsp;and not just because I work for Atlassian.&amp;nbsp;After saving my arse several times I'm convinced these tools and practices are worth the trouble to set up. Hopefully my fellow game developer team mates would not be resistant.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;What Do You Think?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I'm not presenting this stuff about game developers as fact, and I'm making a lot of generalisations, a lot of assumptions. I'm not trying to insult any game developers, in fact I'm interested in learning more about game development, especially on the tooling, process and architecture side.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Am I being unfair? Am I out of date? Am I wrong?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Feedback, flames and factual corrections are most welcome.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/3Fq8rXGpJnc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/2533767291025110801/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2011/04/are-game-developers-15-years-behind.html#comment-form" title="32 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/2533767291025110801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/2533767291025110801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/3Fq8rXGpJnc/are-game-developers-15-years-behind.html" title="Are Game Developers 15 Years Behind The Rest of Us?" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-vQOZeze26T8/TZfxaPUxDTI/AAAAAAAAANU/5SrrU3keJ9E/s72-c/Picture+2.png" height="72" width="72" /><thr:total>32</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2011/04/are-game-developers-15-years-behind.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIFQn88eyp7ImA9Wx9SFkQ.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-3530569960159392362</id><published>2010-12-07T15:01:00.000+11:00</published><updated>2010-12-07T15:01:53.173+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T15:01:53.173+11:00</app:edited><title>Guy Steele Disassembles 40 Year Old Punchcard</title><content type="html">Just a quick note to let all of you know who are not currently at the YOW! 2010 conference, some of the fun that you're missing out on.&lt;br /&gt;
&lt;br /&gt;
Firstly it must be said that this is a world-class conference. The calibre of speakers is amazing. Dave Thomas and his team have done an incredible job of drawing this talent to Australia for this meeting of minds. I'll be posting more about this stuff later, but for now, here's a teaser photo from one of my favourite sessions, Guy Steele's "&lt;a href="http://yowconference.com.au/brisbane/events_tracks/event_details.html?eventId=2715"&gt;How to Think about Parallel Programming--Not!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_74NHueaBr9E/TP2wuIh0BzI/AAAAAAAAAMc/7NPYkXxOKCs/s1600/IMG_0327.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_74NHueaBr9E/TP2wuIh0BzI/AAAAAAAAAMc/7NPYkXxOKCs/s400/IMG_0327.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In this photo, Guy is disassembling his own 40 year old self-modifing code, starting with a punch card and an old manual (which he admitted to still owning). He demonstrates his deserved bare-metal hacker street cred. Then half-way through the talk he shifts gears into real parallel programming in &lt;a href="http://en.wikipedia.org/wiki/Fortress_%28programming_language%29"&gt;Fortress&lt;/a&gt;. I was quite exhausted after that one!&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/bw8ceZWGAts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/3530569960159392362/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/12/guy-steele-disassembles-40-year-old.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3530569960159392362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3530569960159392362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/bw8ceZWGAts/guy-steele-disassembles-40-year-old.html" title="Guy Steele Disassembles 40 Year Old Punchcard" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_74NHueaBr9E/TP2wuIh0BzI/AAAAAAAAAMc/7NPYkXxOKCs/s72-c/IMG_0327.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/12/guy-steele-disassembles-40-year-old.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cCQns8cSp7ImA9Wx5RFkw.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-8374281094361958954</id><published>2010-08-24T10:51:00.000+10:00</published><updated>2010-08-24T10:51:03.579+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-24T10:51:03.579+10:00</app:edited><title>Computer Science Is All About Windows 7 For Dummies</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_74NHueaBr9E/THMXaW2ROvI/AAAAAAAAAK8/8RsktJvXFtg/s1600/computer-science.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_74NHueaBr9E/THMXaW2ROvI/AAAAAAAAAK8/8RsktJvXFtg/s320/computer-science.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/c1_IAS_E4PM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/8374281094361958954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/08/computer-science-is-all-about-windows-7.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/8374281094361958954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/8374281094361958954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/c1_IAS_E4PM/computer-science-is-all-about-windows-7.html" title="Computer Science Is All About Windows 7 For Dummies" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_74NHueaBr9E/THMXaW2ROvI/AAAAAAAAAK8/8RsktJvXFtg/s72-c/computer-science.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/08/computer-science-is-all-about-windows-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMQH8yfSp7ImA9Wx5RFU8.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-3403984564444809141</id><published>2010-08-23T11:48:00.000+10:00</published><updated>2010-08-23T11:48:01.195+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-23T11:48:01.195+10:00</app:edited><title>Next Android OS Codename: Apple Pie</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_74NHueaBr9E/THHRODiIIEI/AAAAAAAAAK0/ogxO11AoFvc/s1600/apple-pie.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_74NHueaBr9E/THHRODiIIEI/AAAAAAAAAK0/ogxO11AoFvc/s320/apple-pie.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;cc photo by http://www.flickr.com/photos/mattmendoza&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
OMG Google has to do this.&lt;br /&gt;
&lt;br /&gt;
With the Android OS versions getting code names like cupcake, éclair and froyo (which is, evidently, a word), the dessert namespace provides an opportunity too good to miss. Apple Pie. OM NOM NOM.&lt;br /&gt;
&lt;br /&gt;
Of course the logo should be a white stylised piece of apple pie with one bite out of it. Or perhaps a rainbow version?&lt;br /&gt;
&lt;br /&gt;
People, Google fanboys and Apple haters mostly, desperately want Android to DUHSHTROY iPhone in the market. Personally I don't think this is very likely. I know there are a lot of Android devices out now - more than iPhone I hear - but the fragmentation is really starting to happen. Just like &lt;a href="http://en.wikipedia.org/wiki/MSX"&gt;MSX&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The code name of Apple Pie would trump the Eclipse Foundation's latest IDE version naming stunt, &lt;a href="http://en.wikipedia.org/wiki/Helios"&gt;Helios&lt;/a&gt;, Ancient Greek for &lt;a href="http://en.wikipedia.org/wiki/Sun_Microsystems"&gt;Sun&lt;/a&gt;, aka their competitor recently bought by Oracle who is now suing.. Google. Keeping up?&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/fAuQ_yloIgI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/3403984564444809141/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/08/next-android-os-codename-apple-pie.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3403984564444809141?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3403984564444809141?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/fAuQ_yloIgI/next-android-os-codename-apple-pie.html" title="Next Android OS Codename: Apple Pie" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_74NHueaBr9E/THHRODiIIEI/AAAAAAAAAK0/ogxO11AoFvc/s72-c/apple-pie.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/08/next-android-os-codename-apple-pie.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkADQHc4eyp7ImA9Wx5REkU.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-6111649208640058623</id><published>2010-08-20T15:06:00.001+10:00</published><updated>2010-08-20T15:06:11.933+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-20T15:06:11.933+10:00</app:edited><title>Why Bookshops Always Put Computer Books With Business</title><content type="html">&lt;div class='posterous_autopost'&gt;&lt;p&gt;It's near-universal. Especially for those bookshops with large self-help or mysticism and occult sections and no science section. Computer books are put (and often intermingled with) business books.&lt;/p&gt;  &lt;p&gt;Why?&lt;/p&gt;  &lt;p&gt;To me it's like always putting cycling with business. Or painting.&lt;/p&gt;  &lt;p&gt;Yes computers are used heavily in business, but they're used just as heavily in music or movies or writing.&lt;/p&gt;  &lt;p&gt;When I look for programming books, sometimes I'm interested in the topics that combine businesses (or the needs of an organisation) with programming - generally topics like how to translate the needs of project sponsors into deliverable systems. But way more often than that I'm interested in topics that concern the creation of software using specific techniques, paradigms, or languages and frameworks.&lt;/p&gt;  &lt;p&gt;I like programming. I would do it more on the weekends if I had time. I don't think it has anything in common with business but it seems that many non-technically minded people assume that the only reason someone would want to do programming is for business purposes.&lt;/p&gt;  &lt;p&gt;Well plenty of people do it for fun. Just like cycling or painting.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://chromosundrift.posterous.com/why-bookshops-always-put-computer-books-with"&gt;chris mountford&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/ywkSna0MTnM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/6111649208640058623/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/08/why-bookshops-always-put-computer-books.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6111649208640058623?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6111649208640058623?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/ywkSna0MTnM/why-bookshops-always-put-computer-books.html" title="Why Bookshops Always Put Computer Books With Business" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/08/why-bookshops-always-put-computer-books.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUANSHc_fSp7ImA9WxFbE08.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-2044156652460361232</id><published>2010-07-05T21:03:00.000+10:00</published><updated>2010-07-05T21:03:19.945+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-05T21:03:19.945+10:00</app:edited><title>Apple: I Was Wrong, Here's Your $200 Back</title><content type="html">Previously on Chris Mountford's blog...&lt;br /&gt;
&lt;br /&gt;
Genius: "Oh um ya that battery that split open like a stepped-on-banana.. that's expected behaviour"&lt;br /&gt;
Me: "You're kidding me? Should I expecting all other Apple products to do this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest is, thanks to Mr Anonymous, Paul M and legion others like them, is that I have been refunded my $200 because, as a reasonable person would assume, the extended warranty DOES cover such explosive situations.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/OELrAjr1ptU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/2044156652460361232/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/07/apple-i-was-wrong-heres-your-200-back.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/2044156652460361232?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/2044156652460361232?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/OELrAjr1ptU/apple-i-was-wrong-heres-your-200-back.html" title="Apple: I Was Wrong, Here's Your $200 Back" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/07/apple-i-was-wrong-heres-your-200-back.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEAQnk7fSp7ImA9WxFUF08.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-1488567518662392191</id><published>2010-06-28T21:30:00.000+10:00</published><updated>2010-06-28T21:30:43.705+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-28T21:30:43.705+10:00</app:edited><title>Exploding Macbook Pro Battery = "Expected Behaviour"</title><content type="html">After booking my appointment with a Genius at the Genius Bar in Sydney's city Apple Store, waiting in line dutifully holding my AppleCare extended warranty stuff, packing what I thought would be an iron-clad case of Exploding Battery Obviously Defective Here's A New One Sir, I was rudely awoken by the facts.&lt;br /&gt;
&lt;br /&gt;
Apple's official position, according to the lips of two courteous Genii, is that exploding is &lt;b&gt;"expected behaviour".&amp;nbsp; &lt;/b&gt;The battery was bought with the computer in June 2008 (exactly 2 years ago) and it had been sitting for a couple of months looking like this before I got around to taking it in:&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_74NHueaBr9E/TCh9qYOC7ZI/AAAAAAAAAKk/V_dxEBumdQU/s1600/explodo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://2.bp.blogspot.com/_74NHueaBr9E/TCh9qYOC7ZI/AAAAAAAAAKk/V_dxEBumdQU/s400/explodo.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Well it's not behaviour I ever expected. And I say this with some experience with batteries, even lithium ion rechargeable batteries, that ranges roughly two fashionable Genius lifespans or near enough, judging by their fresh-faced appearance. I've never had anything like this.&lt;br /&gt;
&lt;br /&gt;
I think the elephant in the room is that while the fine print may say that the extended warranty doesn't cover batteries, this is a major manufacturing defect and Apple know it. I was virtually told as much as I was assured my 1 year old Macbook Pro with the built-in battery would not suffer the same fate since it is a non-nickel based lithium polymer construction. I was invited to attend the Apple battery page: &lt;a href="http://www.apple.com/batteries/"&gt;http://www.apple.com/batteries/&lt;/a&gt; which keen observers will note contains nothing of Apple's expectation of explosions.&lt;br /&gt;
&lt;br /&gt;
Looking further the Apple &lt;a href="http://www.apple.com/batteries/replacements.html"&gt;battery replacement page&lt;/a&gt; says:&lt;br /&gt;
&lt;blockquote&gt;However the AppleCare Protection Plan for notebook computers does not cover  batteries that have failed or are exhibiting diminished capacity except  when the failure or diminished capacity is the result of a manufacturing  defect.&lt;/blockquote&gt;Right so, who says this is not a manufacturing defect? Shouldn't a manufacturer's expectations about common failure cases be published on thier main information page? If it really is not a manufacturing defect where is the information about this expected behaviour on their written material?&lt;br /&gt;
&lt;br /&gt;
The battery still holds a charge as demonstrated by the indicator lights on the battery. Also, although it doesn't properly fit the case due to it's unsightly bulge, it was powering the laptop fine until I took it out. In fact the reason I did so was because the bulge was pushing the back of the mouse button, preventing it from clicking. None of this stuff appeared to be news to the Geniuses. Just another exploding battery.&lt;br /&gt;
&lt;br /&gt;
So $199 later, I purchase a new battery which, I carefully  confirmed, &lt;i&gt;would&lt;/i&gt; be expected to explode in roughly 300 power cycles  (which I assured the young Genius my existing battery had not  experienced).&lt;br /&gt;
&lt;br /&gt;
Has anyone else had luck in getting their battery replaced as a part of Apple extended warranty? I see plenty of talk to this end:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.appledefects.com/?cat=27"&gt;http://www.appledefects.com/?cat=27&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://discussions.apple.com/thread.jspa?threadID=909217"&gt;http://discussions.apple.com/thread.jspa?threadID=909217&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.tuaw.com/2006/12/25/battle-of-the-battery-bulge/"&gt;http://www.tuaw.com/2006/12/25/battle-of-the-battery-bulge/&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/ZM8FRbWdwZ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/1488567518662392191/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/06/exploding-macbook-pro-battery-expected.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/1488567518662392191?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/1488567518662392191?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/ZM8FRbWdwZ4/exploding-macbook-pro-battery-expected.html" title="Exploding Macbook Pro Battery = &quot;Expected Behaviour&quot;" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_74NHueaBr9E/TCh9qYOC7ZI/AAAAAAAAAKk/V_dxEBumdQU/s72-c/explodo.JPG" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/06/exploding-macbook-pro-battery-expected.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEARH0zeCp7ImA9WxBbF08.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-7143624000344574034</id><published>2010-03-16T16:23:00.003+11:00</published><updated>2010-03-16T17:57:25.380+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T17:57:25.380+11:00</app:edited><title>Aussie Censorship Error</title><content type="html">As a father of three young kids the thought of child porn disgusts me. &lt;br /&gt;
&lt;br /&gt;
If only an Internet filter imposed by the government would be effective against it. &lt;br /&gt;
&lt;br /&gt;
As a professional software engineer I can't help but acknowledge that the proposed filter will be 100% ineffective at stopping child pornography and that hundreds of millions of dollars could be better spent elsewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_74NHueaBr9E/S58WZMxRhDI/AAAAAAAAAJA/XaIHrxWVtic/s1600-h/error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="97" src="http://3.bp.blogspot.com/_74NHueaBr9E/S58WZMxRhDI/AAAAAAAAAJA/XaIHrxWVtic/s400/error.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://www.efa.org.au/category/censorship/mandatory-isp-filtering/"&gt;proposed censorship by senator Steven Conroy&lt;/a&gt; does not propose to stop most material that is unsuitable for children and it does not propose to stop the most common channels of illegal content on the Internet (bit torrents).&lt;br /&gt;
&lt;br /&gt;
Finally any VPN will effectively go straight through the filter so anyone who wishes to can circumvent it using current technology.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/fr0m9oHMXjo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/7143624000344574034/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/03/aussie-censorship-error.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/7143624000344574034?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/7143624000344574034?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/fr0m9oHMXjo/aussie-censorship-error.html" title="Aussie Censorship Error" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_74NHueaBr9E/S58WZMxRhDI/AAAAAAAAAJA/XaIHrxWVtic/s72-c/error.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/03/aussie-censorship-error.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQAQ3g9cSp7ImA9WxBbFkg.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-8242260255494007090</id><published>2010-03-15T22:33:00.003+11:00</published><updated>2010-03-15T22:59:02.669+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T22:59:02.669+11:00</app:edited><title>Titanium Reinforced Self</title><content type="html">For those of you I know personally, you've probably already seen my impressive X-rays, but for the rest of you I'm announcing that I have recently had cause to become hyper human.&lt;br /&gt;&lt;br /&gt;Not content with collar bones constructed of mere bone matter, which I ably demonstrated can break with the aid of a single mountain bike and a spot of bad luck, I opted for hyper human augmentation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_74NHueaBr9E/S54eIFIsIwI/AAAAAAAAAH0/EhDAC6pXKKc/s1600-h/IMG_0713.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_74NHueaBr9E/S54eIFIsIwI/AAAAAAAAAH0/EhDAC6pXKKc/s400/IMG_0713.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5448825723331289858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I can wholeheartedly recommend the procedure should you be advised that it's necessary for adequate bone knitting. It completely stopped the disconcerting clunk that occurred in my shoulder on certain movements for the 36 hours prior to surgery. &lt;br /&gt;&lt;br /&gt;The only down side was, apart from the usual recovery and healing process, I discovered much to my surprise, morphine is quite disgusting. It certainly blankets almost all pain but at the expense of almost all cognitive ability. &lt;br /&gt;&lt;br /&gt;Further, morphine causes the sensation of hanging upside down in a vat of warm butter after having skulled a salmon milkshake. With an automated IV drip, that feeling was only a button press away should I become convinced that it was better than post op pain.&lt;br /&gt;&lt;br /&gt;Now I'm back on the bike but my shoulder does not have 100% strength or mobility and my muscles feel wasted and weak all over. So if you happen to pass me on a hill, this is going to be my standing excuse.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/P_ayvMdECj8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/8242260255494007090/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/03/titanium-reinforced-self.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/8242260255494007090?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/8242260255494007090?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/P_ayvMdECj8/titanium-reinforced-self.html" title="Titanium Reinforced Self" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_74NHueaBr9E/S54eIFIsIwI/AAAAAAAAAH0/EhDAC6pXKKc/s72-c/IMG_0713.JPG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/03/titanium-reinforced-self.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YBQHs7eSp7ImA9WxBbEU0.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-3255258767954315775</id><published>2010-03-09T14:12:00.003+11:00</published><updated>2010-03-09T14:25:51.501+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-09T14:25:51.501+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cowbell" /><category scheme="http://www.blogger.com/atom/ns#" term="groovy" /><title>More Cowbell in One Line of Groovy</title><content type="html">Sometimes you just need &lt;a href="http://video.google.com/videosearch?q=more%20cowbell&amp;oe=utf-8&amp;rls=org.mozilla:en-GB:official&amp;client=firefox-a&amp;um=1&amp;ie=UTF-8&amp;sa=N&amp;hl=en&amp;tab=wv#"&gt;more cowbell&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It is for those times that I wrote this:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;groovy -e 's=javax.sound.midi.MidiSystem.synthesizer;s.open();c=s.channels[9];c.noteOn 56,99;Thread.sleep 99;c.noteOff 96;s.close()'&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;I do often find myself needing more cowbell, such as when invoking a maven comannd which inevitably downloads the internet, like &lt;span style="font-weight:bold;"&gt;mvn clean&lt;/span&gt;. So get this puppy on your PATH and you can do this:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;mvn clean &amp;&amp; cowbell&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;...for an audio cue that tells you the internet has been successfully downloaded with a modicum of funk.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/0XEfAIEIK-Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/3255258767954315775/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/03/more-cowbell-in-one-line-of-groovy.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3255258767954315775?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3255258767954315775?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/0XEfAIEIK-Y/more-cowbell-in-one-line-of-groovy.html" title="More Cowbell in One Line of Groovy" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/03/more-cowbell-in-one-line-of-groovy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINQX49eSp7ImA9WxBVFkg.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-5164531357571616409</id><published>2010-02-20T20:11:00.003+11:00</published><updated>2010-02-20T20:19:50.061+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-20T20:19:50.061+11:00</app:edited><title>Ali G Joins Github Team</title><content type="html">I was browsing a Github hosted project, &lt;a href="http://github.com/mangos/mangos/network"&gt;Mangos&lt;/a&gt; recently and attempted to check out the network graph visualisation of the clones of this open source World of Warcraft server.&lt;br /&gt;&lt;br /&gt;Moments later I learned that there are too many branches on the graph for the flash visualisation to render. The following error message is shown:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Sorry, this repository's graph is currently too logical awesome to display. We're working on optimizing it. Check back soon.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Which leaves one wondering just how much is the right amount of logical awesome. &lt;br /&gt;&lt;br /&gt;Clearly the only conclusion is that the Github team has been joined by a celebrity error message writer, Ali G:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_74NHueaBr9E/S3-o5h99EkI/AAAAAAAAAG8/jDFGE4YsZbA/s1600-h/alig_logical_awesome.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 397px;" src="http://1.bp.blogspot.com/_74NHueaBr9E/S3-o5h99EkI/AAAAAAAAAG8/jDFGE4YsZbA/s400/alig_logical_awesome.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5440252581211083330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Booyakasha!&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/b54mXuJy4c8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/5164531357571616409/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/02/ali-g-joins-github-team.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5164531357571616409?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5164531357571616409?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/b54mXuJy4c8/ali-g-joins-github-team.html" title="Ali G Joins Github Team" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_74NHueaBr9E/S3-o5h99EkI/AAAAAAAAAG8/jDFGE4YsZbA/s72-c/alig_logical_awesome.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/02/ali-g-joins-github-team.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEENR3o4fCp7ImA9WxBWGEg.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-5653536930923328978</id><published>2010-02-11T11:47:00.004+11:00</published><updated>2010-02-11T12:44:56.434+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-11T12:44:56.434+11:00</app:edited><title>A Tale of Three Buzzes</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_74NHueaBr9E/S3NgvIySQ6I/AAAAAAAAAG0/PomsunslYds/s1600-h/Picture+3.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 252px;" src="http://4.bp.blogspot.com/_74NHueaBr9E/S3NgvIySQ6I/AAAAAAAAAG0/PomsunslYds/s400/Picture+3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436795538094834594" /&gt;&lt;/a&gt;&lt;br /&gt;Google's Buzz is causing a stink. It's the third social network which is called "Buzz" to come out recently. All have the Twitter model of microblogging (or multicast chat) with an asymmetric social graph (people decide who they follow but not who follows them).&lt;br /&gt;&lt;br /&gt;Yahoo Buzz has been out for at least a year on &lt;a href="http://buzz.yahoo.com/"&gt;buzz.yahoo.com&lt;/a&gt; and predicatably, Yahoo and their new overlords Microsoft are going &lt;a href="http://money.cnn.com/2010/02/09/technology/google_buzz_yahoo_microsoft/"&gt;batshit insane&lt;/a&gt; about this.&lt;br /&gt;&lt;br /&gt;Oh really Microsoft? You've got a product and a bigger competitor comes along and uses your idea? And they use the generic term to name it? That must be annoying. The worm has turned. &lt;br /&gt;&lt;br /&gt;And the drones at AT&amp;T launched &lt;a href="http://buzz.com/"&gt;buzz.com&lt;/a&gt; about 6 months ago. Less said about that the better. In fact you can probably safely forget them right now.&lt;br /&gt;&lt;br /&gt;So now we'll all be looking forward to the shakedown. There are too many players.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_74NHueaBr9E/S3NXbRaBNQI/AAAAAAAAAGs/WX9SciPsiik/s1600-h/Picture+2.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 358px; height: 400px;" src="http://4.bp.blogspot.com/_74NHueaBr9E/S3NXbRaBNQI/AAAAAAAAAGs/WX9SciPsiik/s400/Picture+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436785301206938882" /&gt;&lt;/a&gt;I think the winner will be the service that provides enough features (not necessarily the most, Facebook) with the best integration with everything else. Twitter so far has been successful at crowdsourcing the integration work with the massive proliferation of Twitter clients and "tweet this" buttons like &lt;a href="http://tweetmeme.com/"&gt;Tweetmeme&lt;/a&gt;. Can Yahoo/Microsoft get this traction? &lt;br /&gt;&lt;br /&gt;Google already has a great integration story. When the hundreds of millions of monthly GMail users hit their inbox now, they will be able to thread together lots of their google software that produces socialisable events. Now the google suite can buzz.&lt;br /&gt;&lt;br /&gt;Perhaps it's just me but the one image I have about Buzz is those hotted up cars with the ultra-loud stereo systems and the monsterous bass frequencies causing every bolt in the chassis to loosen and the number plate to buzz.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/0Aexw68NCK8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/5653536930923328978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/02/tale-of-three-buzzes.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5653536930923328978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5653536930923328978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/0Aexw68NCK8/tale-of-three-buzzes.html" title="A Tale of Three Buzzes" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_74NHueaBr9E/S3NgvIySQ6I/AAAAAAAAAG0/PomsunslYds/s72-c/Picture+3.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/02/tale-of-three-buzzes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAGRn04cCp7ImA9WxBWF0w.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-3466331008900002189</id><published>2010-02-09T22:47:00.006+11:00</published><updated>2010-02-09T23:15:27.338+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-09T23:15:27.338+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>China Hackers Update: Arrests and Details</title><content type="html">It is inevitable after the Google hacks, as they are known, that China responds by showing its international business partners that they do not condone hacking.&lt;br /&gt;&lt;br /&gt;China Daily reports that &lt;a href="http://www.chinadaily.com.cn/china/2010-02/08/content_9440667.htm"&gt;the biggest hacker training site has been shut down&lt;/a&gt;. via &lt;a href="http://www.readwriteweb.com/archives/chinese_black-hat_hackers_arrested.php?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+readwriteweb+%28ReadWriteWeb%29&amp;amp;utm_content=Google+Reader"&gt;RWW&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"I could download trojan programs from the site which allowed me to control other people's computers. I did this just for fun but I also know that many other members could make a fortune by attacking other people's accounts," said a 23-year-old member of Black Hawk Safety Net in Nanjing of East China's Jiangsu province, who asked to remain anonymous.&lt;br /&gt;&lt;/blockquote&gt;and&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="width: 630px;"&gt;They seized nine Web servers, five computers and one car, and shut down all the sites involved in the case, according to the provincial public security department.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;So there you go Google - nothing to worry about. The "provincial public security department" got the baddies. Carry on.&lt;br /&gt;&lt;br /&gt;Of course there's no reported link with what is now clearly a much larger and more sophisticated program of industrial espionage than previously thought as reported in detail by &lt;a href="http://www.wired.com/threatlevel/2010/02/apt-hacks/"&gt;wired magazine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The salient points of the wired article are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    The hacks have compromised thousands of companies, not just 37 as previously reported.&lt;/li&gt;&lt;li&gt;Most of the compromises are currently still active and law enforcement has been contacting companies to let them know they have been compromised.&lt;/li&gt;&lt;li&gt;The exploit was an IE 6 security flaw that was first reported to Microsoft by an Israeli researcher in September 2009 but which remained unpatched for months. ("0-day")&lt;/li&gt;&lt;li&gt;The attack profile include multiple-year-long occupation of companies' computer systems and typically involved hidden siphoning of large amounts of private data including email, documents, etc. This is in contrast to the smash and grab techniques more common in the past.&lt;/li&gt;&lt;li&gt;Existing security software (like antivirus software) is not able to detect this attack profile or the malware used to initiate it.&lt;/li&gt;&lt;li&gt;The full extent of data theft will never be known.&lt;/li&gt;&lt;li&gt;The goal of the attacks appears to be coroporate and national espionage.&lt;/li&gt;&lt;li&gt;The hackers have levelled up.&lt;/li&gt;&lt;li&gt;The trail goes dead in Taiwan where the data was siphoned to and China where the spear phishing attacks were initiated from.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Now it really feels like we're living in a Neal Stephenson novel.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/1o8y8pqvtCA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/3466331008900002189/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2010/02/china-hackers-update-arrests-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3466331008900002189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/3466331008900002189?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/1o8y8pqvtCA/china-hackers-update-arrests-and.html" title="China Hackers Update: Arrests and Details" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2010/02/china-hackers-update-arrests-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUDQHcyeip7ImA9WxBTFEk.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-6926815213958395532</id><published>2009-12-10T20:36:00.004+11:00</published><updated>2009-12-10T22:57:51.992+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-10T22:57:51.992+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="startups" /><title>Build to Flip vs Organic Growth</title><content type="html">In this world of GFC hell (is it over yet?) the biz buzz is "Organic Growth". That is to say business owners who are looking forward to the challenge of entrepreneurship in a downturn are standing as proud adovocates for a refreshing change to the mentality of the bubble and the zero profit, high valuation world of two point oh dot coms.&lt;br /&gt;&lt;br /&gt;It's refreshing because the &lt;a href="http://www.businessweek.com/magazine/content/06_33/b3997002.htm"&gt;business press is usually obsessed with the crazy valuations&lt;/a&gt;. A sale price with more zeros means more heroes. Examples abound. Twitter's recent funding round reportedly topped $100,000,000. That would be nine zeros. Profit is currently just zero. You'd think by now they could afford to give us more than 140 characters.&lt;br /&gt;&lt;br /&gt;Clearly people building businesses the traditional way, you know, charging a price (stay with me) for a product or service and growing revenues slowly over years, those people feel some justification in presenting themselves as a sane alternative to a world gone mad. &lt;a href="http://blogs.atlassian.com/rebelutionary/archives/2006_09.html"&gt;Atlassian CEO Mike Cannon-Brookes&lt;/a&gt; has ranted exactly this in the past.&lt;br /&gt;&lt;br /&gt;With financial systems in the toilet due to excessive valuation of flaky assets, this can seem justified as much as ever. Indeed my own aspirations for a new business incorporate this sane model of organic growth. I know it could take longer.&lt;br /&gt;&lt;br /&gt;It seems that the venture capital (VC) funded model of startups popular in silicon valley are stuck in railway thinking. VCs think that if it isn't something they can put many millions in and get hundreds of millions out, it's "not interesting". And of course more is always more.&lt;br /&gt;&lt;br /&gt;As a tech guy, I think the prospect of growing a business up from nothing seems plenty interesting. But if I had taken millions of someone else's money to start the company, well the reality is I'd have already sold the company. A chunk of it. I'd have borrowed money and would need to pay it back. How would I pay back the millions with extra zeroes on the end? I would have to sell out big. This is the railway. Once you get on it you don't get to choose where to go. You only get to choose when to get off, assuming you don't run out of steam. And VCs don't want you crawling down the track. They are looking ahead to their exit impatiently. They want their money to fuel the train as fast as possible. Destination "liquidity event".&lt;br /&gt;&lt;br /&gt;On the other hand, is it really a problem if people want to start a business with someone else's money and sell it in a couple of years? What's wrong with &lt;a href="http://www.fastcompany.com/magazine/32/builttoflip.html"&gt;build to flip&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;I think the real problem here is cultural. If kids these days aspire to be like &lt;a href="http://en.wikipedia.org/wiki/Kevin_Rose"&gt;Kevin Rose, founder of Digg&lt;/a&gt;, or want to build the next Facebook or Twitter or even &lt;a href="http://www.mint.com/"&gt;Mint&lt;/a&gt; (just bought by competitor &lt;a href="http://quicken.intuit.com/"&gt;Quicken&lt;/a&gt; for $170M), they may well be building with a mind to sell out in the short term. I don't think this short term thinking will build the next generation of great companies. It wasn't the kind of thinking that built Apple or Microsoft or even Google. These companies have really made their mark and changed the world, hopefully for better, but they're clearly more than an expensive flash in the pan. Even Bill Gates has become quite the philanthropist.&lt;br /&gt;&lt;br /&gt;The parallels of build to flip with the &lt;a href="http://onstartups.com/tabid/3339/bid/8608/Startup-Lessons-From-The-Underpants-Gnomes-PROFIT.aspx"&gt;the Underpants Gnomes&lt;/a&gt; are too stark to ignore. Can't remember step two.. never you mind about step two. Step three is profit. I suspect it's only this pesky string of recent bank collapses that has put a dampener on the craze of Underpants Gnomes business models. If the GFC hadn't happened first I think the startup upstarts might well all have bubble gum on their faces by now.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/IU-jaHItLx0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/6926815213958395532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2009/12/build-to-flip-vs-organic-growth.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6926815213958395532?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/6926815213958395532?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/IU-jaHItLx0/build-to-flip-vs-organic-growth.html" title="Build to Flip vs Organic Growth" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2009/12/build-to-flip-vs-organic-growth.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cASHg8cSp7ImA9WxNbFE8.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-5294729629607279932</id><published>2009-11-17T11:28:00.003+11:00</published><updated>2009-11-17T12:24:09.679+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-17T12:24:09.679+11:00</app:edited><title>Jason Fried on Less is More</title><content type="html">I'm a fan of &lt;a href="http://37signals.com/svn/"&gt;Jason Fried&lt;/a&gt;, the &lt;a href="http://37signals.com/"&gt;37 Signals&lt;/a&gt; founder who sticks to his guns and stands up for simplicity in software design. I like how he's a dissenting voice and clearly has the courage of his convictions. I like how he promotes what VCs disparagingly call "lifestyle businesses". I'm happy that he's been featured on &lt;a href="http://www.inc.com/magazine/20091101/the-way-i-work-jason-fried-of-37signals.html"&gt;INC&lt;/a&gt;, a major US business magazine, even though I'm not enough of a fan to care what kind of tea he drinks and all that.&lt;br /&gt;&lt;br /&gt;I'm a fan of Less is More. This year I have been exploring the surprising depth and complexity of this oft-quoted pithy aphorism. Jason Fried is a Less is More poster boy. Except he doesn't like the phrase. I've read it from him elsewhere, but the INC magazine feature reminded me. &lt;br /&gt;&lt;br /&gt;If he didn't like &lt;span style="font-style:italic;"&gt;less is more&lt;/span&gt; because it was overused and therefore overlooked, I would completely understand. But that's not his objection. He says that he doesn't like Less is More because it implies that More is better. Ridiculous!&lt;br /&gt;&lt;br /&gt;Actually I worked with a guy who straight-out didn't understand the phrase. In one of his customary rants about inconsequential stuff he confided that he thought Less is More was vacuous and clearly irrational. "More is more and less is less!" he said.&lt;br /&gt;&lt;br /&gt;First of all, I think it's obvious why it has a deliberate and prominent paradox. The semantic collision is a key feature of its beauty. Less is More works so well because it identifies the conflict of competing values in a compact and humourous way.&lt;br /&gt;&lt;br /&gt;Less [of one thing] is more [of another]. &lt;br /&gt;&lt;br /&gt;There is an unspoken contex shift in the middle.&lt;br /&gt;&lt;br /&gt;So to object to the phrase because it implies that More is better is to misunderstand it on the most flimsy semantic level. Less is better because it is "more good". To advocate Less you must refer to its superiority. Inherent in every word to describe "better" is the notion of "more". It's just words!&lt;br /&gt;&lt;br /&gt;So to properly appreciate how well Less is More applies to Jason Fried's own philosophy of software design, you see that (arguably) less features enables something. Something is gained in their place. There is more of something. &lt;br /&gt;&lt;br /&gt;Understanding what the two sides of the see-saw are is the critical (dare I say pivotal?) task of applying the less is more wisdom to a given situation. What exactly is the tradeoff being made? This is how I use Less is More in my software development and also in my life.&lt;br /&gt;&lt;br /&gt;The opportune moments for the wisdom of Less is More are more specific than just identifying competing goals. It represents minimalism. It's not just less pizza is more beer. It advocates a fresh look at what is essential and rejects overconsumption, overburdening, hoarding and powermongering. It represents a philosophy of happiness and a wholistic goal rather than the pointless pursuit of intermediate tokens that we first world people frequently use as proxies for real goals. &lt;br /&gt;&lt;br /&gt;Less is more is a tool for escaping from the distraction of things that are merely a means to an end and resets attention on the end itself.&lt;br /&gt;&lt;br /&gt;There are usually hidden tradeoffs in software design and the business of programming. The 80/20 rule (the &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt;) is essentially a variant of this where the see-saw becomes a lever and therefore provides (hold your nose) &lt;span style="font-style:italic;"&gt;leverage&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;Complexity is befuddling. Complexity in software actually prevents people from getting their work done and often inhibits progress towards their goal. For all it's enabling potential, complex software has an opportunity cost. When I was a kid, I had the justified belief that I could learn any application in one sitting. Those days are long gone. There's a great power to that. Jason Fried seems to be a voice in support of this idea.&lt;br /&gt;&lt;br /&gt;I'd like to write more on Less is More. I think the irony is stopping me for now.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/a6TcT4VE4Ew" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/5294729629607279932/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2009/11/jason-fried-on-less-is-more.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5294729629607279932?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/5294729629607279932?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/a6TcT4VE4Ew/jason-fried-on-less-is-more.html" title="Jason Fried on Less is More" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2009/11/jason-fried-on-less-is-more.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IEQng8eip7ImA9WxNXGEk.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-1420722640800299405</id><published>2009-10-06T22:32:00.004+11:00</published><updated>2009-10-07T02:05:03.672+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T02:05:03.672+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="patterns" /><title>Smart Programmers Who Don't Get Patterns</title><content type="html">I've been recently struck by the relatively large amount of ignorance about software design patterns amongst the pundits and seemingly intelligent "thought leaders" of the sofware development blogosphere. Actually it's not all that recent. &lt;br /&gt;&lt;br /&gt;Sure, I expect newbies and unscreened job applicants to fail to understand the point of design patterns, but to me they've always been one of the things all good developers should understand.&lt;br /&gt;&lt;br /&gt;First, I don't think the problem is the definition. I'm not squabbling about this. People get this mostly right. A design pattern is a form of solution to a known problem. They originate from Christopher Alexander's work in Architecture where examples include the "Ante Room" or "Roof Garden". The idea is that a pattern describes a general solution to an open range of problems. Architects might consider adding a "Roof Garden" when they are faced with forces and constraints in a design project where the Roof Garden can help achieve the design goals.&lt;br /&gt;&lt;br /&gt;Thanks to the work of many OO pioneers, but most famously the Gang of Four via their seminal book, &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns_%28book%29"&gt;Design Patterns&lt;/a&gt;, the software world has adopted design patterns as a technique for storing and disseminating software design wisdom.&lt;br /&gt;&lt;br /&gt;But why?&lt;br /&gt;&lt;br /&gt;This is where many otherwise well-trained and intelligent software developers fall down. They think that the point of design patterns is component reuse. They think that, like building blocks, design patterns are prefab parts you can stick together, thereby doing less work or using less attention. And once this mistake is made, their rejection of this dumbing down of attentive design in place of convenience is understandable. &lt;br /&gt;&lt;br /&gt;But they have missed the point.&lt;br /&gt;&lt;br /&gt;The whole point of design patterns is to enable communication about design. Design patterns are an attempt to standardise a vocabulary for solutions. Design is frequently a collaborative effort, and even when it's not, a design concept often needs to be communicated either verbally or in written form. Learning about system design also relies on a standardised language.&lt;br /&gt;&lt;br /&gt;So a design pattern usually has a kind of specification which includes a stable name and possible aliases, description and suitable use situations. Developers who have used this pattern can then use the name instead of some long-winded boxes-and-lines session at the whiteboard.&lt;br /&gt;&lt;br /&gt;Now for some examples of seemingly intelligent and experienced software developers speaking out against design patterns.&lt;br /&gt;&lt;br /&gt;Some years ago &lt;a href="http://www.paulgraham.com/icad.html"&gt;Paul Graham and others argued&lt;/a&gt; that Design Patterns suggested a violation of the &lt;a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;DRY principle&lt;/a&gt; and that they always indicated a smell that the program required refactoring to remove duplication or that the language was not powerful enough to factor out the duplication. While this could in theory be true, only Lisp developers are in danger of suggesting that their language is perfect, so for the rest of us (statistically speaking, everyone), perhaps there is enough complexity and subtlety in our domain that we find ourselves able to recognise solution forms that we can name and talk about, and yet not implement generically.&lt;br /&gt;&lt;br /&gt;I take his point, but I think for most people it's a principled rather than a very practical one. The reality is that we live with imperfections in everything, so even if design patterns only exist to cope with this imperfection, then they will still have a seemingly permanent role.&lt;br /&gt;&lt;br /&gt;The point that different languages have different patterns, some more than others, is &lt;a href="http://c2.com/cgi/wiki?AreDesignPatternsMissingLanguageFeatures"&gt;well documented&lt;/a&gt;, and really orthogonal to the issue at hand - namely that design patterns are useful primarily for collaboration and communication. Even programming language designers use design patterns. All (impefect) programming languages, like all software, are knowingly designed to contain a subset of all possible features. Don't forget simplicity is a very valuable feature. Apparently Ralph Johnson, one of the Gang of Four, &lt;a href="http://www.cincomsmalltalk.com/userblogs/ralph/blogView?entry=3335803396"&gt;pointing this out&lt;/a&gt; did little to calm the hysteria on &lt;a href="http://blog.plover.com/prog/johnson.html"&gt;an argument that design patterns formed a list of language features that should be implemented&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Zed Shaw, Ruby on Rails agitator and apparent chronic self-congratulator warns developers in &lt;a href="http://www.youtube.com/watch?v=stDL3aOTYIU&amp;feature=player_embedded#"&gt;his keynote&lt;/a&gt; entitled "Why Keynotes Suck" which was (with what one must assume is deliberate irony) literally read off an irc channel:&lt;br /&gt;&lt;br /&gt;"Stop using patterns. No really, quit using patterns, they aren't helping. I have evidence on that by the way, which is later"&lt;br /&gt;&lt;br /&gt;I didn't catch the evidence but later he did say:&lt;br /&gt;&lt;br /&gt;"Adapter, Bridge and Connector are the same"&lt;br /&gt;&lt;br /&gt;And then&lt;br /&gt;&lt;br /&gt;"Patterns suck, use algorithms."&lt;br /&gt;&lt;br /&gt;The idea of patterns "not helping" conjures images of these dead zones in the code where there is a pattern just taking up space and not actually providing functionality. Should I go and delete all the patterns from my code? What would pattern-free code look like? Do they just suck because there are aliases? Plenty of algorithms have multiple names. What makes algorithms ok? Is Zed just trying to sound old school?&lt;br /&gt;&lt;br /&gt;To be fair, during this talk his main point was to encourage individual thinking and not to follow advice blindly (including his own) but I do get the impression that his idea of patterns has come from the blind cookie-cutter adoption of patterns with small amounts of bad glue code holding the "architecture" together. We've all seen it.&lt;br /&gt;&lt;br /&gt;A recent example is from &lt;a href="http://blip.tv/file/2537613/"&gt;a video interview with Stuart Halloway&lt;/a&gt; author of "Programming Clojure" and a series of articles about post-java jvm languages. When explaining the advantages of macros, Stuart basically repeats Paul Graham, saying,&lt;br /&gt;&lt;br /&gt;"Languages that have macros don't really have design patterns". &lt;br /&gt;&lt;br /&gt;Perhaps because he thinks a design pattern is when:&lt;br /&gt;&lt;br /&gt;"I couldn't really figure out how to solve this in a resuable way, so whenever I hit this problem I copy and paste from somewhere else and tweak. So it's amazing that design patterns has put a positive spin on this copy and paste reuse of these blocks of code".&lt;br /&gt;&lt;br /&gt;I'm not an expert on functional languages with macros, but Peter Norvig is. Even this mighty Lisp and AI guru &lt;a href="http://norvig.com/design-patterns/"&gt;identifies design patterns&lt;/a&gt; in such languages though he does say that 16 of 23 patterns are either invisible or simpler due to language features like macros, first class functions and multimethods. Stuart may be overstating it - I think what he is talking about is a more populist use of the canonical GOF design patterns and similar OO patterns.&lt;br /&gt;&lt;br /&gt;The dread curse of this misunderstanding about patterns seems to have arisen from the usual cause of all technology's ills: marketing. I distinctly recall a Compuware salesman give a bone dry presentation to a local Java user group in about 2000 demonstrating how you could avoid programming almost completely by dragging and dropping patterns from a palette onto a ... thing on the screen. Clearly not targeted to a group of programmers so geeky that they want to get together after hours and talk about the joys of programming. Similarly books about something called "&lt;a href="http://www.google.com.au/search?hl=en&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-GB%3Aofficial&amp;hs=GTT&amp;q=%22pattern+oriented%22&amp;btnG=Search&amp;meta="&gt;pattern oriented&lt;/a&gt; architecture" began to appear and patterns was something to put on the resume.&lt;br /&gt;&lt;br /&gt;What these people need to understand is that design patterns will continue to be useful and to have a role because they are one level of abstraction above implementation. They are needed to explain solutions in terms of a programming language but they cannot be replaced by the language. They are softer than software.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/4CA8qPskwtw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/1420722640800299405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2009/10/smart-programmers-who-dont-get-patterns.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/1420722640800299405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/1420722640800299405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/4CA8qPskwtw/smart-programmers-who-dont-get-patterns.html" title="Smart Programmers Who Don't Get Patterns" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2009/10/smart-programmers-who-dont-get-patterns.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQFQHo4eyp7ImA9WxNSE04.&quot;"><id>tag:blogger.com,1999:blog-2759480248865232582.post-7904388431096210232</id><published>2009-08-27T10:12:00.002+10:00</published><updated>2009-08-27T10:18:31.433+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-27T10:18:31.433+10:00</app:edited><title>My Code Sux!</title><content type="html">I don't know about you, but when I look at code I wrote three years ago, I always seem to think it sux. &lt;br /&gt;&lt;br /&gt;And that's a good thing.&lt;br /&gt;&lt;br /&gt;If the code you wrote three years ago doesn't suck then you're not learning.&lt;img src="http://feeds.feedburner.com/~r/Chromosundrift/~4/i2Kff19JU-Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.chromosundrift.com/feeds/7904388431096210232/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.chromosundrift.com/2009/08/my-code-sux.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/7904388431096210232?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2759480248865232582/posts/default/7904388431096210232?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Chromosundrift/~3/i2Kff19JU-Q/my-code-sux.html" title="My Code Sux!" /><author><name>Chris Mountford</name><uri>https://plus.google.com/100297338910162499753</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-pzRXOyZ8MKk/AAAAAAAAAAI/AAAAAAAAAXQ/uglV9-BBfGQ/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.chromosundrift.com/2009/08/my-code-sux.html</feedburner:origLink></entry></feed>
