<?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" gd:etag="W/&quot;CkEHQHkzcCp7ImA9WhBQEkg.&quot;"><id>tag:blogger.com,1999:blog-35492677</id><updated>2013-03-14T08:43:51.788Z</updated><title>Ian Hickman on Software, Technology and Leadership</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>69</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/IanHickman" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ianhickman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEQNQ3Y_fCp7ImA9WhNbEUw.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-7152313713613580805</id><published>2013-01-13T22:33:00.000Z</published><updated>2013-01-13T22:33:12.844Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-13T22:33:12.844Z</app:edited><title>The Problems with Tablets</title><content type="html">Tablets are a true revolution in computing and are on course to &lt;a href="http://www.guardian.co.uk/technology/2012/nov/22/tablets-outsell-notebooks-us"&gt;outsell PCs this year.&lt;/a&gt; However, they suffer from a couple of major problems:

&lt;h2&gt;Ergonomics&lt;/h2&gt;
The human body wasn't designed to allow people to look at their hands for long periods of time. Which, give or take, is what &lt;a href="http://www.digitaltrends.com/mobile/are-tablet-ergonomics-a-pain-in-the-neck/"&gt;tablets require their users to do&lt;/a&gt;. Sure you can rest them on a stand, but whenever you need to interact with them for a while you'll either get arm fatigue or neck ache.

&lt;h2&gt;The Keyboard&lt;/h2&gt;
Have you ever seen someone trying to type on an tablet whilst standing (such as when commuting on a train)? It's like watching my mum trying to write an email using a single pointy finger.
&lt;BR&gt;&lt;BR&gt;
The problem is the keyboard presented, a standard issue Qwerty, was not designed to be used by one hand.
&lt;BR&gt;&lt;BR&gt;
Inspired by &lt;a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvořák's research&lt;/a&gt; on letter frequency while also attempting to minimise the distance required to tap on keys (see &lt;a href="http://en.wikipedia.org/wiki/Fitts's_law"&gt;Fitt's Law&lt;/a&gt;) I've designed a single-handed tablet keyboard, the right-handed version is presented below:
&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/-lQlYE4-ak94/UPMvTNZOTUI/AAAAAAAAAEU/M9uiKKFQlac/s1600/PadKeyboardScreenshot.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="247" width="350" src="http://4.bp.blogspot.com/-lQlYE4-ak94/UPMvTNZOTUI/AAAAAAAAAEU/M9uiKKFQlac/s400/PadKeyboardScreenshot.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;BR&gt;
Your fingers should rest over the Space, e, t, i and u.
&lt;BR&gt;&lt;BR&gt;
After creating a quick prototype in JavaScript, it's evident that my design suffers from the same problems as Dvořák's keyboard: typing is slowed down massively due to the unfamiliar layout.
&lt;BR&gt;
&lt;BR&gt;
Enter version 0.2:
&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/-5T13JbPHa1U/UPMwCX5V6fI/AAAAAAAAAEk/mFh__PmodCI/s1600/PadKeyboardScreenshotRedesign.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="256" width="350" src="http://4.bp.blogspot.com/-5T13JbPHa1U/UPMwCX5V6fI/AAAAAAAAAEk/mFh__PmodCI/s320/PadKeyboardScreenshotRedesign.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;BR&gt;
By arranging the keys in a standard qwerty order, the keyboard is instantly usable and initial typing speed is increased.
&lt;BR&gt;
&lt;BR&gt;
Due to the colocation of keyboard and screen, it may not easily be possible to solve the ergonomics issue (although Microsoft could be on to something with their &lt;a href="http://www.microsoft.com/Surface/en-GB/surface-with-windows-rt/home"&gt;Surface&lt;/a&gt;). As for the keyboard, if the tablet had a way of realising that it was being held by a single hand, auto-switching to my layout may reduce the frustration of some commuter typists.
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/7152313713613580805/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=7152313713613580805" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/7152313713613580805?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/7152313713613580805?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2013/01/the-problems-with-tablets.html" title="The Problems with Tablets" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-lQlYE4-ak94/UPMvTNZOTUI/AAAAAAAAAEU/M9uiKKFQlac/s72-c/PadKeyboardScreenshot.PNG" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEcBQnY_fCp7ImA9WhVbFE0.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-5536591172702887749</id><published>2012-05-30T17:51:00.002+01:00</published><updated>2012-05-30T20:27:33.844+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-30T20:27:33.844+01:00</app:edited><title>Major DB changes? Migrate, Duplicate or Deprecate</title><content type="html">So you have a shiny new database technology, or it's time to make a major upgrade, or you just need to refactor. For whatever reason you want to move a large chunk of data into db_new_table. How do you cope with this? On a live system??&lt;BR&gt;&lt;BR&gt;

I see 3 options: Migrate, Duplicate or Deprecate.

&lt;h2&gt;Migrate&lt;/h2&gt;
Migration is the act of coding up a script to dump any data from your legacy database table(s) into your new one(s) Migration, done properly, will give you the least grief in the long term as there will be no legacy tables to maintain in the future.&lt;BR&gt;&lt;BR&gt;

It may even present an interesting programming challenge.&lt;BR&gt;&lt;BR&gt;

This method is loved by developers due to the fun scripting problem and removal of legacy chod. It's also hated by the bean counters because of the  large risk of the migration script coder not knowing about some fringe case or other. What happens if it works on your Beta system but all goes bad when released to the wild? Migration is difficult to back out once you start using the new tables.&lt;BR&gt;&lt;BR&gt;

&lt;h2&gt;Duplicate&lt;/h2&gt;
Duplication is the act of running the old and new databases side by side. Both are written to, and when you come to read, you check the old one first, then the new one. At some point, when you're happy that you are storing the same data in both places, you stop writing to the old one and you start to read from the new location first.&lt;BR&gt;&lt;BR&gt;

Duplication is a relatively safe way of introducing a major database change with just one slight concern: that you may never be able to retire the old storage method. This technique works well for "temporary" data (who really cares about a deleted email from 2 years ago?)&lt;BR&gt;&lt;BR&gt;

And if you are storing "temporary" data, this may lead on to deprecation.&lt;BR&gt;&lt;BR&gt;

&lt;h2&gt;Deprecate&lt;/h2&gt;
To deprecate is to cleanse. Switching off the old system entirely and rolling with just the new one.&lt;BR&gt;&lt;BR&gt;

If you have a table that is cleaned out on a daily, weekly or monthly basis (such as one used in fast profit and loss calculations) deprecation is as easy as disabling the old interface and enabling the new one. A single config bit flip.&lt;BR&gt;&lt;BR&gt;

Most often you'll need a combination of these techniques though, such as before deprecation you may migrate some of yesterday's data into your new profit and loss table to check the numbers still add up correctly. Or you may want to migrate your data and then write to both systems - duplicate - until you have confidence. This will ultimately lead to deprecation.&lt;BR&gt;&lt;BR&gt;

Whichever method you chose will depend on the risk of it all going wrong, how much time you have to do it, and the nature of the data stored.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/5536591172702887749/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=5536591172702887749" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5536591172702887749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5536591172702887749?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2012/05/so-you-have-shiny-new-database.html" title="Major DB changes? Migrate, Duplicate or Deprecate" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkMDQ3cyeSp7ImA9WxBaEkw.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-170238576358503361</id><published>2010-03-21T23:28:00.004Z</published><updated>2010-03-21T23:34:32.991Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T23:34:32.991Z</app:edited><title>Pair Programming with Google Wave Part II</title><content type="html">It seems that my &lt;A HREF="http://ianhickman.blogspot.com/2009/06/pair-programming-with-google-wave.html"&gt;"Pair Programming with Google Wave"&lt;/A&gt; prophecy has &lt;A HREF="http://www.wave-vs.net/"&gt;come true&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;It was such an obvious idea that it was only a matter of time - even if it wasn't how I imagined the technology to be used.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/170238576358503361/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=170238576358503361" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/170238576358503361?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/170238576358503361?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2010/03/pair-programming-with-google-wave-part.html" title="Pair Programming with Google Wave Part II" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE4ASHc5fCp7ImA9WxBbEUo.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-8407490409808073642</id><published>2010-03-09T22:00:00.005Z</published><updated>2010-03-09T22:15:49.924Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-09T22:15:49.924Z</app:edited><title>KISS Vs DRY</title><content type="html">In &lt;A HREF="http://ianhickman.blogspot.com/2009/12/how-to-be-guru.html"&gt;my last post&lt;/A&gt; I talked about the expert programmer knowing when not to implement a feature or widget, so as to keep the product and codebase as maintainable as possible.&lt;br /&gt;&lt;br /&gt;This idealogy stems from two of the core principles of good software development practice: &lt;I&gt;KISS - Keep it simple, stupid&lt;/I&gt;. And &lt;I&gt;DRY - Don't Repeat Yourself&lt;/I&gt;.&lt;br /&gt;&lt;br /&gt;But it turns out that these two fundamental practices are occasionally locked in a violent and bloody conflict.&lt;br /&gt;&lt;br /&gt;DRY often requires you to enhance the complexity of the software, violating KISS.&lt;br /&gt;&lt;br /&gt;Consider the case where you could either implement a new module - and with it a new interface - or attempt to re-use an existing module with a fixed interface.&lt;br /&gt;&lt;br /&gt;The first option would be the easiest to code as you have free reign over the interface definition, sticking to KISS.  But it would violate DRY.&lt;br /&gt;&lt;br /&gt;The second option may require quite a bit of work in coding up a &lt;A HREF="http://en.wikipedia.org/wiki/Adapter_pattern"&gt;wrapper&lt;/A&gt; and violating KISS. But it would conform to DRY.&lt;br /&gt;&lt;br /&gt;In this example, which method you choose depends on a number of factors and although the second option is normally the correct one, it won't always be.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/8407490409808073642/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=8407490409808073642" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/8407490409808073642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/8407490409808073642?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2010/03/kiss-vs-dry.html" title="KISS Vs DRY" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;C0AFQH88cSp7ImA9WxBSFU0.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-8857696378628167385</id><published>2009-12-22T17:01:00.002Z</published><updated>2009-12-22T17:08:31.179Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T17:08:31.179Z</app:edited><title>How to be a Guru</title><content type="html">To be a true master - a Guru - in the art of software development you do not need to know what feature must be added.&lt;br /&gt;&lt;br /&gt;Recognise instead what should be left out.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/8857696378628167385/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=8857696378628167385" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/8857696378628167385?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/8857696378628167385?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/12/how-to-be-guru.html" title="How to be a Guru" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE4CRXo9fSp7ImA9WxNXGUg.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-2354750814522664234</id><published>2009-10-07T22:59:00.002+01:00</published><updated>2009-10-07T23:02:44.465+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T23:02:44.465+01:00</app:edited><title>Go on, ask.</title><content type="html">I think we've all been there, spending a couple of days battling with an SDK to get it to do something slightly different, something slightly leftfield.  Something slightly risqué.&lt;br /&gt;&lt;br /&gt;We keep battling away, Googling and re-Googling, heading further into the SDK's proverbial dusty corners, not knowing if the classes and methods that we're searching for will even do the job.&lt;br /&gt;&lt;br /&gt;And then finally we crack and &lt;A HREF="http://www.stackoverflow.com"&gt;ask someone for help&lt;/A&gt;.  &lt;br /&gt;&lt;br /&gt;What do we expect to get from asking?  &lt;br /&gt;&lt;br /&gt;Someone to tell us that we just need to call the Foo::Bar() method?&lt;br /&gt;&lt;br /&gt;If we're lucky this is exactly what will happen.&lt;br /&gt;&lt;br /&gt;If we're less lucky we'll be told to explore another dusty crevice requiring further Google action.&lt;br /&gt;&lt;br /&gt;But most likely, we'll be given some advice that will help us to look at the problem in a different way:&lt;br /&gt;Perhaps we don't need the gui to do that funky trick, and it would actually be far move user friendly if it behaved in another, more standard way.&lt;br /&gt;Perhaps we shouldn't try and make that library function totally generic and rewriting it to solve a specific issue is perfectly acceptable.&lt;br /&gt;&lt;br /&gt;Whatever happens, we shouldn't see asking for help as a weakness, but rather as an opportunity to better ourselves by learning from our peers.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/2354750814522664234/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=2354750814522664234" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/2354750814522664234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/2354750814522664234?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/10/go-on-ask.html" title="Go on, ask." /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DUQHRX84eip7ImA9WxNTEUQ.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-6911375392925148</id><published>2009-08-13T21:44:00.003+01:00</published><updated>2009-08-13T22:02:14.132+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-13T22:02:14.132+01:00</app:edited><title>Startup Incubator is Looking for you</title><content type="html">&lt;A HREF="http://springboard.red-gate.com/"&gt;Red Gate Software&lt;/A&gt; are prepared to help out start-ups by offering good people a desk, money, accommodation and even free food.&lt;br /&gt;&lt;br /&gt;All they want in return after the initial 10-week development period is a chunk of equity.&lt;br /&gt;&lt;br /&gt;But the point is they're prepared to take a gamble and invest in good developers, giving them everything they need to make great software - but with no risk.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/6911375392925148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=6911375392925148" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/6911375392925148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/6911375392925148?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/08/startup-incubator-is-looking-for-you.html" title="Startup Incubator is Looking for you" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkcBSX8yeip7ImA9WxJbEU8.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-703107532219173592</id><published>2009-07-20T20:34:00.002+01:00</published><updated>2009-07-20T21:00:58.192+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-20T21:00:58.192+01:00</app:edited><title>GDP is not very good at Measuring Global Growth</title><content type="html">It's time for a new measure of growth because, in a world with globalisation - where much of the money you spend goes to another country - GDP is incompetent.&lt;br /&gt;&lt;br /&gt;GDP increasing year on year is &lt;A HREF="http://news.bbc.co.uk/1/hi/magazine/7674841.stm"&gt;supposed to be a good thing&lt;/A&gt;, but why do we expect this to happen at all?&lt;br /&gt;&lt;br /&gt;Where does all the &lt;I&gt;extra&lt;/I&gt; money come from?&lt;br /&gt;&lt;br /&gt;It comes from the planets limited supply of raw materials such as its coal, gas, oil, gold, iron and timber.&lt;br /&gt;They're either being mined faster or becoming more precious because of their increased rarity.&lt;br /&gt;&lt;br /&gt;It comes from the planets renewable materials, for example making water drinkable or generating electricity from wind and solar power.&lt;br /&gt;(And, by the way it makes sense - if for no other reason than long term financial gain - for governments to invest in renewable power.)&lt;br /&gt;&lt;br /&gt;It comes from farmed goods such as wheat, rice, fish, livestock and timber.&lt;br /&gt;&lt;br /&gt;And it comes from the fact that, due to population increase, we are slowly using up all of the inhabitable space on the planet and that's driving&lt;br /&gt;up land value.  If you own a chunk of planet, its value is likely to be proportional to the global population.&lt;br /&gt;&lt;br /&gt;And that's it, everything else is just inflation and national debt.&lt;br /&gt;&lt;br /&gt;If I do a service for you, no value is created, dollars are simply exchanged.  No new money enters the international mega-pot.&lt;br /&gt;&lt;br /&gt;Governments can't just "make" money without inflation or currency devaluation. And devaluation is just another form of inflation when you consider the global economy as a whole.&lt;br /&gt;&lt;br /&gt;Please tell me if I'm totally missing the point of GDP here!  Because it seems to me to be a pointless measure of a global border-less macro-economy!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/703107532219173592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=703107532219173592" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/703107532219173592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/703107532219173592?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/07/gdp-is-not-very-good-at-measuring.html" title="GDP is not very good at Measuring Global Growth" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CEAGRn05cSp7ImA9WxJVFEU.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-587832761814766714</id><published>2009-07-01T21:58:00.003+01:00</published><updated>2009-07-01T22:12:07.329+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-01T22:12:07.329+01:00</app:edited><title>10 Questions to ask before Changing your Software</title><content type="html">It's been said that modern day software engineering is like gardening in that you're not normally creating something new but maintaining an existing system.&lt;br /&gt;So when gardening - when making changes to your existing codebase - there are several questions to ask:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;1. Why am I Making the Change?&lt;/h3&gt;&lt;br /&gt;The best code change is no code change at all - because every code change carries the potential work of a bug fix waiting to happen.&lt;br /&gt;The smaller the code or configuration change, the lower the risk. If it ain't broke, don't fix it.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2. Who is the Customer?&lt;/h3&gt;&lt;br /&gt;Are you making the change because your boss thinks it would be a cool new feature? In which case he's your &lt;I&gt;internal customer&lt;/I&gt; (this is often the easiest case as it matters less when the requirements aren't completely defined up front).&lt;br /&gt;Or is it that there's a real, paying, &lt;I&gt;external customer&lt;/I&gt; who wants something added to their bespoke software package?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;3. What are the Use Cases?&lt;/h3&gt;&lt;br /&gt;Once you know who it is you're developing for, you'll need to know exactly how they plan to interact with the system...&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;4. What are the Detailed Customer Requirements?&lt;/h3&gt;&lt;br /&gt;...and what those new UI components should do under the hood.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;5. How will the Architecture be Affected?&lt;/h3&gt;&lt;br /&gt;Will the change affect your software's architecture?  Are you just adding a new widget to your GUI, or are you going to rewrite half of the existing code?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;6. Which Existing Modules need to Change?&lt;/h3&gt;&lt;br /&gt;You do have a modular codebase right?  Yeah?  So you'll need to think about which ones need to change, and how.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;7. What new Modules are Needed?&lt;/h3&gt;&lt;br /&gt;Will that new widget require its own module, or does the functionality sit naturally in an existing module?&lt;br /&gt;If new modules are needed, what's their public interface and how do they interact with everything else?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;8. How will Errors be Handled?&lt;/h3&gt;&lt;br /&gt;How does the software cope when the inevitable happens and the user does something stupid?&lt;br /&gt;Or the robot that you're driving decides to crash into itself?&lt;br /&gt;What happens when the web service that you query falls over because a pop superstar passes away and there's too much web traffic?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;9. How do we test it all?&lt;/h3&gt;&lt;br /&gt;As this is a change to existing system, you need two types of test:&lt;br /&gt;1. Regression tests to confirm that the existing system still works.&lt;br /&gt;2. New tests to test the new stuff.&lt;br /&gt;If the software already has an automated test suite you've covered 9.1 already and covering 9.2 should be a doddle.&lt;br /&gt;&lt;br /&gt;This is also the place to look our for deficiencies and commonly experienced problems, for instance, if you have a highly multithreaded codebase, how do you make sure that the delta hasn't introduced a deadlock?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;10. What are the alternatives?&lt;/h3&gt;&lt;br /&gt;Double check that the change you've decided to make really is the best way before touching any code.&lt;br /&gt;&lt;br /&gt;What do you think? Is there anything that you disagree with? Or that should be added to this list of gardeners' questions?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/587832761814766714/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=587832761814766714" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/587832761814766714?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/587832761814766714?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/07/10-questions-to-ask-before-changing.html" title="10 Questions to ask before Changing your Software" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkAFR3szeip7ImA9WxJXF0g.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-5372217061337449177</id><published>2009-06-11T20:53:00.004+01:00</published><updated>2009-06-11T21:05:16.582+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-11T21:05:16.582+01:00</app:edited><title>Clustering keywords for meaning</title><content type="html">After a couple of occasions when Google has totally let me down, I've been thinking about the problem of improving search engines.  And particularly about the problem of &lt;I&gt;meaning in a search time&lt;/I&gt;.&lt;br /&gt;&lt;br /&gt;For example, when you &lt;A HREF="http://www.google.co.uk/search?hl=en&amp;q=ultralight&amp;btnG=Google+Search&amp;meta=&amp;aq=f&amp;oq="&gt;Google the term &lt;I&gt;Ultralight&lt;/I&gt;&lt;/A&gt; you are presented with, amongst others, ultralight outdoor gear and ultralight aircraft as Google has no idea which you are interested in.&lt;br /&gt;&lt;br /&gt;Flickr gets around this problem by &lt;A HREF="http://ianhickman.blogspot.com/2006/11/clusters.html"&gt;clustering&lt;/A&gt; results together - compare their &lt;A HREF="http://www2.flickr.com/photos/tags/ultralight/clusters/"&gt;ultralight cluster&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;Perhaps this is more of a problem with using short, relatively meaning less search terms, something we've been conditioned to do because search engines just don't understand natural language.  Yet.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/5372217061337449177/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=5372217061337449177" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5372217061337449177?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5372217061337449177?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/06/clustering-keywords-for-meaning.html" title="Clustering keywords for meaning" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkUCRHc7eCp7ImA9WxJXFEw.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-8320807259857026989</id><published>2009-06-07T22:11:00.005+01:00</published><updated>2009-06-07T22:31:05.900+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-07T22:31:05.900+01:00</app:edited><title>Pair programming with Google Wave??</title><content type="html">&lt;A HREF="http://wave.google.com/"&gt;Google Wave&lt;/A&gt; was announced the other week and seems to be making ripples (excuse the pun) amongst technology bloggers.  I recommend readers who know nothing about it to &lt;A HREF="http://wave.google.com/"&gt;watch the video&lt;/A&gt; as I'm only going to talk about one aspect:&lt;br /&gt;&lt;br /&gt;&lt;H3&gt;Pair programming with a Wave Extension&lt;/H3&gt;&lt;br /&gt;Wave is all about collaboration.  Collaboration and extension.&lt;br /&gt;&lt;br /&gt;And it won't be long before extensions exist to compile your favourite language.  Then, its real power will be presented to developers.&lt;br /&gt;&lt;br /&gt;Imagine coding in C++, pair programming with a legend like &lt;A HREF="http://www.gotw.ca/"&gt;Herb Sutter&lt;/A&gt; or &lt;A HREF="http://www.aristeia.com/"&gt;Scott Meyers&lt;/A&gt;?  &lt;br /&gt;&lt;br /&gt;(I'm sure that all they'd require is a convenient way of charging ;)&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/8320807259857026989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=8320807259857026989" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/8320807259857026989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/8320807259857026989?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/06/pair-programming-with-google-wave.html" title="Pair programming with Google Wave??" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEIERXc4cSp7ImA9WxJSGUQ.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-6211301177184328335</id><published>2009-05-10T22:00:00.007+01:00</published><updated>2009-05-10T22:55:04.939+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-10T22:55:04.939+01:00</app:edited><title>How to hit the Front Page of DZone. But why it Doesn't Matter.</title><content type="html">I've been lucky enough to hit the front page of DZone on a &lt;A HREF="http://www.dzone.com/links/motivating_geeks_and_nongeeks.html"&gt;number&lt;/A&gt; &lt;A HREF="http://www.dzone.com/links/6_free_tools_that_every_windows_programmer_should.html"&gt;of&lt;/A&gt; &lt;A HREF="http://www.dzone.com/links/5_rules_of_variable_naming.html"&gt;different&lt;/a&gt; &lt;A HREF="http://www.dzone.com/links/should_coders_be_allowed_to_wear_headphones_discu.html"&gt;occasions&lt;/a&gt; and I believe that there are several tricks that can be employed to reach the holy grail, the front page.&lt;br /&gt;&lt;br /&gt;&lt;H3&gt;Captivating or Controversial Title&lt;/H3&gt;&lt;br /&gt;DZone readers spin through hundreds of new links everyday trying to find something new or interesting to read.  As a blogger or link submitter, you have a dozen words or so to captivate their attention and get their valuable click.&lt;br /&gt;&lt;br /&gt;The title you choose should give them measurable facts, because what coder can resist indisputable fact?  E.g. &lt;A HREF="http://ianhickman.blogspot.com/2009/04/6-free-tools-that-every-windows.html"&gt;6 Free Tools that every Windows Programmer should Install&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;Or, the title should provoke controversy, such as &lt;A HREF="http://ianhickman.blogspot.com/2007/11/headphones.html"&gt;Should Coders be Allowed to Wear Headphones at Work?&lt;/A&gt;  Make it a subject that most programmers have an opinion on and they'll click on the link just so that they can add their comment.&lt;br /&gt;&lt;br /&gt;&lt;H3&gt;Quality Content&lt;/H3&gt;&lt;br /&gt;You can't find a post on blogging that doesn't mention quality content.  So, I shall to!&lt;br /&gt;&lt;br /&gt;Seriously though, people will only give it the DZone thumbs up if the article is well written and delivers what the title promises.  Obvious really.&lt;br /&gt;&lt;br /&gt;&lt;H3&gt;When to Submit&lt;/H3&gt;&lt;br /&gt;I've not yet hit the front page from a Monday submission.  I think people must be just too busy on Mondays to promote links.  Tuesday to Friday is best.&lt;br /&gt;&lt;br /&gt;&lt;H3&gt;But why it Doesn't Matter&lt;/H3&gt;&lt;br /&gt;&lt;A HREF="http://chrisguillebeau.com/3x5/"&gt;Chris Guillebeau over at the Art of Nonconformity&lt;/A&gt; argues in his excellent manifesto, &lt;A HREF="http://chrisguillebeau.com/3x5/overnight-success/"&gt;279 Days to Overnight Success&lt;/A&gt;, that you don't need to hit Digg (or indeed DZone's) front page to make a living from blogging.&lt;br /&gt;&lt;br /&gt;He says that if you're trying to make money from Adsense - and he reckons that this is quite a difficult task - then you need that constant stream of visitors that Digg (or indeed DZone) can provide.  But if you're trying to build a fan base interested in &lt;I&gt;your compelling story&lt;/I&gt; then those sites won't help.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/6211301177184328335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=6211301177184328335" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/6211301177184328335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/6211301177184328335?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/05/how-to-hit-front-page-of-dzone-but-why.html" title="How to hit the Front Page of DZone. But why it Doesn't Matter." /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkUHR3s9eyp7ImA9WxJSFkk.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-6342824625237404680</id><published>2009-05-04T21:47:00.005+01:00</published><updated>2009-05-06T23:17:16.563+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-06T23:17:16.563+01:00</app:edited><title>Multi-threaded JavaScript Makes Stream Processing a Reality</title><content type="html">The future is finally here:&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://trephine.org/t/index.php?title=Implementing_JavaScript_worker_threads"&gt;Multi-threading in a JavaScript app&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;&lt;I&gt;Wow!&lt;/I&gt;&lt;br /&gt;&lt;br /&gt;Do you realise what this means?  It means websites could use a form of &lt;A HREF="http://ianhickman.blogspot.com/2007/05/internet-as-stream-computer-part-1.html"&gt;stream computing&lt;/A&gt; to get your computer to do stuff &lt;I&gt;without you even knowing&lt;/I&gt;.&lt;br /&gt;&lt;br /&gt;It means that a website sending out processing requests to every browser that hits it - without said browser becoming unresponsive - is now a reality.&lt;br /&gt;&lt;br /&gt;And as JavaScript engines become more efficient, this will be even more of an option.&lt;br /&gt;&lt;br /&gt;The web-based super computer is amongst us, if a site where users tend to stick around for a while, such as Facebook or Myspace, wants it to be.&lt;br /&gt;&lt;br /&gt;Let me just explain that last point - Facebook et al (or, indeed any web site) could send packets of data to your machine for it to process in the JavaScript enabled web page without you even knowing it.  The answer to the processor-intensive question would then be sent back, and the web site gets its result.&lt;br /&gt;&lt;br /&gt;It could even &lt;I&gt;sell&lt;/I&gt; this processing power!&lt;br /&gt;&lt;br /&gt;Is it legal, I think so.&lt;br /&gt;&lt;br /&gt;Is it ethical, well, that's for another debate.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/6342824625237404680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=6342824625237404680" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/6342824625237404680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/6342824625237404680?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/05/multi-threaded-javascript-makes-stream.html" title="Multi-threaded JavaScript Makes Stream Processing a Reality" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkQNQXc-fip7ImA9WxJSFUg.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-3752825890323529612</id><published>2009-05-04T21:46:00.002+01:00</published><updated>2009-05-05T21:13:10.956+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-05T21:13:10.956+01:00</app:edited><title>Motivating Geeks... And non-Geeks Part II</title><content type="html">In &lt;A HREF="http://ianhickman.blogspot.com/2009/04/motivating-geeks-and-non-geeks.html"&gt;How to motivate Geeks... And non-Geeks&lt;/A&gt; I talked about not de-motivating by getting the basics wrong.&lt;br /&gt;&lt;br /&gt;So, time has passed and you've got the basics nailed, your &lt;A HREF="http://en.wikipedia.org/wiki/Hygiene_factors"&gt;hygiene factors&lt;/A&gt; are suitably hygienic, where do you go now?&lt;br /&gt;&lt;br /&gt;Well, now comes the motivators: Respect, Truth, Openness, Trust, Responsibility, Recognition, Achievement and Growth.&lt;br /&gt;&lt;br /&gt;I learnt some of these the hard way, like the time when I used to make computer games and I was technical lead on a new PS3 development, I told a developer who'd been programming since the ZX Spectrum days how he should go about finding and fixing a bug.&lt;br /&gt;&lt;br /&gt;He sturnly replied, "Yes, I know!"&lt;br /&gt;&lt;br /&gt;My comment - at the very least - broke the Resposibility and Recognition rules.  And probably the Respect rule too.&lt;br /&gt;&lt;br /&gt;There's a common misconception that salary is a motivator.  This is wrong.  A decent salary is required to stop people worrying, and you won't be motivated unless you have enough money to pay the bills, but an increase in salary is not equal to an increase in motivation.&lt;br /&gt;&lt;br /&gt;Be honest with your staff, give them responsibility and then trust in them to do a good job.  Share with them how the company is doing, ask them how they're doing.  Tell them the truth.&lt;br /&gt;&lt;br /&gt;Then, and only then, will they &lt;I&gt;really&lt;/I&gt; excel.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/3752825890323529612/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=3752825890323529612" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/3752825890323529612?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/3752825890323529612?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/05/motivating-geeks-and-non-geeks-part-ii.html" title="Motivating Geeks... And non-Geeks Part II" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkICSX46cCp7ImA9WxJSFUg.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-4593242589846239813</id><published>2009-04-27T21:54:00.004+01:00</published><updated>2009-05-05T21:16:08.018+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-05T21:16:08.018+01:00</app:edited><title>Motivating Geeks... And non-Geeks</title><content type="html">&lt;A HREF="http://en.wikipedia.org/wiki/Maslow's_hierarchy_of_needs"&gt;Maslow's hierarchy of needs&lt;/A&gt; and &lt;A HREF="http://en.wikipedia.org/wiki/Frederick_Herzberg"&gt;Herzberg's two factor theory&lt;/a&gt; both say the same thing:&lt;br /&gt;&lt;br /&gt;&lt;I&gt;You need to get the basics right before you can expect your staff to be motivated.&lt;/I&gt;&lt;br /&gt;&lt;br /&gt;If workers are scared of losing their job or frightened of not being able to buy food for their children, they aren't going to be motivated.&lt;br /&gt;&lt;br /&gt;When people get annoyed at their unresponsive PC and tediously slow compile times they aren't going to be motivated.&lt;br /&gt;&lt;br /&gt;It won't help if they're in pain because their desk or seating area is wrong.  Or if the temperature is sweaty-forehead-hot or freezing-nose-cold.&lt;br /&gt;&lt;br /&gt;When there is excessive noise they won't concentrate, and won't care.&lt;br /&gt;&lt;br /&gt;If bullying occurs or workers feel undervalued they'll just not bother.&lt;br /&gt;&lt;br /&gt;Pay attention to the little things.  Ask your staff what they need and what they want, and you'll be well on your way to a motivated workforce.&lt;br /&gt;&lt;br /&gt;&lt;I&gt;&lt;A HREF="http://ianhickman.blogspot.com/2009/05/motivating-geeks-and-non-geeks-part-ii.html"&gt;Motivating Geeks... And non-Geeks Part II&lt;/A&gt;&lt;/I&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/4593242589846239813/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=4593242589846239813" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/4593242589846239813?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/4593242589846239813?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/04/motivating-geeks-and-non-geeks.html" title="Motivating Geeks... And non-Geeks" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;AkANQXw_fSp7ImA9WxJTFE8.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-599712003513568041</id><published>2009-04-22T20:17:00.007+01:00</published><updated>2009-04-22T20:33:10.245+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T20:33:10.245+01:00</app:edited><title>Is Programming a Creative Pasttime?  Discuss.</title><content type="html">Martin Amis missed a trick when he called his book &lt;I&gt;The War against Cliché&lt;/I&gt;.  The War &lt;I&gt;on&lt;/I&gt; Cliché would have been far more apt.&lt;br /&gt;"What has a book on literary criticism got to do with software development?"  I hear you question.&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/amooseabroad/2671933499/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3130/2671933499_fafabb7873_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/amooseabroad/2671933499/"&gt;&lt;I&gt;43/365 - That's So Cliche! FGR&lt;/I&gt;&lt;/a&gt;&lt;br /&gt;&lt;I&gt;Originally uploaded by &lt;/I&gt;&lt;a href="http://www.flickr.com/people/amooseabroad/"&gt;&lt;I&gt;AMooseinBrighton&lt;/I&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Well, programming is often said to be a creative pasttime.  And when I was developing video games I would have totally agreed with that statement.&lt;br /&gt;&lt;br /&gt;But now, with some years of professional development in non-entertainment-software circles, I'm not so sure that it is.&lt;br /&gt;&lt;br /&gt;Beautiful software is built from well structured reusable components that adhere to design patterns.&lt;br /&gt;&lt;br /&gt;The design pattern is the programmer's cliché, in that the world has seen it all before.&lt;br /&gt;&lt;br /&gt;So when you're thinking about being creative and coming up with some fancy new algorithm, just remember that good ol' design pattern clichés are good.&lt;br /&gt;&lt;br /&gt;What do you think?  Is programming creative?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/599712003513568041/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=599712003513568041" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/599712003513568041?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/599712003513568041?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/04/43365-that-so-cliche-fgr.html" title="Is Programming a Creative Pasttime?  Discuss." /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm4.static.flickr.com/3130/2671933499_fafabb7873_t.jpg" height="72" width="72" /><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DUEHRHc8eSp7ImA9WxVaGE8.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-5122369293139340207</id><published>2009-04-15T21:25:00.003+01:00</published><updated>2009-04-15T21:33:55.971+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-15T21:33:55.971+01:00</app:edited><title>Business Balls for Leadership and Management</title><content type="html">I just quickly need to mention &lt;A HREF="http://www.businessballs.com/"&gt;BusinessBalls.com&lt;/A&gt; as it's an excellent repository of business and management articles, reference sheets and explanations.&lt;br /&gt;&lt;br /&gt;If you're wondering why that staff member might not be motivated, what it takes to be a fantastic leader, how you should conduct that interview, or even if you're looking for some team building day icebreakers, this site has it.  And some.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/5122369293139340207/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=5122369293139340207" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5122369293139340207?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5122369293139340207?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/04/business-balls-for-leadership-and.html" title="Business Balls for Leadership and Management" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0ADRn4_fSp7ImA9WxVaE00.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-2413103366554740545</id><published>2009-04-09T21:04:00.006+01:00</published><updated>2009-04-09T21:42:57.045+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-09T21:42:57.045+01:00</app:edited><title>Risk in Software Development.</title><content type="html">I've been listening to &lt;A HREF="http://academicearth.org/courses/financial-markets"&gt;some talks on financial markets&lt;/A&gt; and it's got me thinking about risk in software development.&lt;br /&gt;&lt;br /&gt;&lt;IMG SRC="http://farm4.static.flickr.com/3078/3233223222_78bb8ea88b_m.jpg"&gt;&lt;br /&gt;&lt;br /&gt;Risk is everywhere in the software creation process.&lt;br /&gt;&lt;br /&gt;For example, should you invest resource in writing formal user requirements specifications, functional specifications and acceptance test plans.  Or do you risk the project overrunning when it doesn't quite do what the customer expects and you have to make a number of late changes?&lt;br /&gt;&lt;br /&gt;Should you take time at the start of a small project to write unit tests before any other code.  Or do you risk a drawn out testing phase later on?&lt;br /&gt;&lt;br /&gt;In financial markets risk is measured using a number of statistical methods but how would you go about measuring the risk in the examples mentioned above?&lt;br /&gt;&lt;br /&gt;If you know the customer that you are delivering the product to, you may know how forgiving (or not!) that they are.  If you have a good relationship with the client you may be able to get away with a number of &lt;A HREF="http://qa-talk.blogspot.com/2008/08/bug-classification-severity-priority.html"&gt;severity 3 or 4 bugs&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;When dealing with an unknown customer assume the risk is high.  And the larger the development, the larger the risk.  With a high risk project you should aim to employ as many &lt;A HREF="http://www.basilv.com/psd/blog/2007/top-five-essential-practices-for-developing-software"&gt;good software development practices&lt;/A&gt; as possible.&lt;br /&gt;&lt;br /&gt;&lt;I&gt;(Thanks to &lt;A HREF="http://www.flickr.com/photos/esko/3233223222/"&gt;Esko&lt;/A&gt; for the excellent photo)&lt;/I&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/2413103366554740545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=2413103366554740545" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/2413103366554740545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/2413103366554740545?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/04/risk-in-software-development.html" title="Risk in Software Development." /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm4.static.flickr.com/3078/3233223222_78bb8ea88b_t.jpg" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D0ABQH4-eip7ImA9WxVaEU4.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-4522727385768872127</id><published>2009-04-07T21:03:00.003+01:00</published><updated>2009-04-07T21:22:31.052+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-07T21:22:31.052+01:00</app:edited><title>6 Free Tools that every Windows Programmer should Install</title><content type="html">&lt;H2&gt;1. &lt;A HREF="http://ccollomb.free.fr/unlocker/"&gt;Unlocker&lt;/A&gt;&lt;/H2&gt;&lt;br /&gt;I've &lt;A HREF="http://ianhickman.blogspot.com/2007/11/cant-delete.html"&gt;talked about unlocker&lt;/A&gt; before, it's basically a fabulous little utility that tells you which app is locking your file (and it normally says it's the TortoiseSVN cache which brings me neatly onto my next utility...)&lt;br /&gt;&lt;br /&gt;&lt;H2&gt;2. &lt;A HREF="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/A&gt;&lt;/H2&gt;&lt;br /&gt;The code you produce at work is version controlled, so why isn't the code your make at home?  TortoiseSVN is the best way of managing a home version control system as it's a really easy Windows Explorer plugin.&lt;br /&gt;&lt;br /&gt;&lt;H2&gt;3. &lt;A HREF="http://www.dependencywalker.com/"&gt;Dependency Walker&lt;/A&gt;&lt;/H2&gt;&lt;br /&gt;So you're developing a large application - and by large I'm talking tens or even hundreds of dlls.&lt;br /&gt;&lt;br /&gt;You change the public interface on one of the non-dynmically loaded ones and, because you're in a hurry to get a build finished, only rebuild that dll.&lt;br /&gt;&lt;br /&gt;Suddenly you can't start you app up any longer.&lt;br /&gt;&lt;br /&gt;Dependency walker can tell you which other dlls need to be rebuilt so that they can interface with the changed dll.&lt;br /&gt;&lt;br /&gt;&lt;H2&gt;4. &lt;A HREF="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/A&gt;&lt;/H2&gt;&lt;br /&gt;You're not still using notepad to open .txt files are you?  &lt;br /&gt;&lt;br /&gt;Notepad++ is far better as it supports custom plugins and has macro recording, yet it still starts up in an acceptable time.&lt;br /&gt;&lt;br /&gt;Of all of the freeware editors out there, this is my favourite as it behaves the most like Visual Studio when the Ctrl key is held down and your flicking from word to word.&lt;br /&gt;&lt;br /&gt;Other alternatives to the Big Bad Pad are: &lt;A HREF="http://www.pspad.com/"&gt;PSPad&lt;/A&gt; or &lt;A HREF="http://www.lancs.ac.uk/staff/steveb/cpaap/pfe/"&gt;Programmer's file editor&lt;/A&gt;, but I've tried them both all I'm sticking with Notepad++.&lt;br /&gt;&lt;br /&gt;&lt;H2&gt;5. &lt;A HREF="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/A&gt;&lt;/H2&gt;&lt;br /&gt;Want to know what's eating all your processor time?  Download Microsoft's pimped-up task manager, Process Explorer.&lt;br /&gt;&lt;br /&gt;&lt;H2&gt;6. &lt;A HREF="http://www.autohotkey.com/"&gt;AutoHotkey&lt;/A&gt;&lt;/H2&gt;&lt;br /&gt;There is generally thought to be a &lt;A HREF="http://blogs.construx.com/blogs/stevemcc/archive/2008/03/27/productivity-variations-among-software-developers-and-teams-the-origin-of-quot-10x-quot.aspx"&gt;10 fold difference in productivity&lt;/A&gt; between poor programmers and expert ones.  I believe that this is in no small part down to the experts' use of keyboard shortcuts.  Auto Hotkey allows you to set up hotkey scripts to control virtually anything.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/4522727385768872127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=4522727385768872127" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/4522727385768872127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/4522727385768872127?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/04/6-free-tools-that-every-windows.html" title="6 Free Tools that every Windows Programmer should Install" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>10</thr:total></entry><entry gd:etag="W/&quot;CEEAQXwyfCp7ImA9WxVbE0Q.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-1736363211737962006</id><published>2009-03-29T23:15:00.003+01:00</published><updated>2009-03-30T06:57:20.294+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-30T06:57:20.294+01:00</app:edited><title>Gold Code</title><content type="html">I'd previously written that &lt;A HREF="http://ianhickman.blogspot.com/2007/12/working-code-is-worth-its-weight-in.html"&gt;working code is worth it's weight it gold&lt;/A&gt;.  That is true, but it's only partially true.&lt;br /&gt;&lt;br /&gt;Excellent code doesn't just work - proven through unit tests and structured manual testing - it is also written in an obvious way.  Any old &lt;A HREF="http://www.jonathancoulton.com/2006/04/14/thing-a-week-29-code-monkey/"&gt;code monkey&lt;/A&gt; can take ownership of the code and quickly understand what it's meant to do and how it's meant to do it.&lt;br /&gt;&lt;br /&gt;If they can't just pick it up and run with it then it's not &lt;I&gt;gold&lt;/I&gt; standard software,  It's probably tin, maybe bronze.  Silver at a push.  But certainly not gold.&lt;br /&gt;&lt;br /&gt;Gold standard code uses no magic numbers, instead named constants are used.  If magic number just have to be used, comments are mandatory.&lt;br /&gt;&lt;br /&gt;Gold code is consistantly formatted throughout, commented where appropriate and has &lt;A HREF="http://ianhickman.blogspot.com/2008/07/5-rules-of-variable-naming.html"&gt;variable names that follow the 5 golden rules&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;Golden code works and can easily be changed by anyone.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/1736363211737962006/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=1736363211737962006" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/1736363211737962006?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/1736363211737962006?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/03/gold-code.html" title="Gold Code" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CUYFSHkzeCp7ImA9WxVUFEw.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-3867509336882111796</id><published>2009-03-18T21:27:00.003Z</published><updated>2009-03-18T21:51:59.780Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-18T21:51:59.780Z</app:edited><title>Gedanken Experiment - Removing Debt</title><content type="html">&lt;I&gt;This is the first post in a series of off-topic thought experiments inspired by the credit crunch.&lt;/I&gt;&lt;br /&gt;&lt;br /&gt;Imagine a world with no debt.&lt;br /&gt;&lt;br /&gt;I'm not talking about elimination of third world debt and &lt;A href="http://www.makepovertyhistory.org/"&gt;Make Poverty History&lt;/A&gt; that Bono and his pals quite rightly support.  I'm talking about the removal of debt as a concept.  That is, &lt;b&gt;no person or company ever owing any other any money.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;But would it work?&lt;br /&gt;&lt;br /&gt;How could it work?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The banks&lt;/h3&gt;&lt;br /&gt;Would banks be able pay interest on your deposits if they couldn't invest them? &lt;br /&gt;Would banks even be allowed to take deposits off you, as one man's deposit is another man's debt - the banks will be in debt to you after taking your money!&lt;br /&gt;&lt;br /&gt;So &lt;b&gt;if banks can't take or lend any money, why would they even exist?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Bricks and Mortar&lt;/h3&gt;&lt;br /&gt;How would people buy houses if mortgages don't exist?  Would people have to save until they can afford that first home?  And how long would that take - 10 years?  20?  It will certainly be less than the normal 25 years because no interest will be paid.&lt;br /&gt;&lt;br /&gt;So where do they live for those 10 years?  In rented accommodation, government provided accommodation, or in the family home.  And, if they do rent, how does their landlord go about buying the property to then let it out again?&lt;br /&gt;&lt;br /&gt;And where are all these savings kept until the house is bought?  Without banks the only option would be to buy real objects: gold, oil, commodities that appreciate in price and can be sold on.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Shares&lt;/h3&gt;&lt;br /&gt;Company shares aren't really real are they?  They're just a way of a company borrowing money off a bunch of investors.  And by borrowing off a number of different investors they mitigate against the risk of one investor suddenly wanting all their money back.  But there's that word again, "borrowing", so shares are out and so is the FTSE.&lt;br /&gt;&lt;br /&gt;So what do you think?  Here are just a couple of the problems with this radical idea, but could it really work?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/3867509336882111796/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=3867509336882111796" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/3867509336882111796?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/3867509336882111796?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/03/gedanken-experiment-removing-debt.html" title="Gedanken Experiment - Removing Debt" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;AkIARHsyfCp7ImA9WxJTEkg.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-4217271282869843592</id><published>2009-02-12T12:40:00.005Z</published><updated>2009-04-20T21:15:45.594+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T21:15:45.594+01:00</app:edited><title>Gone Phising?</title><content type="html">&lt;H3&gt;Clever Phising Scam?&lt;/H3&gt;&lt;br /&gt;I had a text earlier from a company claiming to be O2, it says,&lt;br /&gt;&lt;Quote&gt;Just to let you know, it's almost time to renew your contract.  To hear your options please call free on 0800 902 0205&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;I immediately googled the number and found it on a website &lt;a href="http://www.o2upgrade.co.uk"&gt;www.o2upgrade.co.uk&lt;/a&gt;.  They've been quite clever with the website, linking to the main www.O2.co.uk domain and using the O2 logo whilst saying that the page is under construction.  But they don't forget to mention that if you want to upgrade call the number 0800 902 0205.&lt;br /&gt;&lt;br /&gt;Googling o2upgrade.co.uk led me to discover &lt;a href="http://www.digitalspy.co.uk/forums/showthread.php?t=879156"&gt;this page&lt;/a&gt;, a Digital Spy forum thread where it seems that the domain name isn't owned by O2, but in fact by a chap called Jeremy Gough.  The Digital Spy forum users go on to contact O2's helpdesk who say that the site is not a fake.&lt;br /&gt;&lt;br /&gt;Let me explain why they O2 it's not a fake.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;How the industry works&lt;/h3&gt;&lt;br /&gt;There must be 30 million mobile phones in Britain now.  If just half are on 12 or 18 month contracts (as opposed to pay as you go) then there could be as many as 10 million phones upgraded every year.&lt;br /&gt;&lt;br /&gt;There are 5 major networks so, roughly speaking, they would have about 2 million phones to upgrade per year, per network.  So, O2 could be upgrading as many as 10,000 users per working day.&lt;br /&gt;&lt;br /&gt;It is simply not feasible for one company to upgrade that many phones per day without multiple warehouses and logistical-nightmare-stress-headaches.  So they encourage other companies to do their distribution for them, by giving them cash-per-contact incentives.&lt;br /&gt;&lt;br /&gt;I believe o2upgrade.co.uk is one of those companies.&lt;br /&gt;&lt;br /&gt;So the good customer service people at O2 are saying it's not a fake because they know that o2upgrade.co.uk are convincing people to stay with O2 for another 18 months and O2 are reaping the benefit.&lt;br /&gt;&lt;br /&gt;That said, I'm still not going to upgrade my phone with them.&lt;br /&gt;&lt;br /&gt;&lt;I&gt;&lt;B&gt;Update:&lt;/B&gt; It seems that www.o2upgrade.co.uk now redirects to the O2 upgrade page.  I don't know if that's because O2 now own the www.o2upgrade.co.uk site, or whether the owner has set up a redirector to make their page look more genuine.  Interestingly, the O2 upgrade page doesn't feature the 0800 number they ask you to ring...&lt;/I&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/4217271282869843592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=4217271282869843592" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/4217271282869843592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/4217271282869843592?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/02/gone-phising.html" title="Gone Phising?" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUECQXk8fSp7ImA9WxVXEU8.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-67471237952860934</id><published>2009-02-08T21:03:00.002Z</published><updated>2009-02-08T21:14:20.775Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-08T21:14:20.775Z</app:edited><title>Working with large data sets is hard</title><content type="html">It seems that the most difficult problems in programming today are due to massive data sets and/or a relative lack of processing speed.&lt;br /&gt;&lt;br /&gt;Memory is free so we've decided to &lt;a href="http://www.nytimes.com/2004/11/14/business/yourmoney/14wal.html"&gt;store everything that we possibly can&lt;/a&gt;.  And then we have problems analysing these massive data sets.&lt;br /&gt;&lt;br /&gt;Google have attempted to solve the problem with their brilliant &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;Map Reduce&lt;/a&gt; technique.  This relies on having a number of cheap PCs on your network, and because of this, it scales well.&lt;br /&gt;&lt;br /&gt;Anyone other than Google are a slave to the Big O.&lt;br /&gt;&lt;br /&gt;If your algorithms aren't linear or nearly linear you're going to struggle when you want to run them over large data sets, and there's not a lot you can do about it other than throw processors at it.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/67471237952860934/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=67471237952860934" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/67471237952860934?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/67471237952860934?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/02/working-with-large-data-sets-is-hard.html" title="Working with large data sets is hard" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkUNQ389fSp7ImA9WxVWFkU.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-2564587237783218871</id><published>2009-02-08T20:35:00.004Z</published><updated>2009-02-26T22:44:52.165Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-26T22:44:52.165Z</app:edited><title>Should you study Maths and Physics instead of Computer Science?</title><content type="html">I completed my degree in Computer Science with Image and Multimedia in 2001.  It seems that &lt;a href="http://www.moserware.com/2009/02/rebooting-computing-why.html"&gt;2001 was quite a popular time for new computer science graduates.&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;However, it looks as though people are starting to move away from computer science degrees and I can only speculate that it's in favour of maths or physics instead.&lt;br /&gt;&lt;br /&gt;Jobs requiring a good deal of maths knowledge are considered to be &lt;a href="http://www.careercast.com/jobs/content/JobsRated_Top200Jobs"&gt;some of the best jobs that a human being can do.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So why do a computer science degree when you could get most coding jobs with a maths degree &lt;i&gt;and&lt;/i&gt; have all these other options available as well?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/2564587237783218871/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=2564587237783218871" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/2564587237783218871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/2564587237783218871?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/02/should-you-study-maths-and-physics.html" title="Should you study Maths and Physics instead of Computer Science?" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkABQn8_fSp7ImA9WxVRGU8.&quot;"><id>tag:blogger.com,1999:blog-35492677.post-5749423074808688239</id><published>2009-01-25T21:51:00.004Z</published><updated>2009-01-25T21:59:13.145Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T21:59:13.145Z</app:edited><title>Web Development Supported by C++</title><content type="html">I've just been working on an update for the &lt;A HREF="http://www.springofhope.org.uk"&gt;Spring of Hope&lt;/A&gt; website. They are a charity that &lt;A HREF="http://www.springofhope.org.uk"&gt;work with disabled children in Uganda, Africa&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;I'd originally written the website in vanilla HTML and simply uploaded it, but I had to rethink my strategy after the charity's owner wanted to add a few pages to the site.&lt;br /&gt;&lt;br /&gt;Simply adding a few new pages would have meant changing every existing page to link with the new pages - something that I didn't want to keep having to do.  Instead I've written a small C++ application that loads the basic text required on each page, applies a standard header and footer to it, builds a menu, and outputs the HTML page.&lt;br /&gt;&lt;br /&gt;A couple of hours work to make future updates simple.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9088252605589384";
/* 468x60, created 25/01/09 */
google_ad_slot = "5730303111";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ianhickman.blogspot.com/feeds/5749423074808688239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=35492677&amp;postID=5749423074808688239" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5749423074808688239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/35492677/posts/default/5749423074808688239?v=2" /><link rel="alternate" type="text/html" href="http://ianhickman.blogspot.com/2009/01/web-development-supported-by-c.html" title="Web Development Supported by C++" /><author><name>Ian Hickman</name><uri>https://plus.google.com/117352580842084048048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-Y83Kn0geYgI/AAAAAAAAAAI/AAAAAAAAAAA/ABsqPEJaeA4/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry></feed>
