<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8989624252340821717</id><updated>2012-01-26T18:30:28.251Z</updated><category term='Doctor Who'/><category term='TV'/><category term='Seal Of Approval'/><category term='Computer Science'/><category term='books'/><category term='Music'/><category term='Christmas'/><category term='Isn&apos;t it terrible'/><category term='Photography'/><category term='Film'/><category term='Hax'/><category term='Kid&apos;s Work'/><category term='Security'/><category term='PeerGroup'/><category term='Lego'/><category term='Business'/><category term='bike'/><category term='Games'/><category term='Newsboys'/><category term='Computers'/><category term='Christianity'/><category term='Work'/><category term='TRON'/><category term='iPlayer'/><category term='Star Trek'/><title type='text'>.knot</title><subtitle type='html'>The musings of a Computer Science Undergraduate at the University of Bath.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default?start-index=101&amp;max-results=100'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>108</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5731813315345598218</id><published>2012-01-26T18:29:00.001Z</published><updated>2012-01-26T18:30:28.262Z</updated><title type='text'>From The Daily WTF: Sketchy Skechers.com</title><content type='html'>&lt;p&gt;I just had to share &lt;a href="http://thedailywtf.com/Articles/Sketchy-Skecherscom.aspx"&gt;this true nugget of web development&lt;/a&gt;: &lt;a href="http://www.skechers.com/"&gt;skechers.com&lt;/a&gt;.&amp;#160; It appears that the server sends the browser some XML and some XSL to do the transform into HTML.&amp;#160; But wait!&amp;#160; There’s a problem doing that in IE because the XSL engine in it doesn’t support a few really useful things in later versions of the XSL spec, so if you visit skechers.com in IE, it sends you XHTML!&lt;/p&gt;  &lt;p&gt;Beautiful, truely beautiful.&lt;/p&gt;  &lt;p&gt;I should point out that I do like the idea of XSL, and once you’ve bashed it hard enough into working it’s quite cool to pass in some XML and get something else out the other end – be it XML, HTML, text, JSON…&amp;#160; But trying to deal with IE is such a pain that if you’re going to architect a CMS to transform XML using XSL you might be better doing it on the server where you’ve just got the one platform to deal with that can be extended in a suitable way.&lt;/p&gt;  &lt;p&gt;Thinking about it, if I remember correctly, our &lt;a title="By favourite, I mean most disliked" href="http://www.prospectsoft.com/"&gt;favourite software development company&lt;/a&gt;’s &lt;a title="By high quality I mean slow, clunky and buggy" href="http://websolutions.prospectsoft.com/"&gt;high quality CMS product&lt;/a&gt; used XML\XSL.&amp;#160; Maybe that’s were the blazingly fast speed came from…&lt;/p&gt;  &lt;p&gt;Hmm… might not be such a good idea after all…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5731813315345598218?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5731813315345598218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5731813315345598218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5731813315345598218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5731813315345598218'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2012/01/from-daily-wtf-sketchy-skecherscom.html' title='From The Daily WTF: Sketchy Skechers.com'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5775782937308195304</id><published>2012-01-19T14:45:00.000Z</published><updated>2012-01-19T14:45:00.050Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>Replicating First &amp; Last in Good Databases</title><content type='html'>&lt;p&gt;Anyone who’s worked with Access will probably know about the First and Last aggregate functions that return the first or last value of a particular column in an aggregate recordset.&amp;#160; If all you’re working with is Access, then all is fine and dandy (well, I say fine and dandy, you’re still using Access), but if you want to migrate to a capable database engine, then you’re going to be stumped as most other systems don’t have a first or last function.&lt;/p&gt;  &lt;p&gt;Consider the following table showing some temperature readings taken throughout the day by a particular sensor:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;&lt;strong&gt;Sensor ID&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;1&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14/01/2011 10:14&lt;/td&gt;        &lt;td valign="top" width="133"&gt;28.5&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;1&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14/01/2011 10:24&lt;/td&gt;        &lt;td valign="top" width="133"&gt;28.7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;2&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14/01/2011 10:28&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14.6&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;1&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14/01/2011 10:34&lt;/td&gt;        &lt;td valign="top" width="133"&gt;28.9&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;2&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14/01/2011 10:38&lt;/td&gt;        &lt;td valign="top" width="133"&gt;14.8&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt; &lt;strong&gt;Table: reading&lt;/strong&gt;   &lt;p&gt;Imagine that we want to summarise this table by sensor and date providing, among other things, the first and last readings of the day.&amp;#160; In Access we could probably do something like:&lt;/p&gt;  &lt;blockquote&gt;&lt;code&gt;SELECT sensor_id,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DATE(time) AS date,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FIRST(value) AS first_value,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LAST(value) AS last_value&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM reading&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; GROUP BY sensor_id,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DATE(time)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ORDER BY sensor_id,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DATE(time)&lt;/code&gt;     &lt;br /&gt;&lt;strong&gt;Query: access_reading&lt;/strong&gt; &lt;/blockquote&gt;  &lt;p&gt;But any database that doesn’t support first or last isn’t going to like this, so what are we going to do?&amp;#160; The first thing is to think about the problem in a slightly different way.&amp;#160; Instead of thinking of wanting the first and last values, we want the values on the rows with the earliest and latest times for a particular sensor.&amp;#160; We can get the earliest and latest times for a sensor by applying the MIN and MAX functions (which a good database should have) to the time column.&amp;#160; So under this new way of thinking, we’re going to need some way to map from the date, to the earliest and latest times under that date, and then join back to our original table to get the values.&amp;#160; This intermediate query will look something like this:&lt;/p&gt;  &lt;blockquote&gt;&lt;code&gt;SELECT sensor_id,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DATE(time) AS date,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MIN(time) AS early_time,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MAX(time) AS late_time&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM reading&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; GROUP BY sensor_id,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DATE(time)&lt;/code&gt;     &lt;br /&gt;&lt;strong&gt;Query: reading_aggregate&lt;/strong&gt; &lt;/blockquote&gt;  &lt;p&gt;So now we can join access_readings to reading_aggregate through the sensor_id and date fields on each query, then we can pull in the ‘early_time’ row by joining back to readings on sensor_id and early_time to sensor_id and time, and again for the ‘late_time’ row.&amp;#160; This produces some truly beautiful SQL, so I apologise for the mess below:&lt;/p&gt;  &lt;blockquote&gt;&lt;code&gt;SELECT reading_date.sensor_id,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; reading_date.date,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; early_reading.value,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; late_reading.value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM reading_date JOIN reading AS early_reading ON reading_date.sensor_id = early_reading.sensor_id AND reading_date.early_time = early_reading.date       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; JOIN reading AS late_reading ON reading_date.sensor_id = late_reading.sensor_id AND reading_date.late_time = late_reading.date &lt;/code&gt;    &lt;br /&gt;&lt;strong&gt;Query: sql_readings&lt;/strong&gt; &lt;/blockquote&gt;  &lt;p&gt;These queries provide a basis for a pattern, you can add further fields from reading to reading_aggregate.&amp;#160; You may also notice that there’s no ORDER BY clause, so if you’re not fussed about sorting data, in the query, you don’t need to worry about it and have the database engine waste time doing so.&lt;/p&gt;  &lt;p&gt;I should point out that this pattern only works if your equivalent of sensor_id and time form a candidate key (or are the primary key) for your table.&amp;#160; If multiple readings can come in at the same time from the same sensor, then you may end up with multiple rows for each sensor in sql_readings.&amp;#160; If this applies to you, then you could replace the joins and their clauses with a subquery selecting the TOP 1 row from reading matching the appropriate criteria:&lt;/p&gt;  &lt;blockquote&gt;&lt;code&gt;SELECT reading_date.sensor_id,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; reading_date.date,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; early_reading.value,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; late_reading.value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM reading_date JOIN (       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SELECT TOP 1 *       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM reading       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE reading.sensor_id = reading_date.sensor_id       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND reading.time = reading_date.early_time) AS early_reading       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; JOIN (       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SELECT TOP 1 *       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM reading       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE reading.sensor_id = reading_date.sensor_id       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND reading.time = reading_date.late_time) AS late_reading&lt;/code&gt;     &lt;br /&gt;&lt;strong&gt;Query: sql_multi_readings&lt;/strong&gt; &lt;/blockquote&gt;  &lt;p&gt;This query will execute slower as it needs to run 2 subqueries for each row, so if your data fits the assumptions for sql_readings, use that one, otherwise sql_multi_readings will help you avoid the result of the cross-join between early_reading and late_reading.&amp;#160; Note that this sql_multi_readings there are no criteria on the JOINs because they’re handled in the subqueries WHERE clauses.&lt;/p&gt;  &lt;p&gt;The pattern for SQL queries needed to replace First and Last has been demonstrated here.&amp;#160; If your ‘sensor_id’ and ‘time’ fields form a candidate key for your table, then the sql_readings query will efficiently replace it, otherwise the sql_multi_readings, a less efficient but stricter, query will get the information you want.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. you think this is boring?&amp;#160; Try revising &lt;a title="Although remembering Claire Willis&amp;#39;s constant not-rallying anecdotes is amusing" href="http://www.bath.ac.uk/catalogues/2010-2011/cm/CM30072.htm"&gt;Safety Critical Computer Systems&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5775782937308195304?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5775782937308195304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5775782937308195304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5775782937308195304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5775782937308195304'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2012/01/replicating-first-last-in-good.html' title='Replicating First &amp;amp; Last in Good Databases'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6242574703939746322</id><published>2012-01-12T17:51:00.000Z</published><updated>2012-01-12T17:51:00.346Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Installing Quassel on Windows</title><content type='html'>&lt;p&gt;If you’re hip, cool, trendy and know exactly where it’s at then, like me you’ll use IRC a fair amount.&amp;#160; IRC is a convenient way for groups to communicate and has been used for many many years.&amp;#160; Unfortunately, when you close your IRC client, you disconnect from the network and you never see any of the messages sent between then and the time you next connect.&amp;#160; One of the ways to fix this is to use a program like Quassel.&amp;#160; Quassel has two parts, the core sits on a server and is permanently connected to your IRC networks and keeps a list of messages that are received.&amp;#160; The client then connects to the core and on connection receives any messages that you missed while offline, and then continues to receive messages as they come.&lt;/p&gt;  &lt;p&gt;Getting the Quassel service set up correctly on Windows requires a bit of know how, so I thought I’d detail my efforts here.&amp;#160; To get Quassel going, we’ll install it and set up a service so it can run in the background rather than requiring someone to be logged in all the time, and then (optionally) configure SSL so we can have encrypted connections between the client and server.&lt;/p&gt; &lt;strong&gt;   &lt;h4&gt;1. Install Quassel&lt;/h4&gt; &lt;/strong&gt;  &lt;p&gt;Quassel has no handy dandy Windows Installer package, so you’ll need to download the zip file and extract it to your preferred directory.&amp;#160; I put it in C:\Program Files (x86)\Quassel\Core.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note that for 32-bit versions of Windows, you should install quassel to a subdirectory of C:\Program Files.&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;2. Install Windows Server 2003 Resource Kit Tools&lt;/h4&gt;  &lt;p&gt;To make our lives easier, Quassel has no built-in support to run as a Windows Service.&amp;#160; For an application to run successfully as a service, it needs to do some extra communication with the Windows Services API, and as a standard run-of-the-mill program, Quassel doesn’t do this.&amp;#160; This means we need a utility that can act as the interface to the Windows Service API, and simply run and monitor the Quassel Core process.&amp;#160; Fortunately, Microsoft provides such a utility call &lt;a href="http://support.microsoft.com/kb/137890"&gt;srvany&lt;/a&gt;, and the most recent version is in the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=17657"&gt;Windows Server 2003 Resource Kit Tools&lt;/a&gt;, downloadable from the Microsoft Download Centre.&lt;/p&gt;  &lt;p&gt;Don’t forget to make a note of where you installed the tools to (C:\Program Files (x86)\Windows Resource Kits\Tools is the default), srvany should be in that folder.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;3. Create the Quassel Service&lt;/h4&gt;  &lt;p&gt;Once installed, you’ll need to open the command prompt (start&amp;gt;type ‘cmd’) and run the following commands to add the service and appropriate registry entries:&lt;/p&gt; &lt;code&gt;   &lt;blockquote&gt;     &lt;p&gt;sc create QuasselCore bin= “&amp;lt;path to srvany (C:\Program Files (x86)\Windows Resource Kits\Tools\srvany)&amp;gt;” DisplayName= “Quassel” obj= “NT AUTHORITY\NETWORK SERVICE”&lt;/p&gt;      &lt;p&gt;reg add HKLM\SYSTEM\CurrentControlSet\Services\QuasselCore\Parameters&lt;/p&gt;      &lt;p&gt;reg add HKLM\SYSTEM\CurrentControlSet\Services\QuasselCore\Parameters /v Application /t REG_SZ /d “&amp;lt;path_to_quasselcore (C:\Program Files (x86)\Quassel\Core\quassel.exe&amp;quot;)&amp;gt;”&lt;/p&gt;   &lt;/blockquote&gt; &lt;/code&gt;  &lt;p&gt;This will create a service for srvany and configure it to run the quassel server when it’s started.&amp;#160; The service will run as the NETWORK_SERVICE user, which has permissions suited for services exposed to the network – namely, not much.&amp;#160; This means that if some craft hacker uses a flaw in Quassel gain access to your machine, he’s not going to be able to make any dangerous changes without first dealing with the Windows security system.&amp;#160; In Windows Vista and later, Quassel will store its configuration data in C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\quassel-irc.org.&amp;#160; The NETWORK_SERVICE account should already have full access to that area.&lt;/p&gt;  &lt;h4&gt;4. Start the Quassel Service&lt;/h4&gt;  &lt;p&gt;You can start the quassel service by opening the services snap-in (start&amp;gt;type ‘services.mmc’) and find the ‘Quassel’ service, then click start on the left hand side, or you can run the following command:&lt;/p&gt; &lt;code&gt;   &lt;blockquote&gt;     &lt;p&gt;net start QuasselCore&lt;/p&gt;   &lt;/blockquote&gt; &lt;/code&gt;  &lt;p&gt;This should tell you whether the the service started OK.&amp;#160; If it did great! If it didn’t make sure that Quassel runs OK when you start it straight on its own, and that you entered in the correct path in the registry keys in step 3.&lt;/p&gt;  &lt;h4&gt;5. Configuring SSL&lt;/h4&gt;  &lt;p&gt;If you don’t want anyone to be able to snoop on communications as they pass from the client to the core, you’ll need to generate yourself an SSL certificate and put it in a place that Quassel can use it.&amp;#160; If you have access to Linux, how is the time to get this out and run the command on &lt;a href="http://quassel-irc.org/faq/cert"&gt;Quassel’s FAQ Page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you don’t have access to Linux, then you’ll need to install Cygwin, which is a port of various Linux tools to Windows.&amp;#160; I’m not going to spend ages going through how to install Cygwin, because it’s easy and there are other places on the internet that will tell you how.&amp;#160; I should add though, that you should make sure that ‘bash’ and ‘openssl’ are installed when you go to install Cygwin.&amp;#160; Once you’ve installed Cygwin, you can also head on over to &lt;a href="http://quassel-irc.org/faq/cert"&gt;Quassel’s FAQ Page&lt;/a&gt; and run that command.&lt;/p&gt;  &lt;p&gt;Upon running the command you’ll get a whole load of prompts.&amp;#160; You may fill these out to your hearts content, although note that the Common Name field should be the domain name you’ll enter into clients to connect to your server (worthing.pixa.org.uk in my case).&amp;#160; If your server is known by different names, on the LAN and on the internet then &lt;a href="http://therowes.net/~greg/2008/01/08/creating-a-certificate-with-multiple-hostnames/"&gt;this page&lt;/a&gt; has a handy guide for configuring OpenSSL to ask you for additional names.&lt;/p&gt;  &lt;p&gt;Once you’ve copied the PEM file you generated to the appropriate place, you may want to restart the Quassel service.&amp;#160; Note that for our purposes, the SSL certificate will want to be copied to C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\quassel-irc.org, not the folder that the FAQ suggests because we’re running Quassel as a different user.&lt;/p&gt;  &lt;h4&gt;6. All Done&lt;/h4&gt;  &lt;p&gt;All that’s left now is to connect a client, connect to your &lt;a href="http://freenode.net/irc_servers.shtml"&gt;preferred network&lt;/a&gt;, &lt;a href="http://www.buncs.com/irc.php"&gt;join a channel&lt;/a&gt; and get chatting.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6242574703939746322?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6242574703939746322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6242574703939746322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6242574703939746322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6242574703939746322'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2012/01/installing-quassel-on-windows.html' title='Installing Quassel on Windows'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3890594908242380248</id><published>2012-01-07T17:04:00.001Z</published><updated>2012-01-07T17:04:37.612Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Business'/><title type='text'>Lasting a life time</title><content type='html'>&lt;p&gt;&lt;em&gt;Long time no post eh?&amp;#160; I want to write more on here, so my target is to write a post once a week (or fortnight, or month, or 6 months if it comes to it) on interesting things I’ve seen, read or thought about.&amp;#160; It’s the 7th of January, so I’m still on target!&amp;#160; Just.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I’ve always found stories of the demise of empires and companies fascinating.&amp;#160; Like a murder mystery, where the detective picks over the other characters and the events to locate the flaws in the murderer’s cunning scheme, it is interesting to see what decisions, strategies and ideas failed, what was and wasn’t done and ultimately led to the organisation’s demise.&amp;#160; Was whatever put the company under something quick that no one would have seen coming?&amp;#160; Or was it coming for a number of years and whatever put the company under was the straw that broke the camel’s back.&lt;/p&gt;  &lt;p&gt;I was therefore interested to read an &lt;a href="http://online.wsj.com/article/SB10001424052970203471004577140841495542810.html"&gt;article in the Wall Street Journal about Kodak’s demise&lt;/a&gt;, all the more so as I do like to take a good photo every now and again.&amp;#160; It seems that Kodak will be filing for bankruptcy protection in the next few weeks and the article tells the story of Kodak’s recent history and why it’s future is so bleak.&amp;#160; From the article and its &lt;a href="http://en.wikipedia.org/wiki/Kodak"&gt;Wikipedia page&lt;/a&gt;, in the 70s, Kodak was an unassailable behemoth, owning 90% of the US film market and 85% of the US camera market.&amp;#160; Even here in the UK Kodak is a name synonymous with photography and clearly has the size to show that if it’s going under something is seriously up.&lt;/p&gt;  &lt;p&gt;What killed Kodak appears to have been a combination of contentment and lack of imagination of behalf of the directors for the last 40 years and digital photography.&amp;#160; Alone neither of these represent much of a challenge, in fact Kodak pioneered digital photography, manufacturing Apple’s QuickTake digital camera and later releasing their own.&amp;#160; But digital photography didn’t need film, which is where Kodak made most of its money as it pulled the good old trick of selling the cameras cheaply and charging high for the film.&amp;#160; And once cameras don’t need film, all you’ve got is cameras that you’re selling below cost to get the customers to buy your film…&amp;#160; And in case not needing your film isn’t bad enough, most digital cameras nowadays are in phones and the like, not the distinct compact and SLR cameras that were popular for digital photos even 5 years ago.&lt;/p&gt;  &lt;p&gt;I guess the lesson to take from Kodak is to always be looking ahead to the next thing (or even the next next thing) in whatever area you’re in.&amp;#160; Despite trying, Kodak seemed to have entered the digital market too slowly, probably fearing its film sales would slump as a result.&amp;#160; Of cause what they forgot is that not only would their film sales slump, but so would their competitors when the world was wowed by the new technology they had developed.&lt;/p&gt;  &lt;p&gt;It’s also very interesting to see Kodak being described as the Google of its day, a massive campus with all sorts of facilities one could wish for, pulling in engineering graduates and apprentices from all over the place… all it took was some overly cautious managers making a few bad calls and 1 piece of disruptive technology…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="right"&gt;&lt;em&gt;&lt;a title="Because nothing rounds off an article about demise like an out of context bible quote" href="http://www.biblegateway.com/passage/?search=2+Samuel+1&amp;amp;version=NIV"&gt;“How the mighty have fallen!&amp;#160; The weapons of war have perished!” – 2 Samuel 1:27&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3890594908242380248?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3890594908242380248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3890594908242380248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3890594908242380248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3890594908242380248'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2012/01/lasting-life-time.html' title='Lasting a life time'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4545534723508216530</id><published>2011-10-17T17:36:00.001+01:00</published><updated>2011-10-17T17:36:43.208+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>For the Record</title><content type='html'>&lt;p&gt;I would like to apologise for anything written &lt;a href="http://www.ratemyplacement.co.uk/"&gt;here&lt;/a&gt; by a certain student from the University of Bath that has caused any problems.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4545534723508216530?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4545534723508216530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4545534723508216530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4545534723508216530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4545534723508216530'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/10/for-record.html' title='For the Record'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5109917726576646457</id><published>2011-10-02T01:35:00.001+01:00</published><updated>2011-10-02T01:35:38.793+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TV'/><category scheme='http://www.blogger.com/atom/ns#' term='Star Trek'/><category scheme='http://www.blogger.com/atom/ns#' term='Christianity'/><title type='text'>This one’s a keeper</title><content type='html'>&lt;p&gt;I’m a big fan of &lt;a href="http://www.startrek.com/"&gt;Star Trek&lt;/a&gt;, particularly &lt;a href="http://www.startrek.com/page/star-trek-deep-space-nine"&gt;Deep Space 9&lt;/a&gt;.&amp;#160; Although some people may argue that being set on a space station makes for a boring samey scene, I think that it encourages the episodes to focus on the development of the characters and setting and we see that in the multi-season story arcs that cover the series.&amp;#160; It’s also the first ‘Trek to really deal with issues of war and faith, which must exist in the future as no matter how ‘enlightened’ humanity has become, there will be other parts of the galaxy that are still catching up, or maybe do not wish to progress in the same way that we do.&lt;/p&gt;  &lt;p&gt;I’ve just watched the episode “&lt;a href="http://www.startrek.com/database_article/covenant"&gt;Covenant&lt;/a&gt;”, the ninth episode of the seventh and final series.&amp;#160; In the episode, Kira is captured by a cult that worships the Pah-Wraiths (the devils and demons of the Bajoran Religion).&amp;#160; I really liked how the episode explored Kira’s faith and her relationship with the cultists, and it struck me that there’s some really useful clips in this episode if one was ever to have to talk on the subject of cults and Christianity.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5109917726576646457?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5109917726576646457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5109917726576646457' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5109917726576646457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5109917726576646457'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/10/this-ones-keeper.html' title='This one’s a keeper'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1204242452376916042</id><published>2011-09-07T20:50:00.001+01:00</published><updated>2011-09-07T20:50:38.003+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='PeerGroup'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>IMAP</title><content type='html'>&lt;p&gt;I’ve spent the past couple of weeks starting the coding to &lt;a href="http://dotknot.blogspot.com/2011/07/peergroup.html"&gt;PeerGroup&lt;/a&gt;, an IMAP based Personal Information Manager.&amp;#160; Seeing as IMAP is so central to the whole operation, I’ve spent that time reading up on IMAP, designing and writing the object model and refining it into a lean, mean, message-receiving machine.&amp;#160; (Actually at the moment, the library doesn’t support receiving messages, but you can do whatever you like to mailboxes!)&lt;/p&gt;  &lt;p&gt;In looking around the internet, I’ve found that no one seems to have done a Critical Appraisal of IMAP (although there is &lt;a href="http://www.erlang-solutions.com/erlangworkshop08/p29-cesariniA.pdf"&gt;this report comparing libraries&lt;/a&gt;).&amp;#160; No one seems to have looked back and thought ‘why on Earth did we do it that way?’ or ‘Wow, that &lt;a title="Mark Crispin, while not designing an IMAP extension" href="http://www.wired.com/images/article/full/2007/10/imap_mark_crispin_500px.jpg"&gt;Mark Crispin&lt;/a&gt; sure had some foresight!’.&amp;#160; So I thought I might document my experience with IMAP so far and share my thoughts on what’s right and what’s wrong.&lt;/p&gt;  &lt;p&gt;I’ve happened to implement quite a few network protocols recently.&amp;#160; One of the things I was involved with at work before I left last week was investigating &lt;a href="http://www.isa.org//MSTemplate.cfm?MicrositeID=1134&amp;amp;CommitteeID=6891"&gt;ISA100&lt;/a&gt;, a wireless mesh network stack standard (like TCP\IP and Ethernet but for wireless meshes).&amp;#160; At the boundary of the system is the gateway, which allows communications to pass from the wireless mesh to a standard TCP\IP network and back.&amp;#160; In order to get data out of the network a program (such as one that sits around waiting for thickness readings from oil and gas pipe walls to come in and put them in a database) can communicate with the gateway using a protocol called GSAP.&amp;#160; The specifics of GSAP don’t seem to be set down in the ISA100.11a standard, but the implementation we were using, from a company called &lt;a href="http://www.nivis.com/"&gt;Nivis&lt;/a&gt;, was very nice to work with.&lt;/p&gt;  &lt;p&gt;In Nivis GSAP, each packet has a fixed length header.&amp;#160; The header tells you a version, a service ID (which tells you what type of request\response\indication the packet is), a transaction ID (which requests and responses for the same command share), the length of the payload and a CRC.&amp;#160; In the library I made to communicate with the demo kit we had, my program read off the header into an object (a GsapPacketHeader), inspected that for the service ID and used that to create an object for the actual packet (such as a GsapTopologyResponsePacket).&amp;#160; All requests and responses were nicely and simply defined and every request had a response, unless you really messed things up.&lt;/p&gt;  &lt;p&gt;If only the same could be said about IMAP.&amp;#160; The phrase ‘simple protocol design’ didn’t seem to be words that could be found in Mark Crispin’s head as he developed IMAP.&amp;#160; But to be fair we need some context.&amp;#160; The first public version of IMAP, IMAP2 was developed in the late 80s, and even IMAP4’s most recent revision in &lt;a href="http://tools.ietf.org/html/rfc3501"&gt;RFC3501&lt;/a&gt; was done in 2003, updating &lt;a href="http://tools.ietf.org/html/rfc2060"&gt;RFC2060&lt;/a&gt;, which was published in 1996.&amp;#160; Therefore technologies and techniques that we take for granted today like JSON, AJAX, XML, JavaScript, HTTP, HTML, 32-bit processors, integrated IDE controllers on motherboards, 486s and the like are all new fangled things according to IMAP and its backward compatibility requirements.&amp;#160; Nowadays, we’d probably make up some HTTP-based RESTful XML or JSON based protocol so we could all drink &lt;a href="http://2.bp.blogspot.com/-EnJuuB-T8Lw/TjcICl88pLI/AAAAAAAAAbo/tz72iuU-cpo/s1600/scent+kool+aid.jpg"&gt;web flavour kool-aid&lt;/a&gt; while we sent our emails, but back then absolutely none of that existed and context-sensitive protocol grammars were the way forward.&lt;/p&gt;  &lt;p&gt;So how does IMAP work?&amp;#160; An IMAP connection can be in one of four states: Disconnected, Unauthenticated, Authenticated and Selected.&amp;#160; You move between them by connecting, logging in, and choosing a mailbox to read messages from.&amp;#160; The user does this by issuing commands through their IMAP client, to which the server responds.&amp;#160; Each command and response ends in a new line.&amp;#160; The server can (and usually does) respond in two ways.&amp;#160; Each IMAP command has a tag to identify when it, so a response can be sent when its done.&amp;#160; Such notifications are called Tagged Responses and are sent once for each command with a status of OK, BAD or NO and an optional code and server message.&amp;#160; The other type of response is an untagged response.&amp;#160; These usually contain the data we’re interested in and are often encountered in response to a variety of commands.&amp;#160; In fact, the IMAP standard says that some untagged responses can be sent in response to any command, and that you need to deal with them otherwise everything breaks.&amp;#160; So server responses are the first pain, but not too insurmountable.&amp;#160; You just need to check each untagged response to see whether it needs some more general processing first before passing it back to whatever method sent the original command.&lt;/p&gt;  &lt;p&gt;So think you’ve got responses done?&amp;#160; Think again.&amp;#160; IMAP is a text-based protocol, so everything is words and servers are expecting nice and lovely text to come flying through in their requests.&amp;#160; Unfortunately the world is not perfect and in a text based protocol you’ll eventually work out that you need to work out which text is protocol text (not-text text) and which text is protocol text (text text) and how are you going to encode the text text to keep it from the not text text?&amp;#160; In IMAP this is solved by one of three means: atoms are single words with no fancy characters in them at all, quoteds are “strings of text within quotes, but only allow the ASCII printable characters”, so ©, ç and ½ are all off limits and literals are just strings of data prepended with their length in {}s, followed by a new line.&amp;#160; You keeping up?&amp;#160; In case you missed it, this now means you’ve got to check whether the new line you thought delimited an untagged response is actually in the middle of a literal value you’re probably interested in.&lt;/p&gt;  &lt;p&gt;So that’s the big gotchas with responses.&amp;#160; Now mailboxes!&amp;#160; IMAP says that just because you have a mailbox named INBOX\Computers\IMAP, it doesn’t automatically make Computers a valid up and proper mailbox.&amp;#160; No, in fact if Computers was a valid up and proper mailbox, it would be entirely valid to delete it, but for INBOX\Computers\IMAP to continue to exist at the exact same path.&amp;#160; That struck me as a bit weird.&amp;#160; What else is weird is that mailbox names also need to be encoded into a modified form of UTF7 encoding.&amp;#160; For those of you not up on the latest trends in textual encoding, as mailboxes are likely to contain interesting characters, and IMAP servers are unlikely to work with these interesting characters, they need to be converted to UTF7, which is a way of representing Unicode characters using just the printable ASCII characters.&amp;#160; Beautiful eh?&lt;/p&gt;  &lt;p&gt;So having finally gotten your head around some of the interesting details of the IMAP protocol, you now need to find a library.&amp;#160; Clearly the language of choice for PeerGroup is going to be C# – it’s going to be a Windows-based desktop app that’s needs to look pretty and C# ticks all those boxes whilst also pretending to be portable with Mono.&amp;#160; But you then realise that there isn’t a single good quality IMAP Library around.&amp;#160; Sure, a Google search will pull up a few, but in no way are any of these serious enough for PeerGroup, which will need to support caching of mailboxes, make use of as much data from the server as possible and have a good, solid object model.&amp;#160; The good object model in an IMAP Library is key to hiding some of the hideous detail of the IMAP protocol.&amp;#160; I shouldn’t need to know that mailbox names should be encoded first, I should be getting some kind of Mailbox class from a List method and I shouldn’t have to be forming my own commands.&amp;#160; On the one hand, this suprised me, as there’s good C# libraries for doing other things, but I guess people aren’t so interested in writing implementations of protocols, for whom things like Linux, Active Directory and PowerBuilder are new, sexy and exciting technologies.&lt;/p&gt;  &lt;p&gt;I would conclude by saying that, although IMAP is old, and has its fair share of gotchas, it is well documented and implemented in a wide variety of languages and frameworks.&amp;#160; In fact, its the wide support that got me thinking about PeerGroup.&amp;#160; Nowadays of cause we would do IMAP differently, but that’s hindsight for you, some of which was probably gleaned from the gotchas in IMAP and other protocols of the late 80s\early 90s, although it is nice that IMAP isn’t just another HTTP-based RESTful protocol serving up its own horrors of XML and JSON.&amp;#160; But that doesn’t stop it from being really annoying, vague and open at times.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1204242452376916042?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1204242452376916042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1204242452376916042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1204242452376916042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1204242452376916042'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/09/imap.html' title='IMAP'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8659048836408053648</id><published>2011-07-07T21:20:00.001+01:00</published><updated>2011-07-07T21:20:28.376+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='PeerGroup'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>PeerGroup*</title><content type='html'>&lt;p&gt;One of the internet’s greatest features is its open, free for all, decentralised nature.&amp;#160; It has been built on accessible, well understood protocols that makes it easy for anyone to get connected and start serving and consuming the various services and resources available on the net.&amp;#160; For example, if you’re feeling lucky (excluding Wikipedia), &lt;a href="http://www.123-reg.co.uk/web-hosting/"&gt;£2.49 per month&lt;/a&gt; gets you 1Gb, of storage, 100 IMAP mailboxes, a domain name, and your choice of Linux or Windows, which is plenty to get you a website up and running.&amp;#160; Fancier options are available if you wanted something more, and if you’re feeling really technical, you can &lt;a href="http://schema.pixa.org.uk/"&gt;serve websites from the&lt;/a&gt; &lt;a href="http://worthing.pixa.org.uk/"&gt;comfort of your own home&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The technologies of the internet that have survived are those that have embraced this distributed, decentralised nature.&amp;#160; Anyone can easily register a domain name, and it’s theirs to administer to their heart’s content.&amp;#160; And once you have a domain name you can have your own email address and your own website or FTP site, or SSH server, the list is endless.&amp;#160; Not only is this incredibly flexible, but it’s fun to setup a server and then access it from the other side of the globe.&lt;/p&gt;  &lt;p&gt;But many new and exciting developments on the internet today seek to reverse this trend.&amp;#160; Sites like &lt;a href="http://4.bp.blogspot.com/_wuAtE-NmHEo/TAfwU6-nLZI/AAAAAAAAAVg/On9KDk6iP88/s1600/farcebook2_logo.jpg"&gt;Facebook&lt;/a&gt;, &lt;a href="http://www.allotment.org.uk/greenhouse/fruit/assets/rhubarb.jpg"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.blogger.com/"&gt;Blogger&lt;/a&gt; and the like seek to centralise people’s activities.&amp;#160; While this provides the public with some ingenious services and makes some people very, very rich, it can lock people in and provide a barrier to competitors getting in and inventing something of equal or greater worth in the long term.&amp;#160; &lt;a href="http://code.google.com/apis/blogger/docs/2.0/developers_guide_protocol.html#ExportFormat"&gt;Have you tried moving your blogs from blogger to somewhere else?&lt;/a&gt;&amp;#160; &lt;a href="http://www.theregister.co.uk/2011/07/05/facebook_blocks_facebook_friends_exporter/"&gt;Have you tried moving your friends from Facebook to Google+?&lt;/a&gt;&amp;#160; &lt;a title="This totally doesn&amp;#39;t help my case as it is a few years old, but it still shows that services can go down." href="http://blog.twitter.com/2008/05/not-true.html"&gt;Have you ever been unable to post a tweet because a few million people wanted to do so at exactly the same time and the central servers got overloaded?&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The social scene on the internet is far too centralised and it’s time to shake it up.&amp;#160; Therefore, I introduce to you, PeerGroup, a de-centralised personal organisation and messaging client.&amp;#160; PeerGroup’s aim is to use the existing, de-centralised accessible standards to create something like an email client with a focus on the social platforms that exist in today’s world.&lt;/p&gt;  &lt;p&gt;Powering PeerGroup is a dream of mine, which is to store both email messages and other interesting objects like contacts, calendar events, tasks, etc. on an IMAP server (aka the cloud).&amp;#160; IMAP is an old, but well understood protocol that supports synchronisation and push notifications, 2 of the staple concepts of modern social platforms.&amp;#160; The Mail Message Format is plenty flexible enough to deal with structured data, and there’s already standard text-based formats for the staple objects of contacts, calendar events and tasks that can be used server side to do the storing.&lt;/p&gt;  &lt;p&gt;The front end of PeerGroup, be it a website, desktop program or mobile app, will have a strong focus on contacts and social platforms.&amp;#160; In fact my roadmap is for version 1 to support just contacts and RSS feeds.&amp;#160; The first screen the user sees will look something like the Facebook news page, picking some snippets from the Facebook, twitter and blog feeds of your contacts and the other RSS feeds that you subscribe to.&lt;/p&gt;  &lt;p&gt;And what is the result of this system?&amp;#160; Choice.&amp;#160; You no longer need to have an account on a centralised system, you can publish your own data to your own website, and your friends list will be in your own, personal secure mailbox, hosted by the provider of your choice – even yourself!&lt;/p&gt;  &lt;p&gt;*Working Title&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8659048836408053648?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8659048836408053648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8659048836408053648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8659048836408053648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8659048836408053648'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/07/peergroup.html' title='PeerGroup*'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4676638325392851414</id><published>2011-05-28T14:33:00.001+01:00</published><updated>2011-05-28T14:33:13.047+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><title type='text'>Lego</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-ZG0OVe9Oz5U/TeD5lYvig-I/AAAAAAAAAFQ/PL56BYqJvCk/s1600-h/LDDScreenShot2%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="LDDScreenShot2" border="0" alt="LDDScreenShot2" align="right" src="http://lh5.ggpht.com/-fKRm06y4dsQ/TeD5mGConuI/AAAAAAAAAFU/1iVsYw2BfDY/LDDScreenShot2_thumb%25255B1%25255D.png?imgmax=800" width="240" height="110" /&gt;&lt;/a&gt;Although there’s a few other things I’ve been meaning to post here, a priority post has just come along with my discovery that you can get every brick Lego has ever made in &lt;a href="http://ldd.lego.com/"&gt;LEGO Digital Designer&lt;/a&gt;, so I can make digital versions of all the awesome Lego models I created as a &lt;strike&gt;fully grown adult&lt;/strike&gt; child.&amp;#160; To begin with a re-created the Arctic Class scout I made, based on the main vehicle of the &lt;a href="http://lego.wikia.com/wiki/6573_Arctic_Expedition"&gt;6573 Arctic Expedition&lt;/a&gt; set. The real life version isn’t so consistently coloured as the picture above, the wings and rudders are white, the skies are red and most of the body is red or yellow rather than orange. I can’t help but feel that more of the original colours might’ve been a better idea…&lt;/p&gt;    &lt;p&gt;If you’re bowled over by the incredible engineering of this model, then you can find construction instructions at &lt;a href="http://pixa.org.uk/lego"&gt;http://pixa.org.uk/lego&lt;/a&gt;.&amp;#160; Be aware that some of the pieces used may have never existed in the colours shown.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4676638325392851414?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4676638325392851414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4676638325392851414' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4676638325392851414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4676638325392851414'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/05/lego.html' title='Lego'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-fKRm06y4dsQ/TeD5mGConuI/AAAAAAAAAFU/1iVsYw2BfDY/s72-c/LDDScreenShot2_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-178546727478097030</id><published>2011-04-28T23:52:00.001+01:00</published><updated>2011-04-28T23:52:40.334+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bike'/><title type='text'>New Bike</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_NI_l8ifjiAI/Tbnvpy1Wn1I/AAAAAAAAAEw/nR9QGjovkv4/s1600-h/P1080527%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1080527" border="0" alt="P1080527" align="left" src="http://lh4.ggpht.com/_NI_l8ifjiAI/Tbnvqb71ZMI/AAAAAAAAAE0/TvqGGF7GM48/P1080527_thumb%5B1%5D.jpg?imgmax=800" width="164" height="111" /&gt;&lt;/a&gt;Having had my (handed down from Dad) nice red Raleigh mountain bike stolen at the end of last year, and not having a suitable replacement in our then extensive stock back home, I decided that now would be the perfect time to get a new bike.&amp;#160; I wanted something that would be great for the road riding that I do and also be entirely capable on the occasional &lt;strike&gt;extended&lt;/strike&gt; &lt;strike&gt;long&lt;/strike&gt; &lt;strike&gt;marathon&lt;/strike&gt; &lt;a href="http://dotknot.blogspot.com/2009/09/worthing-to-hayling-island.html"&gt;globe-trotting off-road rides&lt;/a&gt; I’ll do as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_NI_l8ifjiAI/TbnvqyOJD2I/AAAAAAAAAE4/C1tFS_GHkSw/s1600-h/P1080525%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1080525" border="0" alt="P1080525" align="right" src="http://lh3.ggpht.com/_NI_l8ifjiAI/TbnvrZT4HyI/AAAAAAAAAE8/Y8DCkNdUWFE/P1080525_thumb.jpg?imgmax=800" width="164" height="244" /&gt;&lt;/a&gt;I bought a &lt;a href="http://www.scott-sports.com/gb_en/product/10030/55714/217989"&gt;Scott Aspect 40&lt;/a&gt; from Quest in Worthing.&amp;#160; It’s a good bike, 24-speed gears, lockable front suspension and dual disc brakes.&amp;#160; The saddle isn’t so comfy, but the erognomic grips that provide a nice place to put one’s palms are very comfortable.&lt;/p&gt;  &lt;p&gt;After getting the bike on Wednesday, I took it for a quick ride to Littlehampton and had an Ice-Cream on the seafront.&amp;#160; I also found this cool sculpture\statue\interactive communal product of imaginative and creative thinking which was just crying out to have an attractive quality bike posed inside its folds.&amp;#160; Shame the sun wasn’t getting a bit low in the sky…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_NI_l8ifjiAI/TbnvsKWhO6I/AAAAAAAAAFA/hhYO7D3GpkQ/s1600-h/P1080531%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1080531" border="0" alt="P1080531" src="http://lh3.ggpht.com/_NI_l8ifjiAI/TbnvsrIrzcI/AAAAAAAAAFE/3dcVzjgh9qo/P1080531_thumb.jpg?imgmax=800" width="164" height="244" /&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_NI_l8ifjiAI/TbnvtcmF9dI/AAAAAAAAAFI/MwQuaBUBSpg/s1600-h/P1080532%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1080532" border="0" alt="P1080532" src="http://lh6.ggpht.com/_NI_l8ifjiAI/Tbnvt_VZznI/AAAAAAAAAFM/qVOOs7QwHjw/P1080532_thumb.jpg?imgmax=800" width="164" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-178546727478097030?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/178546727478097030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=178546727478097030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/178546727478097030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/178546727478097030'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/04/new-bike.html' title='New Bike'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_NI_l8ifjiAI/Tbnvqb71ZMI/AAAAAAAAAE0/TvqGGF7GM48/s72-c/P1080527_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3987818036508261265</id><published>2011-04-25T23:24:00.001+01:00</published><updated>2011-04-25T23:24:07.085+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Scriptastic</title><content type='html'>&lt;p&gt;A few years ago, I got a &lt;a href="http://soundbridge.roku.com/"&gt;Roku Soundbridge&lt;/a&gt; for my birthday.&amp;#160; It’s a pretty awesome, media streaming device that works with a variety of media streaming servers, including &lt;a href="http://en.wikipedia.org/wiki/Windows_Media_Connect"&gt;Windows Media Connect&lt;/a&gt;, which integrates nicely with &lt;a href="http://windows.microsoft.com/en-US/windows/products/windows-media"&gt;Windows Media Player&lt;/a&gt; that I use to manage my music.&amp;#160; (pro-tip: installing Windows Media Player 11 on Windows Server 2003 is not fun).&lt;/p&gt;  &lt;p&gt;Anyway, one of the nifty things about the Soundbridge is that it comes with a simple &lt;a href="http://soundbridge.roku.com/documents/SoundBridgeRCPSpecification2-4.pdf"&gt;Remote Control Protocol&lt;/a&gt;, so apps on PCs and phones can connect to it and control it remotely.&amp;#160; Shortly after I got the Soundbridge, I wrote a simple app to turn it on, connect to my media server and play some random music to wake me up in the morning.&amp;#160; Although this was working all fine and dandy, there were two problems with it: it was written in VB.NET 1.1, so any changes would require cracking out Visual Studio 2003, or upgrading it, and it would be so much nicer in some sort of script so that I wouldn’t have to keep recompiling it to change it.&amp;#160; Unfortunately socket-based communications tend not to be the strong point of most scripting languages, so VB.NET was the best thing to write it in at the time.&lt;/p&gt;  &lt;p&gt;Then along came &lt;a href="http://technet.microsoft.com/en-gb/scriptcenter/dd742419.aspx"&gt;Powershell&lt;/a&gt;.&amp;#160; The great thing about Powershell is that it can access any .NET Framework assembly, type or member, so if one could knock up a handy library to simplify interactions with the Soundbridge, Powershell could be used to run off the appropriate commands.&lt;/p&gt;  &lt;p&gt;So that’s what I did.&amp;#160; I now have a library that exposes a public SoundbridgeClient type with some public methods for the RCP commands and a Powershell script that does the checking and runs everything in the correct order.&amp;#160; I hope to post the library and script on pixa.org.uk soon.&amp;#160; It’s not very powershell-ish though – it’s all .net objects and methods, no nice fancy pants cmdlets yet – but I like that it will make maintaining the script quicker and easier.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3987818036508261265?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3987818036508261265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3987818036508261265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3987818036508261265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3987818036508261265'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/04/scriptastic.html' title='Scriptastic'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3814995506997979858</id><published>2011-03-28T22:04:00.001+01:00</published><updated>2011-03-28T22:04:39.933+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Film'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Mistborn: The Final Empire</title><content type='html'>&lt;p&gt;I’ve been meaning to write some posts for a few weeks now.&amp;#160; Further to my recent book purchases, I’ve finished reading the second book I bought, &lt;a href="http://www.amazon.co.uk/Final-Empire-Mistborn-Book-One/dp/0575089911/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1301345845&amp;amp;sr=8-1"&gt;Mistborn: The Final Empire&lt;/a&gt; by &lt;a href="http://www.brandonsanderson.com/portal/Mistborn-Trilogy"&gt;Brandon Sanderson&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Words simply cannot describe how much I enjoyed this book.&amp;#160; After the &lt;a href="http://dotknot.blogspot.com/2011/01/shock-news.html"&gt;thick and fast action packed battled of Jack Campbell’s Dauntless&lt;/a&gt;, The Final Empire was noticably slower, but that only helped the development of incredibly intriguing and interesting world that Sanderson has created in this novel.&lt;/p&gt;  &lt;p&gt;The story follows a young girl called Vin, a skaa (the lowest class of ordinary worker) thief with special powers known as Allomancy.&amp;#160; After a botched operation, she attracts the attention of Kelsier, a conman, recently escaped from the harshest, an usually deadly labour camps.&amp;#160; Thanks to his experiences, Kelsier has recently come about his Allomantic powers and takes on Vin as his apprentice and as part of a team he puts together to overthrow the Lord Ruler.&lt;/p&gt;  &lt;p&gt;As I mentioned earlier, the universe that the story is set in is quite fascinating.&amp;#160; As part of her role, Vin infiltrates the social scene of the upper classes, through which the toing and froing and politicking of the elite are told to us.&lt;/p&gt;  &lt;p&gt;At its core, the story is the revealing of a plan, much like in &lt;a href="http://www.bbc.co.uk/programmes/b007gf9k"&gt;Hustle&lt;/a&gt; (which is a quality TV Show), with a nice dashing of super powers and fantasy thrown in and mixed together to make a delightfully joyful and interesting read.&amp;#160; If you also like programmes like Hustle, and fantasy series like Bored of the Rings then I’m sure you’ll love Mistborn: The Final Empire as much as I did.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3814995506997979858?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3814995506997979858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3814995506997979858' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3814995506997979858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3814995506997979858'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/03/mistborn-final-empire.html' title='Mistborn: The Final Empire'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5302928271911595860</id><published>2011-02-15T21:12:00.001Z</published><updated>2011-02-15T21:12:32.642Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kid&apos;s Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Christianity'/><title type='text'>Jesus on Anger</title><content type='html'>&lt;p&gt;Since the middle of December, I’ve been helping with the 12-14s Children’s Church group at St. Aldate’s and last Sunday was my turn to lead.&amp;#160; This term we’re looking at the Sermon on the Mount (protip: if you want a challenge in your youth group session preparations, go through the Sermon on the Mount), and my session was looking at Matthew 5:21-26 where Jesus talks about Anger.&lt;/p&gt;  &lt;p&gt;With my kids’ group leader’s hat on, the passage is a bit dry – there’s no nice story to act out, it’s all talk using language and situations that won’t exactly be familiar to the 12-14 year olds we have.&amp;#160; I doubt that many of our group have been to court.&amp;#160; Instead of focussing on this passage I decided to add in a few extra passages to give a more holistic overview as to what the Bible said about anger.&lt;/p&gt;  &lt;p&gt;To begin with we looked at the stories of Cain &amp;amp; Abel and Jesus in the Temple.&amp;#160; The guys acted out the story of Cain &amp;amp; Abel (with a fantastic street twist to the dialogue) and the girls acted out the story of Jesus in the Temple.&amp;#160; In the first story, Cain &amp;amp; Abel provide an offering to God – Cain gives grain, while his brother Abel gives some lambs.&amp;#160; God looks favourably on Abel’s sacrifice which makes Cain angry.&amp;#160; So angry that he kills Abel.&amp;#160; After the murder God sends Cain out to wonder the land, but also places a mark on him to stop him from meeting the same fate as his brother.&lt;/p&gt;  &lt;p&gt;The first point about this story are that Cain got angry after not giving God his best.&amp;#160; It’s clear from the sacrifices God asks for in the Old Testament that he prefers blood sacrifices so for Cain to bring along some grain he’d manage to cobble together was a bit shoddy.&amp;#160; The second point about this story is that God shows Cain mercy by despite his murder.&amp;#160; Even though Cain had murdered out of nothing better than anger and jealousy, God still placed a mark upon Cain to stop him from being murdered.&lt;/p&gt;  &lt;p&gt;The story of Jesus in the Temple is well known – Jesus enters the Temple in Jerusalem and finds it full of stalls selling tat.&amp;#160; Getting angry he over turns the stalls and turfs the traders out.&amp;#160; It’s interesting to see Jesus getting angry here – from the story of Cain &amp;amp; Abel it’s easy to conclude that we shouldn’t get angry, but if Jesus gets angry it can’t be all bad.&amp;#160; The difference is in how Jesus and Cain dealt with their anger – Jesus’s anger was more of a ‘righteous’ anger aimed at at a true injustice and used far more constructively and effectively than Cain’s.&lt;/p&gt;  &lt;p&gt;After acting out and talking about the two passages we looked at what Jesus said in his Sermon on the Mount.&amp;#160; The passage is split into three pieces.&amp;#160; The first couple of verses expand upon the spirit of the commandment to not murder.&amp;#160; This stems from the essence of righteousness; it’s not some checklist of things you must or must not do, but instead it’s a rightness of spirit or relationships.&amp;#160; Clearly a person cannot be righteous if they go around hating everyone even if they haven’t murdered them.&amp;#160; God intends for us to get along the best we can with everyone we meet and not hold grudges or anything like that.&lt;/p&gt;  &lt;p&gt;Jesus expands upon how this “real righteousness” works in practice in the next few verses.&amp;#160; First he says that if you’re on your way to worship (such as on a Sunday morning) and you remember that you’ve done something to make someone else angry with you, go and sort it out first.&amp;#160; Secondly he says that if someone’s trying to sue you, there’s no point being indignant and dragging the process out through lengthy trials because that’s not going to sort out the underlying issues in your relationship with that person.&lt;/p&gt;  &lt;p&gt;Both these parts are classic Jesus – looking at something from completely the other side of the coin to most people’s initial thoughts.&amp;#160; It switches the onus from the person who’s angry to the person who caused it in the first place to start sorting the issues out.&amp;#160; They should be best placed to do so because the angry person is, like Cain, going to be tainted by that anger.&lt;/p&gt;  &lt;p&gt;When I ran the session, I pretty much finished it there.&amp;#160; In hindsight I should probably have made a conclusion and reminded everyone of what we’d looked at today, particularly as there was a few minutes of free-time left at the end, but I guess that’s something I’ll have to remember for next time.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5302928271911595860?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5302928271911595860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5302928271911595860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5302928271911595860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5302928271911595860'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/02/jesus-on-anger.html' title='Jesus on Anger'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7911851871341507158</id><published>2011-02-03T23:13:00.001Z</published><updated>2011-02-03T23:13:20.175Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Hax'/><title type='text'>Getting Hacked</title><content type='html'>&lt;p&gt;The internet sure is a fine institution.&amp;#160; You can meet all sorts of lovely people, like me!&amp;#160; Unfortunately you can also meet some unlovely people like the ones who thought it would be a good idea to hack into my live.co.uk email account and start sending some messages advertising some shopping place.&lt;/p&gt;  &lt;p&gt;Having your email account hacked is very annoying and I was very curious as to who did hack my account, where they were and how they did it.&amp;#160; How they did it was particularly important to me as I don’t want to find out that I know have some malware somewhere that’s bent on taking down my computer.&lt;/p&gt;  &lt;p&gt;The first place to look when tracking down emails is in the headers.&amp;#160; Each email client and server will produce quite different sets of headers, so if some virus was telling my Outlook to send a load of emails, I’d soon know.&amp;#160; The good news is that the headers from the spam mails were very different from the headers of a typical outlook mail (which helpfully include the ‘X-Mailer: Microsoft Office Outlook 12.0’ header that was absent from the spam messages).&lt;/p&gt;  &lt;p&gt;The second giveaway header was the X-Originating-IP header that appears to be added by Hotmail’s servers.&amp;#160; A typical email from me will have an X-Originating-IP header of 94.8.208.208, my public IP address at the time of writing, which a lookup at ripe.net’s database will confirm belongs to Sky.&amp;#160; The spam messages have an X-Originating-IP of 213.233.93.241, which is quite different from the block allocated to Sky.&amp;#160; In fact RIPE confirms that 213.233.93.241 belongs to a Romanian ISP going by the name of Mobifon, which Wikipedia suggests is mostly owned by Vodafone Romania.&lt;/p&gt;  &lt;p&gt;So it looks like the panic is over.&amp;#160; Some Romanian hacker managed to fiddle my password (which given my password policy was never going to be difficult, and which I’ve now changed) and send a load of emails.&amp;#160; From the looks of things all the URLs point to hacked servers hosted all over the world that redirect to a site selling viagra that, you guessed it, is hosted in Romania.&lt;/p&gt;  &lt;p&gt;The moral of the story then is passwords, passwords, passwords.&amp;#160; Unlike me you should do the right thing and have a complex password that is different on at least your main accounts so you don’t end up entering the same short password into all your online accounts and giving up your secrets to anyone with sneaky access to a server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7911851871341507158?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7911851871341507158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7911851871341507158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7911851871341507158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7911851871341507158'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/02/getting-hacked.html' title='Getting Hacked'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8007683692606328966</id><published>2011-01-31T23:31:00.001Z</published><updated>2011-01-31T23:31:03.965Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seal Of Approval'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Shock News</title><content type='html'>&lt;p&gt;In the run up to Christmas I was getting a bit frustrated with work and life.&amp;#160; When I’d get home, I’d be bored, just sitting around doing nothing whiling away hour after hour reading &lt;a href="http://www.theregister.co.uk/headlines.atom"&gt;RSS feed articles&lt;/a&gt; and playing &lt;a href="http://en.wikipedia.org/wiki/Solitaire_(Windows)"&gt;meaningless games&lt;/a&gt;.&amp;#160; Work wasn’t much better.&lt;/p&gt;  &lt;p&gt;It was then in the midst of my depression that I met her&lt;a href="#star"&gt;*&lt;/a&gt;.&amp;#160; From the moment I laid eyes on her, I had that strange sense of familiarity and intrigue that practically fated our relationship that blossomed over the next few months.&amp;#160; We took the first few weeks slowly, perhaps a bit too slowly and we practically stopped seeing each other over Christmas, but once I was back in Oxford we were very much inseparable.&lt;/p&gt;  &lt;p&gt;Cutting a long story short, I have an important announcement to make:&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;&lt;strong&gt;I bought and read a fiction book&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;There, I’ve said it.&lt;/p&gt;  &lt;p&gt;In actual fact, the story isn’t that long.&amp;#160; I was thinking about things I should be doing in the time I have after work, and having a &lt;a href="http://www.waterstones.com/waterstonesweb/"&gt;Waterstone’s&lt;/a&gt; card my aunt and uncle gave me for Christmas in my first year of university I purchased &lt;a href="http://www.amazon.co.uk/Night-Watch-Sergei-Lukyanenko/dp/0099489929/ref=pd_sim_b_2"&gt;The Night Watch by Sergei Lukyanenko&lt;/a&gt; and read it.&lt;/p&gt;  &lt;p&gt;For those of you who don’t know me, I should underline just what an achievement this is.&amp;#160; The last new fiction book I read was &lt;a href="http://www.amazon.co.uk/Eldest-Christopher-Paolini/dp/0552552119/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1296516103&amp;amp;sr=1-1"&gt;Eldest by Christopher Paolini&lt;/a&gt;, the 2nd of the Eragon series and that was shortly after it was published in 2005.&lt;/p&gt;  &lt;p&gt;I’m not much of a book reviewer, but I did most definately enjoy this book.&amp;#160; I was first drawn to it from having seen the movie based on the book at the &lt;a href="http://people.bath.ac.uk/su8scifi/"&gt;Sci-Fi &amp;amp; Fantasy Society&lt;/a&gt; a couple of years ago.&amp;#160; Unfortunately the film is only in Russian, and as it turns out doesn’t follow the book very closely at all, but it is nonetheless a good film.&lt;/p&gt;  &lt;p&gt;The book is based in a world with a sub-layer called the Twilight that people called ‘Others’ are able to use.&amp;#160; Light Others (who use the magical powers from the Twilight to better other’s lives) and Dark Others (who use their powers from the Twilight for their own ends) live in accordance with a Treaty that mandates that each watch over the other group; the Light Ones form The Night Watch and the Dark Ones form The Day Watch.&amp;#160; The book follows a Light Other, Anton, and his struggle with the impact of the Treaty and the acts The Night Watch commits in the name of The Light.&lt;/p&gt;  &lt;p&gt;I’m not one for &lt;a href="http://www.amazon.co.uk/Fellowship-Ring-Vol-Lord-Rings/dp/0261102354/ref=sr_1_2?ie=UTF8&amp;amp;qid=1296516266&amp;amp;sr=8-2"&gt;extensive descriptions&lt;/a&gt;; I prefer my stories to get a move on with some gripping action and intrigue and this book certainly does not disappoint.&amp;#160; The necessary half truths and workings that each of the watches must say and do certainly kept me guessing until the end.&amp;#160; It was in all a very enjoyable read and I would recommend it to anyone looking for something with a bit of modern day fantasy to it.&lt;/p&gt;  &lt;p&gt;I did go back to Waterstone’s a few weeks ago and noticed that they happened to have a 3 for 2 offer on some of the books there and I happened to have some money left on said gift card, so I’ve also purchased &lt;a href="http://www.amazon.co.uk/Lost-Fleet-Dauntless-Book/dp/0857681303/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1296516587&amp;amp;sr=1-1"&gt;The Lost Fleet: Dauntless by Jack Campbell&lt;/a&gt;, &lt;a href="http://www.amazon.co.uk/Final-Empire-Mistborn-Book-One/dp/0575089911/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1296516612&amp;amp;sr=1-1"&gt;The Final Empire by Brandon Sanderson&lt;/a&gt; and &lt;a href="http://www.amazon.co.uk/Clan-Cave-Bear-Earths-Children/dp/1444709852/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1296516634&amp;amp;sr=1-2"&gt;The Clan of the Cave Bear by Jean M Auel&lt;/a&gt;.&amp;#160; From appearances, I expect I’ll enjoy The Lost Fleet, I may quite like The Final Empire and worst case, The Clan of the Cave Bear can be my free book.&lt;/p&gt;  &lt;p&gt;&lt;a name="star"&gt;*&lt;/a&gt; I know it’s a bit strange referring to books as her, but replacing ‘her’ with ‘it’ wouldn’t have made that paragraph sound the same.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8007683692606328966?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8007683692606328966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8007683692606328966' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8007683692606328966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8007683692606328966'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/shock-news.html' title='Shock News'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7366782933904367842</id><published>2011-01-23T22:11:00.001Z</published><updated>2011-01-23T22:11:55.925Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>Guilty Pleasures</title><content type='html'>&lt;p&gt;Is it wrong that I can count on two hands the number of tracks I like on &lt;a href="http://open.spotify.com/album/0eGvq1J5Ke7VlLLOYIlY4k"&gt;this album&lt;/a&gt;?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7366782933904367842?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7366782933904367842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7366782933904367842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7366782933904367842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7366782933904367842'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/guilty-pleasures.html' title='Guilty Pleasures'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1340988920324704831</id><published>2011-01-07T21:57:00.001Z</published><updated>2011-01-07T21:57:24.500Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><category scheme='http://www.blogger.com/atom/ns#' term='Newsboys'/><category scheme='http://www.blogger.com/atom/ns#' term='Christmas'/><category scheme='http://www.blogger.com/atom/ns#' term='Christianity'/><title type='text'>A new level of respect</title><content type='html'>&lt;p&gt;goes out to the Newsboys for choosing songs of such repute in their &lt;a href="http://open.spotify.com/album/1FgAdVrabffZ7OFu5Kls8N"&gt;Christmas album&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1340988920324704831?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1340988920324704831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1340988920324704831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1340988920324704831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1340988920324704831'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/new-level-of-respect.html' title='A new level of respect'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4868567616300583368</id><published>2011-01-06T22:00:00.000Z</published><updated>2011-01-06T22:00:02.528Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>Mass Effect &amp; Fallout 3</title><content type='html'>&lt;p&gt;I finally completed &lt;a href="http://masseffect.bioware.com/me1/"&gt;Mass Effect&lt;/a&gt; the other day.&amp;#160; Mass Effect is an Action\Role Playing Game focussing on one Commander Shepard as he saves the day against an evil mind controlling machine\spaceship called Sovereign and its crony Saren.&lt;/p&gt;  &lt;p&gt;While I agree with some of the reviews I read that there is a lot of dialogue, I liked the way that you can choose your response and score your character Paragon and Renegade points.&amp;#160; This allows you to shape the commander as you see fit, hence the role playing aspect.&amp;#160; I played Commander Shepard as a valiant, noble commander who couldn’t stand politicians, which ended me up with a nice set of Paragon points and a few Renegade points to stop me looking so boring.&lt;/p&gt;  &lt;p&gt;My feelings about Mass Effect stands in stark contrast to &lt;a href="http://fallout.bethsoft.com/eng/home/home.php?country=uk"&gt;Fallout 3&lt;/a&gt;, a Role Playing Game I picked up months ago and dropped in favour of Mass Effect.&amp;#160; I didn’t get on with Fallout 3, it seemed to take ages to do everything and I felt like I kept missing out on things thanks to my own ineptitude.&amp;#160; It seems as though the designers of Fallout 3, took the best parts of a quality game such as Eve Online, the internet and the spaceships, and discarded it in favour of the worst bits, the stilted, unrealistic dialogue and the fact it takes ages to do anything.&amp;#160; It’s a shame because the dystopia, premise and story behind Fallout 3 looks really good, I just didn’t feel particularly able to access it.&lt;/p&gt;  &lt;p&gt;Mass Effect on the other hand does have a very good story and the game play design behind it made me feel like I was following it rather than accidentally uncovering it as I blundered about the distressed, post-apocalyptic terrain that was Capital Wasteland.&amp;#160; Mass Effect also has a very good back story, and a very well developed universe, which continues to be expanded in Mass Effect 2 that I should probably purchase at some point.&lt;/p&gt;  &lt;p&gt;Next on my list of games to play is &lt;a href="http://www.civilization5.com/"&gt;Civilization V&lt;/a&gt; and &lt;a href="http://hotpursuit.needforspeed.com/"&gt;Need For Speed: Hot Pursuit&lt;/a&gt;, which my uni friends bought me for my birthday.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4868567616300583368?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4868567616300583368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4868567616300583368' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4868567616300583368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4868567616300583368'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/mass-effect-fallout-3.html' title='Mass Effect &amp;amp; Fallout 3'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1058878548670591461</id><published>2011-01-04T21:38:00.001Z</published><updated>2011-01-04T21:38:26.735Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Doctor Who'/><category scheme='http://www.blogger.com/atom/ns#' term='TV'/><title type='text'>Doctor Who in Marital Incest Shocker</title><content type='html'>&lt;p&gt;Read all about it &lt;a href="http://www.hollywoodreporter.com/news/david-tennant-marry-doctor-s-68131"&gt;here&lt;/a&gt;.&amp;#160; Seems Doctor Who (David Tennant) is going to marry his daughter, Jenny (Georgia Moffett, The Doctor’s Daughter).&lt;/p&gt;  &lt;p&gt;In real life, Georgia Moffett is actually the daughter of Peter Davidson of Doctor Who fame from the 80s…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1058878548670591461?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1058878548670591461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1058878548670591461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1058878548670591461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1058878548670591461'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/doctor-who-in-marital-incest-shocker.html' title='Doctor Who in Marital Incest Shocker'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-398267851925884840</id><published>2011-01-03T15:31:00.001Z</published><updated>2011-01-03T15:31:47.316Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='TV'/><category scheme='http://www.blogger.com/atom/ns#' term='Isn&apos;t it terrible'/><title type='text'>The Dragons Know What’s Hot and What Isn’t</title><content type='html'>&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=QKsPLPZPkEI&amp;amp;feature=player_embedded"&gt;This&lt;/a&gt; is a hilarious clip cobbled together from some idiot’s presentation and Dragon’s Den.&lt;/p&gt;  &lt;p&gt;In other news I am now in Oxford.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-398267851925884840?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/398267851925884840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=398267851925884840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/398267851925884840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/398267851925884840'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/dragons-know-whats-hot-and-what-isnt.html' title='The Dragons Know What’s Hot and What Isn’t'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8948244738171382430</id><published>2011-01-02T14:48:00.001Z</published><updated>2011-01-02T14:48:31.649Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Christmas'/><title type='text'>2011 Welcomes Careful Drivers</title><content type='html'>&lt;p&gt;In case you’ve been living in a cave, on Mars, or just finished a 24 hour flight starting on New Zealand or Australia around midday New Year’s Eve, happy New Year!&lt;/p&gt;  &lt;p&gt;Having had a year with some entirely terrible parts, I do hope that this year is a good deal more positive.&amp;#160; For one I know that I will be at &lt;a href="http://www.new-wine.org/summer"&gt;New Wine&lt;/a&gt; and &lt;a href="http://www.scriptureunion.org.uk/Holidays/HolidaysFolder/FullOn/103194.id"&gt;Full On!&lt;/a&gt; this year, even if they are back to back this year, but I still have 8 months of work to en&lt;strike&gt;joy&lt;/strike&gt;dure.&lt;/p&gt;  &lt;p&gt;Over Christmas I have fettled almost every computer at home.&amp;#160; I got two new hard disks for my Birthday, a &lt;a href="http://www.wdc.com/en/products/products.aspx?id=120"&gt;1Tb Caviar Green&lt;/a&gt;, which was added to the backup pool, freeing up a &lt;a href="http://www.wdc.com/en/products/products.aspx?id=110"&gt;500Gb Caviar Blue&lt;/a&gt;, to go with a second &lt;a href="http://www.wdc.com/en/products/products.aspx?id=100"&gt;500Gb Caviar Black&lt;/a&gt; I also got for my Birthday.&amp;#160; Both the 500Gb drives replaced the two 320Gb Caviar Blues that now inhabit a media centre PC I built for my sister.&lt;/p&gt;  &lt;p&gt;As part of the drive replacement, I cloned the 320s using a program called &lt;a href="http://clonezilla.org/"&gt;Clonezilla&lt;/a&gt;, which despite showing lots of lovely text involving the word ‘exception’ part way through the cloning of the system drive appears to have been entirely successful.&lt;/p&gt;  &lt;p&gt;My sister’s media centre PC is made up of an AMD Athlon X2 4600+ chip, with 4Gb of RAM and an ATI HD4350, which is a major upgrade from the AMD Athlon 64 3700+ with 512Mb RAM and an ATI X800 that I hastily prepared for her in October.&amp;#160; The HD4350 now means she’ll be able to use the computer and her TV in half the HD glory that is 1080i.&amp;#160; One interesting issue I did come across was that turning the TV off and on again while an HD device was attached would stop the TV outputting any HD content until the attached device was rebooted.&lt;/p&gt;  &lt;p&gt;In other news, &lt;a href="http://velocityconf.com/velocity2009/public/schedule/detail/8523"&gt;this&lt;/a&gt; is an interesting exploration by dudes from Microsoft and Google into why doing web pages faster is a good idea and how HTTP Chunking is a very good way to deliver page headers to users while the server is fetching some results.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8948244738171382430?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8948244738171382430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8948244738171382430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8948244738171382430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8948244738171382430'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2011/01/2011-welcomes-careful-drivers.html' title='2011 Welcomes Careful Drivers'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4919762267633265782</id><published>2010-12-22T18:28:00.001Z</published><updated>2010-12-22T18:28:19.472Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='TRON'/><category scheme='http://www.blogger.com/atom/ns#' term='Film'/><title type='text'>TRON &amp; 3D</title><content type='html'>&lt;p&gt;I went to see Tron:Legacy last weekend.&amp;#160; In brief it is a good film, with fantastic visuals and an excellent soundtrack, but a far weaker story.&amp;#160; This was the first 3D film I saw, I never got round to seeing Avatar, so this was my introduction to the visual technology of the future.&lt;/p&gt;  &lt;p&gt;To be honest, I was far from impressed.&amp;#160; The glasses were strange and made my eyes water dreadfully throughout the first part of the advert.&amp;#160; I found wearing them to feel very unnatural.&amp;#160; I also thought that, although the use of 3D in the film was quite clever it looked slightly wrong (in the same way that blue screen sections of a film look wrong).&amp;#160; For example, at one point CLU addresses a large army he has amassed.&amp;#160; 3D effects are used to make him and the podium he is speaking from jump out of the screen to add to the depth already gained from having the army in the background out of focus.&amp;#160; I got the impression that he looked like a cardboard cutout, or one of those books where parts of the pictures jump out.&amp;#160; Although he appeared to ‘jump out’ of the screen, CLU himself didn’t appear 3D.&lt;/p&gt;  &lt;p&gt;The most effective use of 3D I saw was in one of the adverts, which was entirely CGI.&amp;#160; I suspect that entirely CGI’d films like Toy Story will be able to take the best advantage of 3D as the computers will be able to make the calculations to render the scenes to appear properly 3D rather than post processing, which will struggle to make scenes appear truly 3D rather than just as layers of cardboard cut-outs.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4919762267633265782?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4919762267633265782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4919762267633265782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4919762267633265782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4919762267633265782'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/12/tron-3d.html' title='TRON &amp;amp; 3D'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6531833950916457936</id><published>2010-12-08T22:52:00.001Z</published><updated>2010-12-08T22:52:53.108Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>The Empty String vs. Null</title><content type='html'>&lt;p&gt;One of the people I sit next to was taking part in some training today, for an End-User Report Writer course.&amp;#160; This course trains clients who buy our system how to write their own reports.&amp;#160; As you can imagine, some people excel at the course and others flop miserably as they fail to grasp the underlying themes of databases, computers and reports.&lt;/p&gt;  &lt;p&gt;One of the more academic parts of the course is distinguishing between null and an empty string.&amp;#160; A string is a sequence of zero or more characters.&amp;#160; A string of zero characters is known as the empty string, but is still an existing string.&amp;#160; Null means that there is no string.&lt;/p&gt;  &lt;p&gt;If the above explanation was a bit confusing, think of it in terms of fruit bowls.&amp;#160; A string contains a collection of characters just like a fruit bowl contains a collection of fruit.&amp;#160; The empty string is like an empty fruit bowl; the bowl is there but there is no fruit in it.&amp;#160; Null is where there is no fruit bowl, so we can’t even start to look in it to tell if anything is there.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6531833950916457936?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6531833950916457936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6531833950916457936' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6531833950916457936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6531833950916457936'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/12/empty-string-vs-null.html' title='The Empty String vs. Null'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5164911856139019449</id><published>2010-11-15T18:34:00.001Z</published><updated>2010-11-15T18:34:06.122Z</updated><title type='text'>‘This might be funny, but it really happened to me’</title><content type='html'>&lt;p&gt;If you’ve ever looked at a piece of code and thought ‘what was that guy on when he wrote that’, if you’ve ever seen a particular humourous or helpful error message or if you’ve ever had the weirdest interview you thought you could ever have, then you should really follow &lt;a href="http://thedailywtf.com/"&gt;The Daily WTF&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It’s even funnier when &lt;a href="http://thedailywtf.com/Articles/Dear-Sybase-MessageBoxes-Don&amp;rsquo;t-Belong-In-Drivers.aspx"&gt;the post&lt;/a&gt; is a missive by one of the editors of The Daily WTF about &lt;a href="http://www.sybase.com/ianywhere"&gt;the database system&lt;/a&gt; the company you work for makes extensive use of…&lt;/p&gt;  &lt;p&gt;It’s even more funnier when SQL Anywhere is supposed to be one of the better products to come out of Sybase…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5164911856139019449?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5164911856139019449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5164911856139019449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5164911856139019449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5164911856139019449'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/11/this-might-be-funny-but-it-really.html' title='‘This might be funny, but it really happened to me’'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5502178805917902905</id><published>2010-11-14T22:53:00.001Z</published><updated>2010-11-14T22:53:33.048Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seal Of Approval'/><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Dishing out Some Approval</title><content type='html'>&lt;p&gt;A couple of weeks ago I went back home to visit the parents and &lt;strike&gt;show my face&lt;/strike&gt; play ‘who-wants-a-climbing-frame’ at &lt;a href="http://en.wikipedia.org/wiki/St._Mary's_Church,_Broadwater"&gt;St. Mary’s&lt;/a&gt;.&amp;#160; My other plan on this trip was to set my sister up with an old PC that we had lying around as a Media Centre in her room.&amp;#160; She had an HD TV, so setup shouldn’t’ve been too difficult.&lt;/p&gt;  &lt;p&gt;Unfortunately upon waking up on Saturday morning, and trying to turn on my parent’s PC, the machine emitted a number of beeps and failed to display anything on screen.&amp;#160; Helpfully the internet concluded that the beep codes I was getting was related to memory or video (which is usually what’s up when your computer goes beep and doesn’t display a sausage [or anything else for that matter]) and removing the other PCI cards and unplugging the drives confirmed this.&amp;#160; Unplugging all the memory gave a different error, which narrowed it down to the graphics card, but unplugging it and replacing it with another similar card gave the same beeps…&lt;/p&gt;  &lt;p&gt;It turns out that the PCI-Express port had decided it was going to stop working, which was annoying because it was the only PCI-E x16 slot on the board so it looked like a new motherboard was needed.&amp;#160; Thankfully, the board I had handed down to my parents was an &lt;a href="http://uk.asus.com/product.aspx?P_ID=7y6didlJgWtEGy8b"&gt;Asus A8N5X&lt;/a&gt;, which happened to have a PCI-E 4x slot, with the back missing, so you could plug a full-width PCI-E x16 card in and get it working, just with a small performance loss that my parents aren’t really going to notice.&amp;#160; So Asus wins a Nick Pierce Seal of Approval for the provisioning of useful PCI-E 4x slots on their motherboards.&lt;/p&gt;  &lt;p&gt;Once that issue was fixed I turned to my sister’s PC.&amp;#160; Unfortunately I hadn’t had the forward planning to have gotten everything together, but to get it working beautifully, I realised I’d need additional RAM, a new graphics card capable of HD and some HD cable.&amp;#160; A quick visit to PC World scuppered that plan when I found that they were planning to lighten my Dad of &lt;a href="http://www.pcworld.co.uk/gbuk/belkin-pureav-hdmi-audio-video-cable-1-m-00939013-pdt.html"&gt;£40 for a metre of HD cable&lt;/a&gt;.&amp;#160; Almost reminds me of the &lt;a href="http://dotknot.blogspot.com/2009/09/from-marketing-department.html"&gt;ultimate student deal at Curry’s&lt;/a&gt; a few years ago.&amp;#160; According to &lt;a href="http://www.amazon.co.uk/XO-PLATINUM-STATION-High-Speed-ETHERNET/dp/B001QJXACO"&gt;amazon&lt;/a&gt;, a metre of HD cable is around 100g and &lt;a href="http://silverprice.org/silver-price-per-kilo.html"&gt;the price of silver&lt;/a&gt; is about £520 per kilo, making HD cable from PC World only a little less valuable than its weight in silver.&amp;#160; Therefore PC World wins a Nick Pierce Seal of Disapproval for extortion.&amp;#160; And yes, it was at least half the price on the internet.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5502178805917902905?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5502178805917902905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5502178805917902905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5502178805917902905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5502178805917902905'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/11/dishing-out-some-approval.html' title='Dishing out Some Approval'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-306778224744925284</id><published>2010-10-26T18:53:00.001+01:00</published><updated>2010-10-26T18:53:49.664+01:00</updated><title type='text'>Finally, a killer feature in a web browser</title><content type='html'>&lt;p&gt;&lt;a href="http://codebutler.com/firesheep"&gt;Reading up on this is tempting me to go change browsers…&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-306778224744925284?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/306778224744925284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=306778224744925284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/306778224744925284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/306778224744925284'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/10/finally-killer-feature-in-web-browser.html' title='Finally, a killer feature in a web browser'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-981437298634028345</id><published>2010-10-23T18:39:00.001+01:00</published><updated>2010-10-23T18:39:56.878+01:00</updated><title type='text'>Transcribe</title><content type='html'>&lt;p&gt;So I’ve spent the past few weeks writing an awesome program called &lt;a href="http://www.pixa.org.uk/transcribe"&gt;Transcribe&lt;/a&gt;, designed to help move data from a flat file or database table (or anything tabular in structure), to a relational database (or anything sporting such a likeness or anything sporting an &lt;a href="http://msdn.microsoft.com/en-us/library/h43ks021(VS.71).aspx"&gt;ADO.NET Data Provider&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Last week, I &lt;a href="http://dotknot.blogspot.com/2010/10/computer-purchases.html"&gt;rebuilt my computer&lt;/a&gt; with some nice new components and for the most part they all worked nicely and my computer is now fully operational again.&amp;#160; Before the rebuild I backed up all my data and committed all my source files to &lt;a href="http://subversion.tigris.org/"&gt;SVN&lt;/a&gt;.&amp;#160; Unfortunately, at some point a number of files went walkies from the head revision of the SVN repository so I have now lost a few ‘important’ classes and code files from the transcribe code base including much of the work I’d recently done on error reporting.&lt;/p&gt;  &lt;p&gt;Let the lesson be learned, commit little and often and double check your repository every now and again.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-981437298634028345?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/981437298634028345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=981437298634028345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/981437298634028345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/981437298634028345'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/10/transcribe.html' title='Transcribe'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7180542907538887142</id><published>2010-10-09T23:16:00.000+01:00</published><updated>2010-10-09T23:16:00.734+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Building Your Own</title><content type='html'>&lt;p&gt;Spurred on by the delivery of &lt;a href="http://dotknot.blogspot.com/2010/10/computer-purchases.html"&gt;my recent purchases&lt;/a&gt;, and the familiar, pleasant smell of &lt;a href="http://www.electronicsandyou.com/electronics-images/pcb.jpg"&gt;freshly picked PCB&lt;/a&gt;, I spent some time working out whether it’s worth building your own computer, or giving in to the &lt;a href="http://chinhuatw.files.wordpress.com/2008/02/devil.gif"&gt;marketing&lt;/a&gt; and getting a &lt;a href="about:blank"&gt;Dell&lt;/a&gt;.&amp;#160; The results pleasantly surprised me.&lt;/p&gt;  &lt;p&gt;The first system I spec’ed out was an expansion on what I’d bought the other day: a lower end &lt;a href="http://www.intel.com/products/processor/corei7/index.htm"&gt;Core i7&lt;/a&gt; system (&lt;a href="http://www1.euro.dell.com/uk/en/home/deals5/fs.aspx?refid=deals5&amp;amp;s=dhs&amp;amp;cs=ukdhs1"&gt;XPS Studio 8100?&lt;/a&gt;).&amp;#160; Including the monitor, keyboard, mouse and additional gubbins that Dell makes you get, I was able to get a system for £1050 on &lt;a href="http://www.scan.co.uk/"&gt;scan.co.uk&lt;/a&gt;, compared to £1300 with Dell.&lt;/p&gt;  &lt;p&gt;Suprised by quite how much I could save, I went down to the lower end, spec’ing out a lower end Inspiron 560, which boasted the mighty power of a &lt;a href="http://ark.intel.com/Product.aspx?id=42800"&gt;Pentium Dual Core E5500&lt;/a&gt; (which was released about 2 years ago).&amp;#160; I opted for the upgrade to 4Gb of RAM as it was on offer and would make finding a competitive price more difficult.&amp;#160; At first I also included a monitor, power surge, printer, etc.&amp;#160; Piling in the extras brought the Dell price to £815, which I was able to convincingly beat at £650.&lt;/p&gt;  &lt;p&gt;Despite adding plenty of extras, which is probably where Dell makes more of its money, I was expecting a far small margin on such a basic low-end PC.&amp;#160; To see what I could do against Dell’s rock bottom end, I removed all the optional stuff, leaving me with just a box with a &lt;a href="http://ark.intel.com/Product.aspx?id=42800"&gt;Pentium Dual Core E5500&lt;/a&gt;, 4Gb of RAM, &lt;a href="http://www.scan.co.uk/Products/Keysonic-KSK-8004U-Full-size-keyboard-with-modern-design-and-flat-keys"&gt;keyboard&lt;/a&gt;, &lt;a href="http://www.scan.co.uk/Products/Microsoft-Intelli-Optical-Mouse-800dpi-PS2-USB-11-20-5-Buttons-Ivory-Silver"&gt;mouse&lt;/a&gt;, DVD±RW, &lt;a href="http://www.wdc.com/en/products/products.asp?driveid=301"&gt;500Gb Hard Drive&lt;/a&gt;, Windows 7 Home Premium and Internet Security (&lt;a href="http://www.mcafee.com/uk/"&gt;McFail&lt;/a&gt; from Dell or &lt;a href="http://www.kaspersky.co.uk/"&gt;Kaspersky&lt;/a&gt; from Scan).&amp;#160; Dell’s price was £389, whilst the products I picked from Scan came to £378, yes I was still able to save a tenner against Dell when building a system.&lt;/p&gt;  &lt;p&gt;Of cause at the lower end, the price difference is quickly gobbled up by the additional half-day or so of work you'd have to do building the PC from the bits you bought from Scan, whereas the Dell can be pulled straight out of the box and put on a desk, plugged in and 30 hours later, the thing has finally booted… but at the upper end of the market, or for people requiring something a bit more comprehensive in their PC purchase, building your own (or supporting your friendly &lt;a href="http://dotknot.blogspot.com/"&gt;techie friend&lt;/a&gt; and getting them to do it for you) is still very much an option.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7180542907538887142?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7180542907538887142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7180542907538887142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7180542907538887142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7180542907538887142'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/10/building-your-own.html' title='Building Your Own'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1438680348005076596</id><published>2010-10-06T23:10:00.001+01:00</published><updated>2010-10-06T23:10:53.765+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Computer Purchases</title><content type='html'>&lt;p&gt;It’s computer upgrade time, and I’ve just lightened my bank balance by a smidge under £400 for some nice new computer innards:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ark.intel.com/Product.aspx?id=41316"&gt;Intel Core i7 860&lt;/a&gt; – &lt;em&gt;the most expensive component taking over half my total spend, but it is rated as one of the best processors to get.&amp;#160; I was considering going for a Core i5, but this i7 was only a few pounds more than the top i5, and comes with bonus street cred.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asus.com/product.aspx?P_ID=DfyAB26HiDpiiu8f"&gt;Asus P7P55D-E LX&lt;/a&gt; – &lt;em&gt;A nice mid range board straddling the low range P7P55D and mid-range P7P55D-E by foregoing SLI and Crossfire but keeping the faster S-ATA ports and USB 3.0 of the latter.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;4Gb Corsair DDR3 1333 RAM – &lt;em&gt;Standard RAM&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;500W PSU – &lt;em&gt;The cheapest 500W PSU I could find that claimed to be silent.&amp;#160; I hope it stays that way as the PSU fan in my PC at the moment is the loudest fan in there, which you really notice when the other fans are turned down.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I brought the bits from &lt;a href="http://www.scan.co.uk/"&gt;scan.co.uk&lt;/a&gt;, who I’ve used in the past and found to be consistantly cheap and reliable.&amp;#160; A mention should also go to &lt;a href="http://www.tomshardware.co.uk/"&gt;Tom’s Hardware&lt;/a&gt;, who suggested the motherboard.&lt;/p&gt;  &lt;p&gt;Also placed on the Christmas list were a couple of hard drives: a &lt;a href="http://www.wdc.com/en/products/products.asp?driveid=552"&gt;500Gb WD Caviar Black&lt;/a&gt; to replace the system drive in my PC, and a &lt;a href="http://www.wdc.com/en/products/products.asp?driveid=763"&gt;1Tb WD Caviar Green&lt;/a&gt; to replace one of the backup drives, which will then replace the media drive in my PC.&lt;/p&gt;  &lt;p&gt;Now I just have to work out some logistics with servers to get my documents backed up before I reinstall.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1438680348005076596?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1438680348005076596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1438680348005076596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1438680348005076596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1438680348005076596'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/10/computer-purchases.html' title='Computer Purchases'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6479407885465959041</id><published>2010-09-20T22:48:00.000+01:00</published><updated>2010-09-20T22:48:00.278+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Today’s Excessively Long Class Name of the Day</title><content type='html'>&lt;p&gt;UnmappedRequiredTargetColumnRowSourceWarning – represents a warning on a row source when a required target column has not been mapped to.&lt;/p&gt;  &lt;p&gt;And don’t forget it’s factory class UnmappedRequiredTargetColumnRowSourceWarningFactory, which scans RowSources to find said warnings.&lt;/p&gt;  &lt;p&gt;Over-engineering much?&lt;/p&gt;  &lt;p&gt;In other news:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://www.salesforcewatch.com/images/2007/05/09/lolcat.jpg" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6479407885465959041?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6479407885465959041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6479407885465959041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6479407885465959041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6479407885465959041'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/todays-excessively-long-class-name-of.html' title='Today’s Excessively Long Class Name of the Day'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-170729405852749899</id><published>2010-09-18T22:16:00.000+01:00</published><updated>2010-09-18T22:16:00.555+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Christianity'/><title type='text'>Investing in Relationships</title><content type='html'>&lt;p&gt;A rather nice metaphor for the need to spend time with God came to me on Sunday.&amp;#160; If you have a load of money and you want it to grow, do you put it in a pot and forget about it, or do you invest it &lt;a href="http://virtualopinion.files.wordpress.com/2008/10/47_lehman_brothers.jpg"&gt;(wisely)&lt;/a&gt;, share it with people and do things with it?&amp;#160; Chances are that putting it in a &lt;a href="http://www.dilos.com/dilosimages/image/crete/knossos018.jpg"&gt;pot&lt;/a&gt; and forgetting about it will make it shrink, inflation will make goods and services more expensive and it you’re unlucky other people will come along and take bits of it or even the whole lot.&amp;#160; If you want your money to grow you have to invest it and do things with it.&lt;/p&gt;  &lt;p&gt;This itself, is not unobvious (which totally is a word) but I was reminded of it again during the week whilst surfing the internet.&amp;#160; In computing, it’s very easy to get stuff for free – &lt;a href="http://linux.co.uk/"&gt;Operating Systems&lt;/a&gt;, &lt;a href="http://gcc.gnu.org/"&gt;compilers&lt;/a&gt;, games, &lt;a href="http://www.openoffice.org/"&gt;office suites&lt;/a&gt;, accounting software for example – much of which is quite complex and takes someone else’s time to produce.&amp;#160; I was downloading the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=e1a87d8f-2d58-491f-a0fa-95a3289c5fd4&amp;amp;displaylang=en"&gt;FoxPro OLEDB Provider&lt;/a&gt; (don’t laugh) and &lt;a href="http://www.sybase.co.uk/products/databasemanagement/sqlanywhere"&gt;Sybase’s SQL Anywhere SDK&lt;/a&gt; for &lt;a href="http://www.pixa.org.uk/transcribe/"&gt;my project of the moment&lt;/a&gt;.&amp;#160; I was expecting to have to pay for Sybase’s SDK, but was pleasantly surprised to find it was free, because much of Sybase’s produce strikes me as the kind of overpriced rubbish that infests commercial software development.&lt;/p&gt;  &lt;p&gt;Anyway, often in computing you can just go in, download something, read a few examples and be up and running in a day or two.&amp;#160; With God it’s not quite the same.&amp;#160; The Bible has no quick tutorials to let you hack together something quickly, it’s difficult and challenging from end to end.&amp;#160; With a new appreciation of the troubles that hacked-together-in-two-days-with-a-tutorial code looks like and the problems it causes, I hope that this will encourage me to read the Bible and spend time with God on a more regular basis than what might occur at the moment…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-170729405852749899?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/170729405852749899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=170729405852749899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/170729405852749899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/170729405852749899'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/investing-in-relationships.html' title='Investing in Relationships'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2577471284759291338</id><published>2010-09-15T22:14:00.001+01:00</published><updated>2010-09-15T22:14:43.420+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seal Of Approval'/><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='iPlayer'/><title type='text'>BBC iPlayer wins Nick Pierce Seal of Approval</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_NI_l8ifjiAI/TJE3PvtLR6I/AAAAAAAAAEM/tTsl2dehVFs/s1600-h/SealofApproval11.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Seal of Approval" border="0" alt="Seal of Approval" align="right" src="http://lh4.ggpht.com/_NI_l8ifjiAI/TJE3QdGlY9I/AAAAAAAAAEQ/clw-h8onWG0/SealofApproval_thumb9.png?imgmax=800" width="150" height="150" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The BBC have released a new version of the &lt;a href="http://www.bbc.co.uk/iplayer"&gt;iPlayer&lt;/a&gt; desktop application and website, and I must say that I am impressed how many optical carcinogens have been eradicated in this release.&lt;/p&gt;  &lt;p&gt;The desktop application is quite stunning, and hasn’t suffered from the glitchy sloppy UI of its predecessor.&amp;#160; The UI is both more attractive and informative, providing download speed and time left indicators when downloading a film and showing the exact date the application thinks a downloaded program will expire.&amp;#160; I know I’ve had a fair few program in the past suddenly wiped from my queue when I thought I had weeks left, which was quite annoying.&lt;/p&gt;  &lt;p&gt;In other news, &lt;a href="http://blog.headspin.com/?p=274"&gt;this&lt;/a&gt; is a good post about complexity in program, which suddenly veers off towards Javascript land, but does end up linking to this piece of mandatory reading on the mechanics of said script.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2577471284759291338?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2577471284759291338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2577471284759291338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2577471284759291338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2577471284759291338'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/bbc-iplayer-wins-nick-pierce-seal-of_15.html' title='BBC iPlayer wins Nick Pierce Seal of Approval'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_NI_l8ifjiAI/TJE3QdGlY9I/AAAAAAAAAEQ/clw-h8onWG0/s72-c/SealofApproval_thumb9.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1434482895429269283</id><published>2010-09-07T21:41:00.001+01:00</published><updated>2010-09-07T21:41:28.595+01:00</updated><title type='text'>BBC iPlayer wins Nick Pierce Seal of Approval</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_NI_l8ifjiAI/TIajdYaa29I/AAAAAAAAAEE/26vDjfAaiuo/s1600-h/Seal%20of%20Approval%5B11%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Seal of Approval" border="0" alt="Seal of Approval" align="right" src="http://lh5.ggpht.com/_NI_l8ifjiAI/TIajd1HLFMI/AAAAAAAAAEI/cYveye3bC5w/Seal%20of%20Approval_thumb%5B9%5D.png?imgmax=800" width="150" height="150" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The BBC have released a new version of the &lt;a href="http://www.bbc.co.uk/iplayer"&gt;iPlayer&lt;/a&gt; desktop application and website, and I must say that I am impressed how many optical carcinogens have been eradicated in this release.&lt;/p&gt;  &lt;p&gt;The desktop application is quite stunning, and hasn’t suffered from the glitchy sloppy UI of its predecessor.&amp;#160; The UI is both more attractive and informative, providing download speed and time left indicators when downloading a film and showing the exact date the application thinks a downloaded program will expire.&amp;#160; I know I’ve had a fair few program in the past suddenly wiped from my queue when I thought I had weeks left, which was quite annoying.&lt;/p&gt;  &lt;p&gt;In other news, &lt;a href="http://blog.headspin.com/?p=274"&gt;this&lt;/a&gt; is a good post about complexity in program, which suddenly veers off towards Javascript land, but does end up linking to this piece of mandatory reading on the mechanics of said script.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1434482895429269283?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1434482895429269283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1434482895429269283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1434482895429269283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1434482895429269283'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/bbc-iplayer-wins-nick-pierce-seal-of.html' title='BBC iPlayer wins Nick Pierce Seal of Approval'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_NI_l8ifjiAI/TIajd1HLFMI/AAAAAAAAAEI/cYveye3bC5w/s72-c/Seal%20of%20Approval_thumb%5B9%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2737191619000917662</id><published>2010-09-06T18:26:00.001+01:00</published><updated>2010-09-06T18:26:27.343+01:00</updated><title type='text'>What can’t you do with XML?</title><content type='html'>&lt;p&gt;Many of the projects I make use XML at some point, usually to save settings or working state to a file.&amp;#160; With a view to improving the interoperability of my applications, I’ve decided that XML documents produced by my applications should have an accompanying schema and namespace.&amp;#160; Having a formal schema acts a contract between consumers and producers of data with regards to what goes where in a particular format.&lt;/p&gt;  &lt;p&gt;Therefore I proudly announce the launch of &lt;a href="http://schema.pixa.org.uk/"&gt;http://schema.pixa.org.uk/&lt;/a&gt;, which will act as the root URL for namespaces within my own personal projects.&amp;#160; If you really want to be wowed, check out one of the schemas for transcribe.&amp;#160; Yes, you’re actually served an XSD, transformed by XSL.&amp;#160; There’s still a few changes that need to be made, and yes Internet Explorer still manages to make life difficult by not supporting XSLT 2.0 functions…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.co.uk/Microsoft-Wheel-Mouse-Optical-White/dp/B000E1Z4UQ/ref=sr_1_1?ie=UTF8&amp;amp;s=computers&amp;amp;qid=1283793475&amp;amp;sr=8-1"&gt;Anyway, in other news, computing perfection is now available for under £10.&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2737191619000917662?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2737191619000917662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2737191619000917662' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2737191619000917662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2737191619000917662'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/what-cant-you-do-with-xml.html' title='What can’t you do with XML?'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1905228737052284450</id><published>2010-09-04T10:14:00.001+01:00</published><updated>2010-09-04T10:14:21.981+01:00</updated><title type='text'>Finding out sizes of files in folders</title><content type='html'>&lt;p&gt;My hard drives have started to run low on space recently (something to do with videos and games), and I wanted to know where my disk space was going on my primary drive so that I could remove the largest, least used programs.&amp;#160; So I went and consulted with the great oracle of the internet for some decent software to help me discover what folders consumed what space.&lt;/p&gt;  &lt;p&gt;I was very disappointed with the answers the great oracle gave me.&amp;#160; Some cost money (how can you charge for a program that should take no more than 2 days to write?), whilst some were beyond useless.&amp;#160; Eventually I found a program called WinDirStat on Sourceforge, which was free and has this awesome Pac-man animation, but sure is taking its own sweet time to scan my hard drive for files.&lt;/p&gt;  &lt;p&gt;But really, how hard can it be to scan a drive for files and show a useful listing of what percentage of my drive they are using?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1905228737052284450?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1905228737052284450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1905228737052284450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1905228737052284450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1905228737052284450'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/finding-out-sizes-of-files-in-folders.html' title='Finding out sizes of files in folders'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6650675256215250584</id><published>2010-09-01T18:40:00.001+01:00</published><updated>2010-09-01T18:40:37.777+01:00</updated><title type='text'>Transcribe</title><content type='html'>&lt;p&gt;During training at work, we were asked to write something awesome when we had a few hours to spare one Friday afternoon.&amp;#160; So I decided to write a replacement to our company’s internal import process, which could be done one of two ways: via DBF files from the days of FoxPro or a VB.NET program that had more bugs than features.&lt;/p&gt;  &lt;p&gt;Transcribe is a program that can take data from a number of flat files and import them into a database.&amp;#160; At the moment it can only import from CSV files to an Access Database, but it is set up to be entirely expandable to other formats.&lt;/p&gt;  &lt;p&gt;Downloads and more details can be found on the &lt;a href="http://www.pixa.org.uk/transcribe"&gt;website that I has&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6650675256215250584?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6650675256215250584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6650675256215250584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6650675256215250584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6650675256215250584'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/09/transcribe.html' title='Transcribe'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7990283248268756113</id><published>2010-08-26T23:52:00.001+01:00</published><updated>2010-08-26T23:52:51.999+01:00</updated><title type='text'>Dr. Who Adventure Games Episode 1</title><content type='html'>&lt;p&gt;So I thought I’d finally get round to playing the Dr. Who Adventure Games.&amp;#160; It was quite pretty, but also very short and simple, perhaps a little too short and simple.&amp;#160; Mind you, that does reflect some of the episodes at times.&lt;/p&gt;  &lt;p&gt;It also lacks the ability to have anti-aliasing without haxy renaming workaround, but it did work with my XBox 360 Controller out of the box which I thought worked quite well with the simple character control mechanics.&lt;/p&gt;  &lt;p&gt;But yeah, I’m pretty sure it took me longer to download the game than complete it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7990283248268756113?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7990283248268756113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7990283248268756113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7990283248268756113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7990283248268756113'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/08/dr-who-adventure-games-episode-1.html' title='Dr. Who Adventure Games Episode 1'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-231445262429869507</id><published>2010-08-17T21:56:00.001+01:00</published><updated>2010-08-17T21:56:49.235+01:00</updated><title type='text'>Songbird</title><content type='html'>&lt;p&gt;For those of you who may not know, I’m idly keeping an eye out for replacements for 3 programs I use quite a bit – &lt;a href="http://windows.microsoft.com/en-US/windows7/products/features/windows-media-player-12"&gt;Windows Media Player&lt;/a&gt;, &lt;a href="http://office.microsoft.com/en-us/outlook/"&gt;Outlook&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/jonathanh/archive/2004/12/09/279292.aspx"&gt;Offline Files&lt;/a&gt;.&amp;#160; The other day I thought I’d download &lt;a href="http://www.getsongbird.com/"&gt;Songbird&lt;/a&gt; to test it out as a replacement for Windows Media Player.&lt;/p&gt;  &lt;p&gt;Let’s start by reviewing what I like and don’t like about Windows Media Player (version 12 on Windows 7).&amp;#160; I like the library alot, the finer points of library organisation aside I like how it can organise my music by albums, artist, genre and a whole load of other ratings.&amp;#160; Navigation around the library feels natural and I can easily add whatever it is I’m looking at to whatever play list I’m editting.&amp;#160; I also think that the interface looks clean and uncluttered.&lt;/p&gt;  &lt;p&gt;What I don’t like is Windows Media Player’s feeble attempts to organise my videos, it’s lack of compatibility for &lt;a href="http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC"&gt;H.264&lt;/a&gt;.&amp;#160; I do like how the &lt;a href="http://en.wikipedia.org/wiki/UPnP_AV_media_server"&gt;UPnP\AV sharing&lt;/a&gt; links to my library, but when my library isn’t including the video I want to watch it’s a bit annoying.&amp;#160; Another pet peeve of mine is the program’s contempt for album art, with most images being shrunk to 300x300 pixels which isn’t even big enough to be displayed nicely on the &lt;a href="http://agert.homelinux.org/~bengt/Nav/bilderallm/h2210.jpg"&gt;portable pocket device of the millenium&lt;/a&gt;.&amp;#160; I also think that the lack of integration with online stores is a bit annoying.&amp;#160; Since using &lt;a href="http://store.steampowered.com/"&gt;Steam&lt;/a&gt; I’m coming round to the idea that some kind of online media purchasing service from which I could quickly and easily buy new music and that would allow me to re-download my purchases as some kind of cloud based backup would be a welcome addition.&amp;#160; Having just clicked on the Online Stores button, Windows Media Player has offered me the overwhelming choice of 0 online stores, and even if it had, the integration would have been a bit janky.&amp;#160; Also Windows Media Player often seems to take a few minutes to catch up with the world, something a bit snappier would be nice.&lt;/p&gt;  &lt;p&gt;So… Songbird.&amp;#160; If I had to sum up Songbird in one word it would be underwhelming.&amp;#160; Songbird is a cross platform media player built using the same XUL framework as that &lt;strike&gt;quali…&lt;/strike&gt; &lt;strike&gt;appal…&lt;/strike&gt; other browser &lt;abbr title="Inferiorfox"&gt;&lt;a href="http://i.zdnet.com/blogs/internet_explorer.png"&gt;Firefox&lt;/a&gt;&lt;/abbr&gt;.&amp;#160; If you thought that Windows Media Player was a lumbering &lt;a href="http://files.myopera.com/engi/albums/682656/ice_age_3_manny-1024x768.jpg"&gt;Wolly Mammoth&lt;/a&gt;, you’ve never experienced the &lt;a href="http://4.bp.blogspot.com/_kYSTM3xWI8s/SJ6NKwioB1I/AAAAAAAACSU/SaIaMJKPYH4/s400/vytizm.jpg"&gt;glacial pace of Songbird&lt;/a&gt; as it ponders the creation of a new tab to let you download an addon.&lt;/p&gt;  &lt;p&gt;Talking of addons (a major selling point of Songbird) I looked on the Songbird addon site and saw a few addons that looked good, some nice media views and themes and then discovered that they &lt;a href="http://addons.songbirdnest.com/addon/1311"&gt;weren’t&lt;/a&gt; &lt;a href="http://addons.songbirdnest.com/addon/1309"&gt;compatible&lt;/a&gt; with the latest version of Songbird that I’d downloaded.&amp;#160; What is the point in offering up addons for out of date software?&amp;#160; And what is the point in featuring addons for said out of date software?&amp;#160; Media players are the kind of software that you update frequently, particularly if you’ve gone miles out of your way to download and use Songbird!&amp;#160; Installing addons wasn’t exactly a smooth experience either, every addon required a restart and the themes often required downloading and installing twice before Songbird realised I did actually want to install them and then it needed a further restart to apply correctly.&amp;#160; On the plus side, I have found a &lt;a href="http://addons.songbirdnest.com/addon/1661"&gt;half decent theme&lt;/a&gt; that stops Songbird looking like iTunes dipped in a purple paint bucket.&lt;/p&gt;  &lt;p&gt;After installing Songbird, it scanned my music folders and found my library used what Windows Media Player refers to as Contributing Artists (and treats secondly to the Album Artist) as the primary artist I wanted to arrange everything by so my collection is a little out of sorts when arranged by Artist. Out of the box, the Songbird library isn’t much to write home about, but once you managed to trick Songbird into installing a few Media Views things … get little better.&amp;#160; I did manage to find a Media View that would give me a listing of artists with some jazzy album art, but when I tell it to use the Album Artist it decided that every other entry is ‘Various Artists’.&amp;#160; The Media View I downloaded didn’t really work how I wanted to, I like being able to have a list of albums or artists and double click to get a list of their songs.&amp;#160; I find it natural and it means I’m never wasting half the screen with a list of songs that filters once you select an album (which is how the Media View worked).&amp;#160; With Songbird being extensible and open source I could make one myself, but I don’t care that much when you bare in mind that A) Songbird is slow, B) I’m not going to be using it that much, C) Windows Media Player works that way for music nicely and D) Songbird is slow.&lt;/p&gt;  &lt;p&gt;On the plus side it does play music.&amp;#160; And it does have plugins for integrating with online music sites, lyrics, metadata providers and a rather cool plugin that tells you when bands in your library are in concert (except you couldn’t see the choices in the them I was using) or have new albums and singles out.&lt;/p&gt;  &lt;p&gt;However it is slow and it does (like the world’s worst media player) lack a Now Playing playlist (although it does seem to make a new playlist to which you can add files).&amp;#160; You can also only monitor one folder for files to be automatically added to the library (so video and music in separate places is out), oh and it’s slow.&lt;/p&gt;  &lt;p&gt;In summary: Songbird is a nice idea, but is missing some necessary speed and &lt;a href="http://www.iwise.com/ZXfdq"&gt;lickable user interface&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Oh and did I mention it’s a bit slow.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-231445262429869507?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/231445262429869507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=231445262429869507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/231445262429869507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/231445262429869507'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/08/songbird.html' title='Songbird'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-381504898759739537</id><published>2010-08-11T20:32:00.001+01:00</published><updated>2010-08-11T20:32:59.368+01:00</updated><title type='text'>Further Spotify Usability Failures</title><content type='html'>&lt;p&gt;So I was just using Spotify because I fancied listening to some albums I have yet to actually purchase.&amp;#160; I have these albums set up in their own playlists so I can double click on the link in the left hand listy bit.&amp;#160; But what if I wanted to have both albums play?&lt;/p&gt;  &lt;p&gt;In Windows Media Player (a replacement for which I still have yet to find (mostly for the lack of time to invest in finding such a replacement)) I could shift select both albums in library view, or drag both separately to the Now Playing list, or double click one and use the context-menu on the album to add it to the now playing list (or any other of the lists like Sync list, Burn list, etc.).&amp;#160; I can’t find any way to play both albums without creating a new playlist and I’m not about to make the 64 playlists I would need to make to cover all the combinations of the 8 playlists I happen to have set up at the moment.&lt;/p&gt;  &lt;p&gt;I also thought I had a whole post listing the many usability failings of Spotify but I can’t find it…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-381504898759739537?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/381504898759739537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=381504898759739537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/381504898759739537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/381504898759739537'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/08/further-spotify-usability-failures.html' title='Further Spotify Usability Failures'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2306516039788718036</id><published>2010-08-04T20:54:00.001+01:00</published><updated>2010-08-04T20:54:52.330+01:00</updated><title type='text'>New Wine 2010</title><content type='html'>&lt;p&gt;I got back from the LSE week of &lt;a href="http://www.new-wine.org/"&gt;New Wine&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Shepton_Mallet"&gt;Shepton Mallet&lt;/a&gt; on Sunday (after spending Saturday night in Bath with uni friends).&amp;#160; Words cannot describe the pure unfettered awesomeness that was New Wine LSE 2010.&lt;/p&gt;  &lt;p&gt;As always I was a small group leader in &lt;a href="http://www.new-wine.org/summer/teams/childrens-teams"&gt;Bouldergang&lt;/a&gt;, the kids sessions for 10 &amp;amp; 11 year olds.&amp;#160; This year’s theme was super heros, reflecting the title for this year’s New Wine: Unstoppable and the ‘heros of faith’ in Hebrews 11 that was the focus of the Bouldergang talks.&amp;#160; Each day, Bouldergang has a 3.5 hour morning session (except the day off) and a 2 hour evening session.&amp;#160; The morning sessions consist of general antics on the stage, followed by Worship, a Talk and then a Art, Sport or Drama workshop that the kids rotate around.&amp;#160; After the workshop follow some more general antics on stage, including the gunging of a small group leader (for which small group leaders must volunteer).&amp;#160; The evening follows a similar format to the morning, except for the workshops.&amp;#160; As a small group leader I was responsible for 8 kids, ensuring the general order was kept whilst the antics on stage were on going, keeping them together during the workshops and praying with them after the talks if needed.&lt;/p&gt;  &lt;p&gt;Normally in church, getting involved with the kids work means forgoing most, if not all, of the main service.&amp;#160; In Bouldergang they have addressed this by providing a couple of pastors to each team who lead 30-45 minutes of ‘team time’ before each session.&amp;#160; Team time usually consists of worship, a talk and a time of prayer before we break up for the kids to arrive.&amp;#160; In previous years I have felt the team times were a bit bewildering as those who are more free in their worship move around alot – if you thought flag wavers were annoying, try having someone in the corner of your eye with their hands in the air bobbing heavily out of time with the music – and hear all sorts of awesome things from God, whilst I hear … very little.&amp;#160; This year however, those other team members seemed to have restrained their excessive movements somewhat and I actually heard quite a lot from God, which was fantastically encouraging and gave some food for thought over the next few weeks.&lt;/p&gt;  &lt;p&gt;I love helping in Bouldergang for 3 reasons.&amp;#160; Firstly, the intense worship in team times, and support from other friends on team is very encouraging and uplifting for facing the often challenging week and life back home.&amp;#160; I felt that, this year in particular, that lots of things helped make it easier at those times to let God in to help with difficulties and discouragements I’ve had.&lt;/p&gt;  &lt;p&gt;Secondly, the kids are so awesome it is beyond words.&amp;#160; I love being responsible and looking out for the children that are put in my group, and I enjoy praying for them and with them and seeing them change over the week.&amp;#160; During the registration one of the girls who was put in my group came up to me with her Mum looking very sad, shy and scared.&amp;#160; As the week went on, her and the other girl in my group got to know each other very well and traded addresses at the end of the week.&amp;#160; I hope that they keep in contact and become great friends.&amp;#160; The other great thing about the kids is during worship, when you stop singing and listen to the 650 10 &amp;amp; 11 year olds in the Bouldergang venue singing their hearts out to God.&amp;#160; Thirdly, is Mark Griffith’s talk.&amp;#160; Every year, he comes and does a fantastic talk about suffering and our response as Christians.&amp;#160; He always manages to find some of the most heart wrenching, tear jerking stories an tell them in such a fantastic, sensitive way.&amp;#160; I think that last year’s talk was far sadder than this years, but this years was still the solid gold talk Mark always manages to deliver.&lt;/p&gt;  &lt;p&gt;Thirdly, I love how Bouldergang enthuses the kids to live for Jesus.&amp;#160; It is fantastic to see so many kids having such a positive experience of Jesus, and even if they don’t join in the worship and listen to the talks, everyone pays attention to the fun and capers on stage proving that Christians aren’t just quiet, boring people who whole themselves up in a boring, cold church with hard, immovable pews on Sundays.&amp;#160; Events like New Wine are so vital for children to encourage them to have the boldness to live out their faith.&amp;#160; It was this that I noticed when I was 15 that got me here today, and I am overjoyed at the opportunity to help support and encourage children from Christian families to reach more people like me.&lt;/p&gt;  &lt;p&gt;Shame it only lasts for one week.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2306516039788718036?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2306516039788718036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2306516039788718036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2306516039788718036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2306516039788718036'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/08/new-wine-2010.html' title='New Wine 2010'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-987181331111937038</id><published>2010-07-16T12:39:00.001+01:00</published><updated>2010-07-16T12:39:02.104+01:00</updated><title type='text'>Searching for Software: Synchronisation</title><content type='html'>&lt;p&gt;One background project I’m semi-working on is looking for replacements for software that I commonly use that will work better.&amp;#160; One of those areas is synchronisation software.&lt;/p&gt;  &lt;p&gt;At home I have a &lt;a href="http://en.wikipedia.org/wiki/Windows_Server_2003"&gt;Windows Server 2003&lt;/a&gt; Domain Controller that serves files to computers on my network.&amp;#160; For the most part this is all fine and dandy, I’ve &lt;a href="http://support.microsoft.com/kb/232692"&gt;redirected&lt;/a&gt; the appropriate user folders to point at a file share on the server so everyone has the same documents everywhere.&amp;#160; The problem comes when I move away to uni or placement.&amp;#160; Whilst there, my computer and laptop aren’t on the local network so they have to use &lt;a href="http://blogs.technet.com/b/filecab/archive/tags/client_2d00_side+caching+_2800_csc_2900_/"&gt;Offline Files&lt;/a&gt; to keep a local cache of my files.&amp;#160; Offline Files is great because:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It’s very transparent, when I’m away from home I can access my documents perfectly as I would do at home.&lt;/li&gt;    &lt;li&gt;It’s easy to start synchronising the local cache with the server via &lt;a href="http://en.wikipedia.org/wiki/Virtual_private_network"&gt;VPN&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But there are a few problems:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It’s unreliable over the VPN connection, helped in no part by the appaling quality of our home broadband connection.&lt;/li&gt;    &lt;li&gt;It takes ages to get going.&lt;/li&gt;    &lt;li&gt;When something goes wrong with the sync, Offline Files is not forthcoming with details.&lt;/li&gt;    &lt;li&gt;When I’m at home working online, offline files sees fit to consume my computer’s processing power every couple of minutes to update sparsely cached files.&lt;/li&gt;    &lt;li&gt;Some games don’t like having My Documents on a remote file share.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/w7itproperf/thread/a9b6383c-db5d-4f0a-a864-22d9b54037bb"&gt;There’s an issue with Windows 7 taking ages to log on if offline files is enabled with certain group policies&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So I’d quite like a nice piece of software that I could use to replace it.&amp;#160; That way I could solve many of the problems I’m having by having a local documents store on each computer which could be synced as I updated files with my home server and any other computers – just like dropbox but on my server with as much data as I choose.&lt;/p&gt;  &lt;p&gt;So here’s my requirements:&lt;/p&gt;  &lt;h2&gt;Server\Client Architecture&lt;/h2&gt;  &lt;p&gt;In order to work well, I can’t rely on directly accessing my server’s file share while I’m away from home, because that’s partly what makes Offline Files so unreliable.&amp;#160; Therefore, the software would need separate server and client components so that file processing could be done locally rather than having to transfer too many files.&lt;/p&gt;  &lt;h2&gt;Efficient data exchange&lt;/h2&gt;  &lt;p&gt;When I’m synchronising I’ll be sending and receiving data between residential broadband connections, usually with different providers so transfer speeds aren’t going to be particularly fast.&amp;#160; I don’t mind this because I need my data in those two places and this is the only feasible way of getting a “decent” internet connection.&lt;/p&gt;  &lt;p&gt;Therefore, the software would need an efficient protocol that only transmitted parts of files that had changed and preferably compressed the data it sent.&amp;#160; The ability to encrypt the connection would be nice as well, but I’ll settle for going without if the software supports compression.&lt;/p&gt;  &lt;p&gt;Relatedly, the software should be able to immediately synchronise files that I save.&amp;#160; I shouldn’t have to wait for a few minutes while every other file is checked when it’s clear that I’ve changed one file that I’d like to appear everywhere else.&amp;#160; It should not be too hard for the client service to sit in the background and wait for me to change files.&lt;/p&gt;  &lt;h2&gt;A pleasant user interface&lt;/h2&gt;  &lt;p&gt;Much as I like playing with text files and trusting programs that are providing me with no visible feedback whatsoever, I need a user interface to let me configure the software easily, to tell me what it’s doing, how the last transfer went, how much data has been transferred, and so on.&lt;/p&gt;  &lt;h2&gt;Choosing files to synchronise&lt;/h2&gt;  &lt;p&gt;Being able to synchronise multiple sets of documents is vital (i.e. synchronising \\server\nicholas to C:\path\nicholas and \\server\public to C:\some\other\path\public) so that the software can be a valid multi-user solution.&lt;/p&gt;  &lt;p&gt;Relatedly, excluding files and folders from being synchronised would be useful, but is not vital.&lt;/p&gt;  &lt;p&gt;These are the minimum set of features that I need for such software, and can I find such a beast? No, not without paying for something that doesn’t really fit my requirements either.&amp;#160; I’m really suprised that the open source community hasn’t developed something better.&amp;#160; Almost anything open source is just completely incompatible with Windows, unless you fancy haxing around with &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;, which is A) rarely fun and B) a cop out, and lacks the kind of integration and user interface I’m looking for.&amp;#160; Any remotely hosted service is unlikely to be able to cope with my needs without significant expense: my family has over 100Gb of documents in over 100,000 files, which is &lt;a href="http://www.dropbox.com/pricing"&gt;more than Dropbox will give me even if I want to give them money in exchange&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I am open to suggestions, including paid for software, preferably without subscription fees.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-987181331111937038?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/987181331111937038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=987181331111937038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/987181331111937038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/987181331111937038'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/07/searching-for-software-synchronisation.html' title='Searching for Software: Synchronisation'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3169851075163023658</id><published>2010-07-14T00:47:00.001+01:00</published><updated>2010-07-14T00:47:58.610+01:00</updated><title type='text'>Post Mortem of Webflex</title><content type='html'>&lt;p&gt;For anyone who doesn’t know, Webflex is a project I’ve been working on in various guises for the past 4 years.&amp;#160; It initially started out as a really cool idea to have a forum engine (called Aspex) with a &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt; based API that other systems (like desktop notification programs and complete desktop clients) could easily plug into.&lt;/p&gt;  &lt;p&gt;Aspex started after I realised that I was entering exactly the same information into a number of different forums I’d joined, so I thought that a program that could read the forum and register me automatically would be really useful.&lt;/p&gt;  &lt;p&gt;The initial idea started well, but eventually I realised that I’d made this rather useful row-based database security system, which was quite useful.&amp;#160; So I figured that it wouldn’t be too much work to break this out into a separate project that I could in future use as the foundation of a number of different projects, and so Webflex was born.&lt;/p&gt;  &lt;p&gt;Webflex is a bare bones system that allows for user registration and group based rights assignment on individual items in a database.&amp;#160; Unfortunately it never really stopped growing.&amp;#160; A few years ago I started work on a &lt;a href="http://worthing.pixa.org.uk/aifhs"&gt;new website&lt;/a&gt; for the &lt;a href="http://www.anglo-italianfhs.org.uk/"&gt;Anglo-Italian Family History Society&lt;/a&gt; (AIFHS) Website, and I decided that I could use Webflex as the base from which to build the website.&amp;#160; Webflex would, first and foremost allow users to register with the society easily so that we could make it much easier for users to join the society and get results quickly.&amp;#160; As I developed the site, I also developed Webflex as I discovered parts and subsystems that the AIFHS website would need.&amp;#160; This lead to me developing, in one project: a web framework, a object-relational mapping framework, a security framework, a very flexible task scheduler, a Windows Forms client for the web framework, an actual website and a user interface for the client to edit data in the site.&lt;/p&gt;  &lt;p&gt;The way I can see it, there were two reasons for the failure:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There was too much to do, which was mostly because&lt;/li&gt;    &lt;li&gt;I didn’t really know where Webflex was going to stop because I didn’t have a plan.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Planning these kind of projects is really vital.&amp;#160; I did enjoy being able to quickly come up with ideas for different subsystems and quickly implement them, but I’ve re-written the entire system 3 times and most subsystems and since been rewritten at least once.&amp;#160; I am proud of a couple of parts of Webflex: the way in which security works and the installation subsystem (a perfect piece of object oriented design if ever there was one).&lt;/p&gt;  &lt;p&gt;If I was to redo Webflex again, I would certainly plan things through much better and do them right the first time rather than the fifth time.&amp;#160; Systems Engineering was kind enough to teach us that the foundation of a good system is in the plan and requirements documents.&amp;#160; Webflex had neither of these and fell flat after far too long.&lt;/p&gt;  &lt;p&gt;I would also do the client quite differently.&amp;#160; Writing the Windows Forms based client sucked.&amp;#160; I absolutely dreaded writing for the client, it exemplified the clunkiness of the rest of the system and (mostly due to a lack of planning) the code had about 5 different styles of co-ordinating data as I’d identified techniques that could be abstracted.&amp;#160; I’d also decided that the client would be skinnable, so there was a half implemented reskinning subsystem in there which resulted in a toolbar that could only be clicked and some other funky stuff with Windows controls that was probably horrendously unusable.&lt;/p&gt;  &lt;p&gt;I would probably redo the client so that it became a semi-optimised browser.&amp;#160; I’ve been quite impressed with Steam’s hosting of Webkit for most of the web stuff so I would probably do something like that.&amp;#160; With an HTML rendering engine the UI could be a bit more fluid and nicer and because the client will only ever host one HTML rendering engine I wouldn’t need to worry so much about cross-browser compatibility.&amp;#160; You could even be really clever and do some funky stuff with XSL and have the entire website as a &lt;a href="http://en.wikipedia.org/wiki/REST"&gt;RESTful web service&lt;/a&gt;.&amp;#160; I’ve always wanted to write a website that used XSL and only ever sent XML to the client.&lt;/p&gt;  &lt;p&gt;In case you haven’t realised, I’ve now cancelled Webflex.&amp;#160; It took too long and wasn’t going anywhere useful.&amp;#160; I also have a stupendously long list of other projects I’d like to do from licensed P2P downloads to Webflex 2.0 where you only specify an XML file describing your data and an XSL file(s) of how you want it presented and Webflex does the rest to an IMAP client that also stores calendars, contacts, et al on the server so it can be shared your other clients.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3169851075163023658?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3169851075163023658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3169851075163023658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3169851075163023658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3169851075163023658'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/07/post-mortem-of-webflex.html' title='Post Mortem of Webflex'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-9012898534555718945</id><published>2010-07-07T19:07:00.001+01:00</published><updated>2010-07-07T19:07:50.589+01:00</updated><title type='text'>UAC, File Permissions and Windows Explorer</title><content type='html'>&lt;p&gt;I had a rather interesting experience with &lt;a href="http://technet.microsoft.com/en-us/library/cc709691(WS.10).aspx"&gt;User Account Control (UAC)&lt;/a&gt; on &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/default.aspx"&gt;Windows Server 2008&lt;/a&gt; while configuring file shares today during the rollout of &lt;a href="http://www.worthingcab.org/"&gt;Adur &amp;amp; Worthing CAB’s&lt;/a&gt; new IT infrastructure.&lt;/p&gt;  &lt;p&gt;We were setting file permissions for the data store area, where advisers and staff would keep their files.&amp;#160; Naturally we didn’t want advisers having access to certain management folders, so we didn’t give them access.&amp;#160; We found though, that Server 2008 had added ‘Authenticated Users’ to the default ACL on the drive containing all the data, so we removed it because otherwise it would give everyone access everywhere, which isn’t something we wanted.&amp;#160; Upon removing the Authenticated Users principle, I suddenly couldn’t access the drive!&amp;#160; Windows Explorer kept prompting me to force allow myself, which was rather curious because Administrators (of which I was a member) still had full rights…&lt;/p&gt;  &lt;p&gt;Well, this kind of makes sense because Server 2008 includes User Account Control which, in a nutshell, provides every user application with a standard user security token, rather than an administrative token that can access everywhere and in particular authenticate within the administrators group.&amp;#160; OK, I thought so let’s try running explorer as an Administrator… no dice, Windows Explorer would still not let me into the data drive, but curiously an elevated command prompt would let me in and list files and security information.&amp;#160; Logging back into the server as the Administrator user was fine and I was able to access the drive that way and I was able to check that I should indeed have full access to the drive.&lt;/p&gt;  &lt;p&gt;Then (about 3 hours later) it struck me.&amp;#160; Windows Explorer is a rather clever beast that tries its hardest to only run a single instance of itself, so a new instance of Explorer will notice that it’s already running and send a message to the original instance, which will show whatever folder you told it to.&amp;#160; Normally this is fine, but it means that the Windows Explorer you thought you were running as an administrator has just palmed off its responsibilities to an unelevated process.&amp;#160; This unelevated process still won’t authenticate under the Administrators group and so won’t let me access the drive I’ve just apparently messed up.&lt;/p&gt;  &lt;p&gt;So to solve the issue, I ran an elevated command prompt, used task manager to kill the unelevated explorer.exe process acting as the shell and used the elevated command prompt to make a new explorer that would give me a nice new elevated shell. Hax or what?&lt;/p&gt;  &lt;p&gt;I hate UAC with a passion, it’s entirely pointless and causes completely unintuitive bugs like the one I witnessed today.&amp;#160; I always recommend turning off UAC and just running as a standard user if you really feel the need to.&amp;#160; That way, when you’re logged on as an Administrative user, you’re actually an Administrative user, not a normal user with a clickable continue button.&lt;/p&gt;  &lt;p&gt;In other news, development on Webflex and the new AIFHS website has been indefinitely postponed.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-9012898534555718945?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/9012898534555718945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=9012898534555718945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/9012898534555718945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/9012898534555718945'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/07/uac-file-permissions-and-windows.html' title='UAC, File Permissions and Windows Explorer'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-176628527181910768</id><published>2010-07-02T17:42:00.001+01:00</published><updated>2010-07-02T17:42:56.037+01:00</updated><title type='text'>Computer Scientists have standards</title><content type='html'>&lt;p&gt;The reason behind the data in &lt;a href="http://www.theregister.co.uk/2010/07/02/computer_unemployment/"&gt;this report&lt;/a&gt; from The Register, is because Computer Scientists have standards in their choice of workplace, not nothing whatsoever to do with our stereotypical laziness… :p&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-176628527181910768?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/176628527181910768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=176628527181910768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/176628527181910768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/176628527181910768'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/07/computer-scientists-have-standards.html' title='Computer Scientists have standards'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6516216878239210760</id><published>2010-07-01T12:19:00.001+01:00</published><updated>2010-07-01T12:19:20.469+01:00</updated><title type='text'>Windows Installer XML</title><content type='html'>&lt;p&gt;Whether you know it or not, you’ve almost certainly come across &lt;a href="http://en.wikipedia.org/wiki/Windows_Installer"&gt;Windows Installer&lt;/a&gt;.&amp;#160; Almost every software installation nowadays is done using Windows Installer, but it is a horrendously complex and interesting beast.&amp;#160; MSI files used by Windows Installer are in fact databases.&amp;#160; When you open one, it is interrogated by the Windows Installer Engine, which performs the instructions described inside.&amp;#160; As Windows Installer is such a weird and interesting beast, tools to make MSI files were either:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Arbitrarily limited&lt;/li&gt;    &lt;li&gt;Expensive&lt;/li&gt;    &lt;li&gt;Mind-bendingly complicated&lt;/li&gt;    &lt;li&gt;All of the above&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Over the past couple of days, I’ve been writing a new installer for the &lt;a href="http://www.pixa.org.uk/ihm"&gt;Internet Health Monitor&lt;/a&gt;.&amp;#160; Previously the installers were made using the built-in deployment projects for Visual Studio, but like most tools for generating MSI files, it was a bit rubbish.&amp;#160; I’ve written the new installer in &lt;a href="http://en.wikipedia.org/wiki/WiX"&gt;Windows Installer XML (WiX)&lt;/a&gt;, which allows me to specify a series of XML files that describe a Windows Installer Database.&amp;#160; WiX is mind-bendingly complicated as it is a very thin wrapper around the structure of an MSI file, but that does make it incredibly versatile.&amp;#160; If you’ve ever installed Office 2007, or SQL Server 2005 those installation packages were authored in WiX, so it is incredibly powerful.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6516216878239210760?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6516216878239210760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6516216878239210760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6516216878239210760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6516216878239210760'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/07/windows-installer-xml.html' title='Windows Installer XML'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5458914861995473294</id><published>2010-06-26T22:37:00.001+01:00</published><updated>2010-06-26T22:37:09.016+01:00</updated><title type='text'>I has a website wot I wrote</title><content type='html'>&lt;p&gt;I has a website wot I wrote, all about the computery things I’ve done. You can see it &lt;a href="http://pixa.org.uk/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5458914861995473294?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5458914861995473294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5458914861995473294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5458914861995473294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5458914861995473294'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/06/i-has-website-wot-i-wrote.html' title='I has a website wot I wrote'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8977840693811432789</id><published>2010-04-12T21:25:00.001+01:00</published><updated>2010-04-12T21:25:10.336+01:00</updated><title type='text'>And now for something completely different</title><content type='html'>&lt;p&gt;So… I haven’t posted here for quite a while but I’ve recently been working on an interesting part of our group Integrated Project at uni and I thought that some of the work I’d done might be useful to someone else out there.&lt;/p&gt;  &lt;p&gt;For our project my group is creating a bus tracking system.&amp;#160; There’s a website where you can work out the buses you need to take to get to your destination and then there (should be\is) a mobile app that users can use to record the status of the bus they’re catching and let others know whether the bus is on time and\or full.&lt;/p&gt;  &lt;p&gt;This obviously needed two important pieces of information: bus stops and bus times.&amp;#160; Bus stops is easy, the government maintains a national database of all the bus stops in the UK (known as the NaPTAN), which is a 300Mb XML file for the entire UK or something much smaller for Bath.&amp;#160; Being XML, extracting the useful information from this file is easy as because its all nicely documented.&lt;/p&gt;  &lt;p&gt;Related to NaPTAN is TransXChange, but on request, Bath and North East Somerset Council (BANES) wasn’t able to give us the data in this nice XML format, no, they gave us OT7 files.&amp;#160; OT7 files are unannotated text files with all the information for a particular bus timetable – all the services, stops and times.&amp;#160; There seem to be two flavours of the file, one has complete detail about every stop the bus stops at and the other has the more limited detail you tend to find on public timetables.&amp;#160; If you’re looking at making a system involving bus routes you’ll need the more detailed file to get every point where the bus stops.&lt;/p&gt;  &lt;p&gt;There are three datatypes in an OT7 file: numeric, string and null.&amp;#160; Each data item is held on its own line.&amp;#160; Strings are enclosed in quotes, numerics are not and null is simply #NULL#.&lt;/p&gt;  &lt;p&gt;The first line of an OT7 file is a number enclosed in “[ ]”, which usually ends in a 3 in Bath.&amp;#160; Following that is a string representation of the days the timetable covers.&amp;#160; The third line is the date the timetable is valid from and the fifth line contains the date the timetable was made (I guess).&lt;/p&gt;  &lt;p&gt;Thereafter follows 4 strings and 4 numbers.&amp;#160; The last 3 numbers are important and will tell you how many services, stops and times are in the file.&amp;#160; After the numbers are a variable number of numbers enclosed in quotes.&amp;#160; The numbers appear unimportant, but keep a count of how many there are because you’ll need it later for stops.&lt;/p&gt;  &lt;p&gt;8 lines further on is the days the timetable is valid on in less ambiguous format: Monday, Tuesday, Wednesday, tHursday, Friday, Saturday and $unday.&lt;/p&gt;  &lt;p&gt;Three lines below that the services start.&amp;#160; Each service is 5 lines long.&amp;#160; The first line is the service number, the second is a description of the route and the third is the operator name.&amp;#160; The other two are usually blank.&lt;/p&gt;  &lt;p&gt;2 lines after the services is the list of stops.&amp;#160; The first line is the name of the stop and the last line is ATCO code that you can look up in the NaPTAN database.&amp;#160; In between is 26 + the count of numbers you should’ve kept from earlier.&lt;/p&gt;  &lt;p&gt;Immediately after the stops is the list of times.&amp;#160; Bus times start with the service number, followed by 48 lines that appear unimportant followed by the times for that particular bus at each stop.&amp;#160; Times are always separated by 7 lines of “”.&amp;#160; Times are listed in the same order as the list of stops so time[i] relates to stop[i].&amp;#160; At the end of the times are some useful codes associated with the stops which you may or may not want to ignore.&lt;/p&gt;  &lt;p&gt;It’s worth mentioning that if an OT7 file contains more than one service not every service will stop at every stop, so if you’re looking to split out each service into an individual database record for example, you’ll need to make sure that you work out which stops each service doesn’t stop at (indicated by a blank time).&lt;/p&gt;  &lt;p&gt;All the above is from my own analysis and reverse engineering of OT7 files.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8977840693811432789?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8977840693811432789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8977840693811432789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8977840693811432789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8977840693811432789'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2010/04/and-now-for-something-completely.html' title='And now for something completely different'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4779955840934250254</id><published>2009-12-19T01:34:00.001Z</published><updated>2009-12-19T01:34:51.627Z</updated><title type='text'>Revelations</title><content type='html'>&lt;p&gt;A brilliant idea hit me yesterday during the talk at CU, I thought I’d share it with you.&lt;/p&gt;  &lt;p&gt;Over the past few weeks I’ve been watching\iPlayering ‘The History of Christianity’ by Diarmaid MacCulloch.&amp;#160; MacCulloch is a professor of theology at Oxford.&amp;#160; It’s really interesting (and available in HD).&amp;#160; It plots the story of the Christian church from Jesus to current day, and it reminded me how awesome and incredible the story of The Church is.&amp;#160; I love this kind of thing because I find all the different beliefs that the various denominations hold to be really interesting, and stepping through their creations in a historical context helps frame their beliefs and understanding.&lt;/p&gt;  &lt;p&gt;In light of this, I’ve been asking the question ‘Why isn’t there just one church? Why are there all these various churches preaching interpretations and beliefs that from where I’m standing are just plain wrong?’ which evolved from the question ‘Why do I find some churches\speakers that many people like to be so detestable?’&amp;#160; One example of this was at the CU weekend away.&amp;#160; I really didn’t rate the main speaker at that event.&amp;#160; I found him rambling, confusing and he often went off on a ‘evangelical rant’, telling us what was wrong with society today, beginning enumerate sentences with ‘Now that you’re at university…’ and rubbishing modern style worship music, whilst managing to always slip a verse or two from some 19th Century traditional hymn in in every talk.&amp;#160; On the other hand, most other people in the CU seemed to think he was pretty good.&amp;#160; (I didn’t rate the guy who gave the ‘male Christian issues’ seminar either, but that might’ve coincided with him saying ‘You shouldn’t go out with non-Christian girls’…)&lt;/p&gt;  &lt;p&gt;So there I was sitting at CU last night, wondering how good the speaker would be.&amp;#160; Things weren’t looking up when he mentioned that he was a good friend of the guy who spoke at the weekend away, but something he said a about the parable of the farmer who scatters seed on various types of soil got my attention.&amp;#160; He was explaining how some kinds of flower like acid soil and some kinds of flower like alkaline soil.&amp;#160; Acid preferring flowers won’t grow well in alkaline soil and vice-versa – acid and alkaline are two separate things.&amp;#160; Jesus, in His parable, likens us to flowers as our seeds are scattered on soil.&amp;#160; At that moment I realised, that some people will be acid preferring flowers, some people will be alkaline preferring flowers and some people will be neutral, and will grow best in an appropriate church (I’ll let you decided which churches are pH 1, pH 14 and pH 7…).&lt;/p&gt;  &lt;p&gt;So although someone might strike a dischord with me it doesn’t make them wrong and doesn’t mean that it’s bad for everybody else.&amp;#160; Whilst some people prefer to be part of an ancient church piled high in tradition and ritual, others may prefer a smaller church preaching a more intimate relationship.&amp;#160; God is so big and so awesome one interpretation cannot possibly describe Him perfectly and fully.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4779955840934250254?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4779955840934250254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4779955840934250254' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4779955840934250254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4779955840934250254'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/12/revelations.html' title='Revelations'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1694842580513633904</id><published>2009-11-05T13:34:00.001Z</published><updated>2009-11-05T13:34:38.039Z</updated><title type='text'>“Your Inbox is Full”</title><content type='html'>&lt;p&gt;So I was browsing the internet and I found this…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_NI_l8ifjiAI/SvLUar0wMkI/AAAAAAAAADs/uOFpuLQpyvQ/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_NI_l8ifjiAI/SvLUa2WxlZI/AAAAAAAAADw/MBdntmoFXZY/image_thumb%5B1%5D.png?imgmax=800" width="644" height="83" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now I’ve never had a full inbox before, it’s been fairly lengthy at times, but never full.&amp;#160; When my inbox gets to a certain length I go through all my mails and delete most of them and file the important ones.&amp;#160; I don’t need Download Notifications from last month, I don’t need e-newsletters from last month, that Kids’ Groups rota can go in the Combe Down folder and that other note can be acted on.&lt;/p&gt;  &lt;p&gt;That whole process takes no more than 30 minutes.&amp;#160; If I was to import all my mail to Google (or any other email provider) I’d have to setup a new account (which would need me to provide an email address so they could send me a password… oh wait… my current inbox is full…)&amp;#160; and port all my mail across, which if you’ve got gigabytes of email is going to take a bit more than 30 minutes.&amp;#160; Then you’ve got to setup your preferred email client to receive emails from your new account and potentially download them all again.&lt;/p&gt;  &lt;p&gt;Sounds like a load of faff to me.&lt;/p&gt;  &lt;h2&gt;Careers Fair&lt;/h2&gt;  &lt;p&gt;Talking of faff, careers fairs go much quicker when you do the following with companies presentations and material:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Replace ‘business’ and ‘banking’ with ‘boring’ i.e. ‘Business Consultancy’ becomes ‘Boring Consultancy’ and ‘Investment Banking’ becomes ‘Investment Boring’&lt;/li&gt;    &lt;li&gt;Replace ‘finance’ with ‘faff’ i.e. ‘Finance advice’ becomes ‘Faff advice’&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1694842580513633904?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1694842580513633904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1694842580513633904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1694842580513633904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1694842580513633904'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/11/your-inbox-is-full.html' title='“Your Inbox is Full”'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_NI_l8ifjiAI/SvLUa2WxlZI/AAAAAAAAADw/MBdntmoFXZY/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2649118242664057387</id><published>2009-09-29T22:28:00.001+01:00</published><updated>2009-09-29T22:28:20.786+01:00</updated><title type='text'>From the Marketing Department…</title><content type='html'>&lt;p&gt;…at Curry’s Digital, the Ultimate Student Discount on &lt;a href="http://www.currys.co.uk/martprd/store/cur_page.jsp?page=Product&amp;amp;fm=2&amp;amp;sm=19&amp;amp;tm=0&amp;amp;sku=235364&amp;amp;category_oid="&gt;Kettle Leads at £19.99&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;…at Belkin, the &lt;a href="http://catalog.belkin.com/IWCatProductPage.process?Product_Id=492430"&gt;N150 WiFi USB Dongle&lt;/a&gt; isn’t actually compliant with 802.11n, instead it does 802.11g+MIMO (as does &lt;a href="http://catalog.belkin.com/IWCatProductPage.process?Product_Id=492429"&gt;the rest of the&lt;/a&gt; N150 series).&lt;/p&gt;  &lt;p&gt;In other news, now I’m not in Worthing, my server has started pining for me to return by causing the main data drive to fail, so it looks like I’ll be returning to install and restore a new hard drive!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2649118242664057387?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2649118242664057387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2649118242664057387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2649118242664057387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2649118242664057387'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/09/from-marketing-department.html' title='From the Marketing Department…'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4485693419420835970</id><published>2009-09-22T11:10:00.001+01:00</published><updated>2009-09-22T11:10:18.219+01:00</updated><title type='text'>Worthing to Hayling Island</title><content type='html'>&lt;p&gt;On Saturday I rode to Hayling Island, just east of Portsmouth.&amp;#160; I rode about 80k in total.&lt;/p&gt;  &lt;p&gt;I left home about 11:15 and rode through West Worthing to the Ilex Way to Ferring.&amp;#160; I went past the cricket pitch at Ferring and came out part way down the Rife as it flows west of Ferring.&amp;#160; I then followed the main road through East Preston to Littlehampton.&lt;/p&gt;  &lt;p&gt;At Littlehampton there’s a footbridge over the Arun, so I took that and headed down a small footpath running along the border of a golf course near the dunes on West Beach.&amp;#160; That footpath was perfectly cyclable, but when it came out at the beach I discovered that the footpath continued on top of the shingle, which was completely uncyclable.&amp;#160; There was no other way for me to go but up another footpath to Climping and on the main road from Littlehampton to Bognor, but I was able to leave the main road early at Middleton and head down and cycle on the prom.&lt;/p&gt;  &lt;p&gt;When I got to Bognor I had lunch and an ice-cream (the original target) and realised it was only 2pm, so I bought the next OS map along covering Chichester to Havant and found a possible route from Bognor to Chichester.&lt;/p&gt;  &lt;p&gt;Unfortunately I discovered that the bridleway I wanted to take was impassably overgrown, so I had to take the road most of the way to Chichester.&amp;#160; Just before I got to Chichester I came across National Cycle Route 2, which goes from somewhere between Chichester and Selsey, to Exeter.&amp;#160; I followed this into Chichester along the Chichester Canal, just like being back in Bath!&lt;/p&gt;  &lt;p&gt;I stopped in Chichester for more water and decided to continue to see how far I could get.&amp;#160; Route 2 turned out to be a bit boring, following the A259 to Chichester.&amp;#160; It was a well constructed route with a separate cycle\footpath, but cycling along straight, fast road isn’t so exciting.&lt;/p&gt;  &lt;p&gt;To finish the journey I went south from Havant down to the bottom of Hayling Island.&amp;#160; This was by far the best part of the trip, off road, level and lots of interesting countryside and landscape to see.&lt;/p&gt;  &lt;p&gt;I rested at Hayling Island for about half and hour and headed back to Havant Station and took the train home.&amp;#160; In case you’re thinking that this was me wimping out, it was 6:30 by the time I got back to the station and I had cycled 80km.&lt;/p&gt;  &lt;p&gt;Generally a good cycle although it was disappointing that there weren’t more off road cyclepaths and bridleways along the south coast between Worthing and Portsmouth.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4485693419420835970?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4485693419420835970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4485693419420835970' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4485693419420835970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4485693419420835970'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/09/worthing-to-hayling-island.html' title='Worthing to Hayling Island'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6694010456234700472</id><published>2009-09-10T11:32:00.001+01:00</published><updated>2009-09-10T11:32:32.818+01:00</updated><title type='text'>Need a better broadband ISP?</title><content type='html'>&lt;p&gt;&lt;a href="http://news.bbc.co.uk/1/hi/world/africa/8248056.stm"&gt;Look no further than the carrier pigeon!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Maybe this could be the first steps towards implementing &lt;a href="http://tools.ietf.org/html/rfc1149"&gt;RFC 1149&lt;/a&gt; or &lt;a href="http://tools.ietf.org/html/rfc2549"&gt;RFC 2549&lt;/a&gt;…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6694010456234700472?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6694010456234700472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6694010456234700472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6694010456234700472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6694010456234700472'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/09/need-better-broadband-isp.html' title='Need a better broadband ISP?'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7040925351923530946</id><published>2009-09-04T20:54:00.001+01:00</published><updated>2009-09-04T20:54:10.483+01:00</updated><title type='text'>Really real</title><content type='html'>&lt;p&gt;So I was looking at Virgin Media’s website for broadband, and I was looking at a few options when a chat window appeared claiming to be a customer services rep. called Emma.&amp;#160; The conversation started like this:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Emma: &lt;/strong&gt;Hi, I’m Emma and I’m here to answer any questions and problems you have with you Virgin Media.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Emma:&lt;/strong&gt; Please ask me any questions you want.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Are you a real person?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Emma:&lt;/strong&gt; sadly, yes I am a real person, not a ‘bot’.&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p&gt;Emma continued to give similar canned responses, but they were actually quite useful so even though Emma wasn’t a real person (a simple yes or no would’ve sufficed).&lt;/p&gt;  &lt;p&gt;Perhaps next time I’ll ask them to provide proof of their identity…&lt;/p&gt;  &lt;p&gt;That has just got me thinking about integrating non-http services with the web as HTTP is not the protocol for Instant messaging.&amp;#160; The most common use of this is mailto links that fire up your preferred e-mail client.&amp;#160; What’s needed is two things: a program to provide said service and a way for the browser to tell javascript or a web server what non-HTTP extensions it can cope with.&lt;/p&gt;  &lt;p&gt;For example a Jabber based IM client could register a jabber:// protocol and then users could click a link to start an IM session with a sales or technical support rep.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7040925351923530946?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7040925351923530946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7040925351923530946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7040925351923530946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7040925351923530946'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/09/really-real.html' title='Really real'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-200997762908239401</id><published>2009-08-27T22:16:00.001+01:00</published><updated>2009-08-27T22:16:45.920+01:00</updated><title type='text'>Full On! 2009</title><content type='html'>&lt;p&gt;was awesome.&lt;/p&gt;  &lt;p&gt;Now if that’s not micro-blogging I don’t know what is, I leave you with this awesomely editted video of photos from the week.&amp;#160; Thanks to James for help with editting together the first half.&lt;/p&gt; &lt;object width="400" height="300" &gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://www.facebook.com/v/152358138205" /&gt;&lt;embed src="http://www.facebook.com/v/152358138205" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Our theme for the week was theme parks, hence the RollerCoaster Tycoon 3 opening.&amp;#160; The teaching was based on the latter parts of Acts and Pauls activities from his conversion in Damascus.&lt;/p&gt;  &lt;p&gt;On Wednesday we went to Paulton’s Park, it was a lovely sunny day and we queued for quite a while to go on The Cobra.&amp;#160; The new ride, The Edge, is just strange, no other word for it.&lt;/p&gt;  &lt;p&gt;On Friday we went to Avon Tyrell, an old house\activity centre where we did High Ropes, Low Ropes, climbing, rafting and canoeing. So all in all, a week of awesomely awesome awesomeness.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-200997762908239401?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/200997762908239401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=200997762908239401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/200997762908239401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/200997762908239401'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/08/full-on-2009.html' title='Full On! 2009'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-886558677606858476</id><published>2009-08-27T22:02:00.001+01:00</published><updated>2009-08-27T22:02:15.950+01:00</updated><title type='text'>How they do sistering the other side of Sompting</title><content type='html'>&lt;p&gt;So I was catching the train home from a long day at the CAB when two girls, one of 15/16 (Elder) and one of 8/9 (Younger) boarded the train at Lancing.&amp;#160; The conversation went something like this:&lt;/p&gt;  &lt;p&gt;Younger: Does this [left] side of my face look funny?&lt;/p&gt;  &lt;p&gt;Elder: No, not that I care.&lt;/p&gt;  &lt;p&gt;Younger: OK, because [some girl] at gym today slapped me.&lt;/p&gt;  &lt;p&gt;Elder: What? Did you punch her?&lt;/p&gt;  &lt;p&gt;Younger: No…&lt;/p&gt;  &lt;p&gt;Elder: You silly, she’s now going to know that you’re an easy target, you should always punch ‘em back one.&lt;/p&gt;  &lt;p&gt;Younger: Well the other day there were these boys…&lt;/p&gt;  &lt;p&gt;Elder: That’s different, with girls you always need to hit them back show them who’s boss… Just wait ‘till I tell mum, she’ll be well angry.&lt;/p&gt;  &lt;p&gt;The train then pulled into Worthing and they got off.&amp;#160; I’m glad that big sisters (Side note: I’m assuming that they were sisters as they implied they had the same mother) help the cause of us children’s leaders by encouraging mature responsible behaviour…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-886558677606858476?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/886558677606858476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=886558677606858476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/886558677606858476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/886558677606858476'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/08/how-they-do-sistering-other-side-of.html' title='How they do sistering the other side of Sompting'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7958628117971050093</id><published>2009-08-02T16:48:00.001+01:00</published><updated>2009-08-02T16:48:37.945+01:00</updated><title type='text'>New Wine 2009</title><content type='html'>&lt;p&gt;Last week I was at the awesomeness that was New Wine 2009.&amp;#160; As usual I was helping at Bouldergang (the 10-11 kids’ group) as a small group leader.&amp;#160; This involved me looking after 11 kids and making sure they weren’t doing anything stupid and disrupting while in our care.&lt;/p&gt;  &lt;p&gt;The week started well, I was disappointed to see that the Epi-Pen video was the same as last year, but I was going to put something positive about the workers’ training meeting here and I can’t remember what it was…&lt;/p&gt;  &lt;p&gt;Camping-wise, the week was wet.&amp;#160; Very wet.&amp;#160; The whole showground is on a slope and split into different areas.&amp;#160; We (Broadwater) were in White 2, at the bottom of the hill.&amp;#160; The neighbouring section got evacuated part way through the week due to flooding and we narrowly avoided being flooded out thanks to some Stewards and campers from Ashington digging a fantastic trench to take out some of the standing water to a nearby stream.&amp;#160; The rain put dampners on everything, people were less inclined to leave their tents so there was less socialising in the camp and I’m sure a few kids stayed home in some of the heavier rain.&lt;/p&gt;  &lt;p&gt;There are two things that I love about New Wine.&amp;#160; First is the scale, New Wine is three weeks with the order of 10,000 attendees a week and Bouldergang looks after 600 or so 10-11 year olds each week.&amp;#160; It is truely awesome to think that God can touch so many kids and to think that they’ll be sent out after the week to spread His word.&amp;#160; Second is the family atmosphere, most everyone camps with their church\parish group and I like getting to know the people who go to the other churches in Broadwater.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7958628117971050093?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7958628117971050093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7958628117971050093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7958628117971050093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7958628117971050093'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/08/new-wine-2009.html' title='New Wine 2009'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3292967613011445335</id><published>2009-08-01T19:26:00.001+01:00</published><updated>2009-08-01T19:26:01.970+01:00</updated><title type='text'>Scaling up the App Store model</title><content type='html'>&lt;p&gt;&lt;a href="http://technologizer.com/2009/07/28/what-if-microsoft-had-a-windows-app-store/"&gt;This&lt;/a&gt; article raises a very good point about how badly the iTunes App Store will hold back the growth of the iPhone as a serious platform.&lt;/p&gt;  &lt;p&gt;A successful platform is one where the value of a software package is greater than the value of the hardware on which it runs.&amp;#160; The PC is a successful platform thanks to applications like &lt;em&gt;&amp;lt;insert Adobe product here&amp;gt;&lt;/em&gt; being worth as much as a small African nation, compared to the hardware which can be brought for the fairtrade coffee and chocolate that said African nation produces.&lt;/p&gt;  &lt;p&gt;Good software is vital to the maintenance of a platform as, like films, most of the costs are up front investments.&amp;#160; Once you’ve broken even, the money that people pay for your software is pure profit, apart from the smidgen that goes towards support and advertising.&lt;/p&gt;  &lt;p&gt;The iPhone will never become a successful platform as long as Apple maintains such a tight grip on what you can and can’t do with it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3292967613011445335?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3292967613011445335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3292967613011445335' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3292967613011445335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3292967613011445335'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/08/scaling-up-app-store-model.html' title='Scaling up the App Store model'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8253592008031833554</id><published>2009-07-22T23:47:00.001+01:00</published><updated>2009-07-22T23:47:05.375+01:00</updated><title type='text'>Keeping the iPod Touch?</title><content type='html'>&lt;p&gt;So now I’ve got to figure out whether or not I want to keep the &lt;a href="http://store.apple.com/uk/browse/home/shop_ipod/family/ipod_touch"&gt;iPod Touch&lt;/a&gt; and start using it, or whether I want to &lt;strike&gt;give some poor sucker&lt;/strike&gt; cash in on &lt;strike&gt;gaming the first year of Computer Sci…&lt;/strike&gt; my first year successes.&amp;#160; Obviously the Touch’s primary use is as a music player, so it’s going up against my venerable &lt;a href="http://www.pocketpccentral.net/ipaq2200.htm"&gt;HP iPaq 2210&lt;/a&gt; which is very close to my heart.&lt;/p&gt;  &lt;h2&gt;Music&lt;/h2&gt;  &lt;p&gt;Going for the Touch music wise is mostly it’s storage space, 32Gb against the iPaq’s 1Gb.&amp;#160; With the extra space I could load all my music plus a few TV shows or movies to watch on a long train journey.&amp;#160; The Touch will also have a better battery so it will last longer.&lt;/p&gt;  &lt;p&gt;The plus side with the iPaq is that the storage is removable and exchangable, so although I could only have up to 20Gb at a time, that is interchangable.&amp;#160; The iPaq can also load any application and can therefore play any format of music I happen to have, but realistically it’s not going to get through an entire &lt;a href="http://www.amazon.co.uk/Titanic-Disc-Deluxe-Collectors-DVD/dp/B000A8NZ6I/ref=sr_1_3?ie=UTF8&amp;amp;s=dvd&amp;amp;qid=1248301399&amp;amp;sr=8-3"&gt;feature length directors uncut double extended edition of Titanic&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;Media Players&lt;/h2&gt;  &lt;p&gt;It’s interchangability and flexibility that win on the iPaq though.&amp;#160; The removable cards can be plugged into a PC and pretty much any media player can synchronise any media to them as a mass storage device.&amp;#160; No fancy DRM-able database, just &lt;a href="http://en.wikipedia.org/wiki/MP3"&gt;MP3&lt;/a&gt; files and &lt;a href="http://en.wikipedia.org/wiki/ID3"&gt;tags&lt;/a&gt;, easy, simple and compatible.&lt;/p&gt;  &lt;p&gt;The iPod Touch has … &lt;a href="http://images.google.co.uk/images?hl=en&amp;amp;q=Dustbin&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;sa=N&amp;amp;tab=wi"&gt;iTunes&lt;/a&gt;.&amp;#160; That’s it, any other syncing solution needs &lt;a href="http://www.highschoolchallenge.co.uk/images/image/Rubbish%20carpet.jpg"&gt;iTunes&lt;/a&gt; installed at some point.&amp;#160; Not only am I not a fan of &lt;a href="http://needled.files.wordpress.com/2009/01/landfill.jpg"&gt;iTunes&lt;/a&gt; but it’s completely unneccessary that I use it.&amp;#160; What killer feature does iTunes have that cannot be simply replicated in any other media player other than a &lt;a href="http://static.open.salon.com/files/fresh-apple1233606650.jpg"&gt;half-chewed Apple&lt;/a&gt;?&amp;#160; I have a large catalogue of WMA tracks that iTunes won’t play and I’m not willing to sit around while iTunes converts them because it shouldn’t have to.&amp;#160; There are plenty of &lt;a href="http://en.wikipedia.org/wiki/Directshow"&gt;publicly documented APIs&lt;/a&gt; for Windows that would allow iTunes to play WMA tracks, so why can’t I play my old tracks without converting them.&amp;#160; I can understand the iPod not playing WMA, but iTunes on Windows not playing WMA is just silly.&lt;/p&gt;  &lt;h2&gt;Applications&lt;/h2&gt;  &lt;p&gt;The second selling point of the iPod Touch is the &lt;a href="http://www.apple.com/itunes/whatson/appstore.html"&gt;apps&lt;/a&gt;, some fun, some pointless, some worthless, some might be actually useful.&amp;#160; Originally the iPhone and iPod Touch couldn’t run native applications other than the ones they came with.&amp;#160; That was completely unacceptable because there are certain things (like controlling a media center over WiFi) that you simply can’t do with a website.&amp;#160; But now you can download free and paid for apps to your hearts content.&amp;#160; Well, as long as they’re approved by Apple anyway.&lt;/p&gt;  &lt;p&gt;On the iPaq anyone can &lt;a href="http://www.codeproject.com/KB/mobile/WiMoSansVS.aspx"&gt;download free tools from Microsoft&lt;/a&gt; and start creating applications for Windows Mobile.&amp;#160; You can then package them up and place them on your website (and a whole host of others) for anyone to download.&amp;#160; You can even charge as much as you like (although legally you can’t do that with Visual Studio Express Editions).&lt;/p&gt;  &lt;p&gt;On the iPod Touch anyone can &lt;a href="http://developer.apple.com/iphone/"&gt;download free tools from Apple&lt;/a&gt; and start creating applications.&amp;#160; You then &lt;a href="http://developer.apple.com/iphone/program/apply.html"&gt;pay Apple $99 to become an Apple Registered Developer&lt;/a&gt; and send Apple your app to be approved and placed on the free-for-all that is the iTunes app store; so as a hobbyist app writer, you’re already $99 worse off (excluding cost of hardware).&amp;#160; And if you thought $99 was the worst of it you don’t have to look far to find a number of &lt;a href="http://www.mikeash.com/?page=pyblog/the-iphone-development-story.html"&gt;developers&lt;/a&gt; who are &lt;a href="http://www.theiphoneblog.com/2009/07/17/developer-doubts-app-store-apple-care/"&gt;displeased&lt;/a&gt; with Apple’s &lt;a href="http://infoworld.com/d/mobilize/iphone-app-store-roulette-tale-rejection-773"&gt;approval process&lt;/a&gt; or the way in which the iTunes app store works.&lt;/p&gt;  &lt;p&gt;Oh, and you need a Mac to develop iPod Touch apps, where as you can theoretically develop Windows Mobile programs on your preferred Mono supported operating system.&lt;/p&gt;  &lt;p&gt;The fact that Apple is controlling apps so tightly concerns me, because they could revoke access to a program I’ve paid for or prevent an updated version of an app being approved leaving my iPod with one or more security vulnerabilities.&amp;#160; Although tight control means apps will work, that’s what the Remove Programs screen and Distance Selling Regulations are for.&lt;/p&gt;  &lt;h2&gt;Conclusion&lt;/h2&gt;  &lt;p&gt;Although the ability to watch a movie on the train is nice, the iPod screen isn’t as big as I’d want for such a journey and there are a number of other problems.&amp;#160; The main problem is that there’s very little the iPod Touch can do that my iPaq can’t.&amp;#160; OK, so my iPaq doesn’t have WiFi, but there’s plenty of WiFi SD and CF cards about to give it that ability.&amp;#160; The main thing the iPaq gives me is choice.&amp;#160; I can play any music I want, run any program I want, use it for whatever I want, use any media player to sync with it I want; the iPaq is mine.&amp;#160; On the iPod Touch I can only play Apple approved music formats, run Apple approved apps and only sync it with iTunes and I’m paranoid that Apple can do whatever they want to it; the iPod is not mine.&lt;/p&gt;  &lt;p&gt;Incidentally, there’s a 32Gb iPod Touch going if anyone wants it.&amp;#160; It’s even engraved with my name, so it could become a collector’s item one day!&amp;#160; Contact me for prices.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8253592008031833554?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8253592008031833554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8253592008031833554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8253592008031833554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8253592008031833554'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/07/keeping-ipod-touch.html' title='Keeping the iPod Touch?'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7890390310046636923</id><published>2009-07-22T19:36:00.001+01:00</published><updated>2009-07-22T19:36:24.311+01:00</updated><title type='text'>Proof that Student Unions are evil</title><content type='html'>&lt;p&gt;&lt;a title="http://www.bathstudent.com/news/article/6003/1589/" href="http://www.bathstudent.com/news/article/6003/1589/"&gt;Here&lt;/a&gt; is conclusive proof of the evil misuse of Alumni funds by Bath University Student Union.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7890390310046636923?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7890390310046636923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7890390310046636923' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7890390310046636923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7890390310046636923'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/07/proof-that-student-unions-are-evil.html' title='Proof that Student Unions are evil'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-1645922895401443559</id><published>2009-07-14T14:07:00.001+01:00</published><updated>2009-07-14T14:07:44.077+01:00</updated><title type='text'>evilPod</title><content type='html'>&lt;p&gt;So &lt;strike&gt;the device with which Netcraft insults my intelligence&lt;/strike&gt; my new iPod Touch arrived today.&amp;#160; I was looking forward to this, finally a nice device that would let me listen to music on the go and be a bit more reliable than my 6-year old iPaq (that’s still working, unlike most similarly aged iPods).&amp;#160; Then I remembered it was an Apple Product, so I’d have to abandon any ideas that I might be able to do things the way I wanted to.&amp;#160; I’d have to install iTunes and QuickTime, and have iTunes convert all my WMA music to MP3 and reorganise my media so that Windows Media Player couldn’t find it any more, if I wanted Album Art I’d have to give Apple my credit card details, etc., etc.&amp;#160; Can you say ‘hassle’?&lt;/p&gt;  &lt;p&gt;But there is a piece of software called dopisp, made by MGTEK, which allows you to use Windows Media Player to sync with an iPod.&amp;#160; So I bought it, downloaded it, installed it.&amp;#160; Oh, it needs iTunes.&amp;#160; Fine, install iTunes.&amp;#160; Then iTunes tells me it wants to close Outlook which it installs, fine I won’t catch up on my RSS Feeds while iTunes encodes evil onto my hard disk.&amp;#160; Finally iTunes installed, now to configure.&amp;#160; No, you’re not fudgifying my already prestinely organised music collection; no, you’re not converting my WMA tracks to MP3 or AAC; no, I don’t want to register my iPod; no, I don’t want to register; no I’m not interested in paying for a service that’s barely better than what Microsoft provides (MobileMe vs. Windows Live Mail) for free; now we’re ready.&amp;#160; Oh and no iTunes, you’re not going to manage my iPod for me.&lt;/p&gt;  &lt;p&gt;So, back to Windows Media Player.&amp;#160; ‘dopisp doesn’t support the firmware on your device’.&amp;#160; Rats!&amp;#160; On closer inspection the site is ambiguous as to whether the iPod Touch is supported with Firmware 2.2.1.&amp;#160; Rats!&amp;#160; Off to contact support…&lt;/p&gt;  &lt;p&gt;Tune in next week for more evilPod adventures, including ‘What happens when an evilPod gets thrown out of a Window’!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-1645922895401443559?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/1645922895401443559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=1645922895401443559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1645922895401443559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/1645922895401443559'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/07/evilpod.html' title='evilPod'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6099048614901302018</id><published>2009-07-13T23:24:00.001+01:00</published><updated>2009-07-13T23:24:45.239+01:00</updated><title type='text'>The Ghost PC</title><content type='html'>&lt;p&gt;Today at the CAB I was tidying up Active Directory, don’t worry I and most of the computers survived, we’ll find out tomorrow how bad the real damage is :).&lt;/p&gt;  &lt;p&gt;Anyway, there were a few computer accounts from old dead computers lying around so I was going to delete them.&amp;#160; Earlier in the day I had been swapping some computers names around when we’d found that some new computers hadn’t been named correctly and so names were being held by old computers and I might’ve inadvertently removed a few live computers from Active Directory… but we fixed them so all is well.&lt;/p&gt;  &lt;p&gt;So from earlier blunders I thought I ought to check that these old names were safe to delete.&amp;#160; So I turned on all the PC in the bureaux and pinged an old name.&amp;#160; And it responded.&amp;#160; So we searched the bureau high and low and we couldn’t find this PC.&amp;#160; I could even connect to it via Computer Management so it was a Windows PC, but interestingly Computer Management kept giving me Access Denied (incorrect account) when I tried to see a specific snap-in’s details, which was odd because I was logged on as the Domain Administrator, so if I can’t get to it nothing can.&amp;#160; So I searched the bureau again, and I couldn’t find it.&lt;/p&gt;  &lt;p&gt;Then I looked at the DNS table, and low and behold, all these old names were forwarding to IP addresses of live PCs.&amp;#160; As the old PCs hadn’t been removed from Active Directory properly their names were still in the DNS list and were now pointing at live PCs, hence the fact that the old name responded, but wouldn’t let me in.&lt;/p&gt;  &lt;p&gt;So yeah, always keep your Active Directory up to date!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6099048614901302018?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6099048614901302018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6099048614901302018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6099048614901302018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6099048614901302018'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/07/ghost-pc.html' title='The Ghost PC'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7404300298195432067</id><published>2009-07-13T23:12:00.001+01:00</published><updated>2009-07-13T23:12:08.547+01:00</updated><title type='text'>Thin Clients</title><content type='html'>&lt;p&gt;At the CAB we’ve been looking round for a new server for the Lancing bureau, who are currently running a poorly maintained Peer Network (their ‘server’ is an XP Pro machine serving the handful of files they need to work with, thankfully they threw out their last Windows 98 machine a while ago).&amp;#160; In the future Lancing, Shoreham and Worthing will form one legal and operational entity, and as such they should be able to swap advisers and data, etc. so Lancing needs a server to put it on a equal footing with the other two bureaux.&lt;/p&gt;  &lt;p&gt;Most people have recommended a typical server, and as usual we get talking about possible future solutions.&amp;#160; Some guys we spoke to on Monday came up with an interesting idea of having thin clients.&amp;#160; Rather than having a full PC sitting at each desk, a low powered PC and monitor are put on each desk.&amp;#160; These small PCs run a Linux distro that boots right into an RDP client to connect to a server somewhere on the internet.&lt;/p&gt;  &lt;p&gt;The idea sounds very nice to begin with: The thin clients cost £180 a pop, and the newer ones are running Atom processors, so 5 of them will still cost half as much as a light bulb.&amp;#160; Everyone connects to a super locked down profile on a server, where the IT admin’s eyes start twitching as soon as they start Microsoft Word because it might constitute a security vulnerability.&amp;#160; There’s no more running round patching Windows, Anti-Virus and other programs because you do it once on the server, etc., etc.&lt;/p&gt;  &lt;p&gt;But… All three bureaus already have a substantial investment in IT, replacing 30 computers with thin clients is going to cost alot, and that’s just one bureau.&amp;#160; You’re also inviting users onto your server, which if you’re a cash strapped charity could quite easily be the same server from which Active Directory and Exchange are running, and a nefarious user could wreck havoc if they were able to screw around in there.&amp;#160; You also have a single point of failure for all IT services in a bureau.&amp;#160; In a client\server system clients could still access the internet, and at the CAB because the case recording application is hosted at a central data centre, that will still work, so the advisers will still be able to perform their tasks.&amp;#160; In a thin client system, the server goes down, the advisers can’t write up the interviews they’ve done while they’re fresh in their minds.&lt;/p&gt;  &lt;p&gt;There’s then further talk of combining the nine bureaus in West Sussex.&amp;#160; Under these plans it looks there would be three sets of blade servers providing remote desktop services to thin clients and don’t get me started on the number of single points of failure there would be under that system!&lt;/p&gt;  &lt;p&gt;As you can tell I’m not a fan of thin clients, mostly because everything then becomes a single point of failure and it can really hamper the flexibility of an IT system.&amp;#160; Another IT company also recommended a terminal services solution, like a thin client but with PCs as the thin clients, so users can accomplish simple tasks locally and refer to the server for everything else.&amp;#160; I think that this kind of solution is even worse because you start introducing 'multiple desktops’ and users get confused about which desktop they’re on and which desktop which application is available on!&lt;/p&gt;  &lt;p&gt;I think there are places where Terminal Services does work.&amp;#160; At the University of Bath, there are thousands of computers all over campus for students to use and for the IT Services department to run round updating them all is completely unreasonable, so a large central server\cluster of terminal services makes sense.&amp;#160; Terminal Services also makes sense when people need remote access, like dialing in from home.&amp;#160; Broadband connections are usually too slow and have way to high a latency for local applications to have a suitable response time, but Terminal Services scales very well to low bandwidth connections, and makes working remotely much much nicer.&lt;/p&gt;  &lt;p&gt;So thin clients have their place, but not until you start getting to enterprise scale do you need to start deploying them in a local network.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7404300298195432067?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7404300298195432067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7404300298195432067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7404300298195432067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7404300298195432067'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/07/thin-clients.html' title='Thin Clients'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3892896467704236788</id><published>2009-06-26T22:54:00.001+01:00</published><updated>2009-06-26T22:54:58.876+01:00</updated><title type='text'>!!!Breaking News!!!</title><content type='html'>&lt;p&gt;&lt;a href="http://news.bbc.co.uk/1/hi/northern_ireland/foyle_and_west/8120878.stm" target="_blank"&gt;Mr Callaghan, a teacher from St. Mary’s Boys School in Strabane, has hired an ice-cream van and handed out 99s on his last day at work.&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3892896467704236788?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3892896467704236788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3892896467704236788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3892896467704236788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3892896467704236788'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/06/breaking-news.html' title='!!!Breaking News!!!'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2080202732414529336</id><published>2009-06-20T11:03:00.001+01:00</published><updated>2009-06-20T11:04:03.508+01:00</updated><title type='text'>Troubleshoot: CASE fails to open a case properly giving error 90</title><content type='html'>&lt;p&gt;For those of you with no idea what the title means, I’ll give you a little background.&amp;#160; Over the summer I’m going to be volunteering at the &lt;a href="http://www.shorehamcab.org.uk/" target="_blank"&gt;Shoreham &amp;amp; Southwick Citizen’s Advice Bureau&lt;/a&gt; (CAB).&amp;#160; The CAB use a program called &lt;a href="http://www.citizensadvice.co.uk/en/About-Us/CAS/CARMA/" target="_blank"&gt;CASE&lt;/a&gt; to record the contact that they have with people.&amp;#160; On my first day I was asked to look at this PC on which CASE was erroring.&amp;#160; You could open, logon and search for a client fine, but when you tried to open the client’s enquiry a number of error messages popped up, the first being error 90 (Object not set to a reference of an object) and the second and third being related to the fact that this error prevented a couple of required combo boxes from being filled.&lt;/p&gt;  &lt;p&gt;Now, this error only occurred on this user on this PC.&amp;#160; My first thoughts were some kind of setting file, so in true &lt;a href="http://blogs.technet.com/markrussinovich/default.aspx" target="_blank"&gt;Mark Russinovich&lt;/a&gt; style, I opened &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" target="_blank"&gt;Process Explorer&lt;/a&gt; to see if CASE ever had any interesting files open.&amp;#160; The answer was a resounding no.&amp;#160; CASE doesn’t keep any files of consequence in local or roaming application data.&lt;/p&gt;  &lt;p&gt;My second attempt was to examine what CASE was doing, using &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx" target="_blank"&gt;Process Monitor&lt;/a&gt;.&amp;#160; Using this I could see all the DLLs, registry keys and files that CASE touched.&amp;#160; Unfortunately CASE turned out to be heavily COM based and so pretty much every line of code resulted in it touching at least 10 registry entries to find the right DLL or OCX.&amp;#160; The simple process of opening CASE, logging on, searching and opening the enquiry generated about 100,000 events, and I wasn’t really in the mood to go through them for very long, even after I filtered out the COM registry keys…&lt;/p&gt;  &lt;p&gt;Maybe it was a network problem… maybe CASE on this machine wasn’t receiving the client properly.&amp;#160; Process Monitor had shown CASE to use &lt;a href="http://en.wikipedia.org/wiki/SOAP_(protocol)" target="_blank"&gt;SOAP&lt;/a&gt;, so it was possible that the server was throwing an error which wasn’t being handled properly by CASE causing the Null Reference problem.&amp;#160; So I downloaded &lt;a href="http://www.wireshark.org/" target="_blank"&gt;Wireshark&lt;/a&gt;, a network monitoring tool and looked up an enquiry.&amp;#160; Unfortunately everything was fine, however I did discover that CASE uses SOAP to send SQL queries to the server and receives and encoded response (what’s wrong with native SQL and SSL?).&lt;/p&gt;  &lt;p&gt;I then tried creating a new non-administrator user, local to the PC.&amp;#160; It too had the same problem, but when creating an equivalent user on another PC it was fine.&amp;#160; OK, so now we’re on to a PC wide setting.&amp;#160; A reinstall of Windows would fix this, but I knew that it was probably some small setting somewhere.&amp;#160; On a hunch I checked the Language settings for the computer, and found that they were incorrectly set to English US rather than British English.&amp;#160; So I changed them and hey presto, it worked.&amp;#160; Problem Solved.&lt;/p&gt;  &lt;p&gt;Looking back I remember seeing in the Process Monitor logs that CASE had failed to load a DLL it was looking for in a folder called C:\Program Files\…\0409.&amp;#160; This is important because the Locale ID of American English is 0x0409.&amp;#160; Chances are that this was directly caused by a Microsoft component, however the actual cause was the regional settings and the CASE installation process perhaps assuming the system is set to British English and so only deploying British English files, when the system with its incorrect settings would look for another language’s file.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2080202732414529336?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2080202732414529336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2080202732414529336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2080202732414529336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2080202732414529336'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/06/troubleshoot-case-fails-to-open-case.html' title='Troubleshoot: CASE fails to open a case properly giving error 90'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2088878888357664645</id><published>2009-06-18T23:35:00.001+01:00</published><updated>2009-06-18T23:35:11.966+01:00</updated><title type='text'>Apparently…</title><content type='html'>&lt;p&gt;…&lt;a href="http://www.guardian.co.uk/profile/nicholaspierce" target="_blank"&gt;I’m a doctor and write an ‘Ask Dr. Nick’ column in the Guardian&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;No… I was not Binging myself… for long…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2088878888357664645?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2088878888357664645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2088878888357664645' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2088878888357664645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2088878888357664645'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/06/apparently.html' title='Apparently…'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7996620819794681260</id><published>2009-06-18T11:15:00.001+01:00</published><updated>2009-06-18T11:15:01.815+01:00</updated><title type='text'>Price Points</title><content type='html'>&lt;p&gt;As I was eating my breakfast, of a strawberry cheesecake crunch corner yoghurt (healthy!), I was reading the local Property Weekly paper, which advertises properties for sale with local estate agents.&amp;#160; I noticed that many estate agents were pricing their houses at stupid price points like £239,950 or £187,450 or £349,950.&amp;#160; In fact on one page every property bar 3 was advertised at a price ending in 950.&lt;/p&gt;  &lt;p&gt;Now what exactly is the point in this?&amp;#160; When I see £239,950 I see it as about £240,000, completely ignoring the price point.&amp;#160; And if I had a choice between two houses that I liked where one was £240,000 and the other was £239,950, I think I’d prefer to base my judgement on something other than the £50 price difference as it’s practically meaning less.&amp;#160; In fact £50 is about 0.02% (don’t for get the percent sign, that’s 2 hundredths of 1 hundredth of £240,000) of the total house price, and not only that, but by taking £50 off the price you more than doubled the significant figures in the price making it more difficult for the average Joe on the street to understand.&lt;/p&gt;  &lt;p&gt;Now, my annoyance with price points does not end at estate agents.&amp;#160; Can someone please tell me what the point of pricing something at £11.99 is compared to £12.&amp;#160; £12 could save paper, ink and me having to carry round loose change as opposed to £11.99, and it’s only an increase of 0.08%, not much more than that annoying £50 house price point.&lt;/p&gt;  &lt;h2&gt;A Word About Search Engines&lt;/h2&gt;  &lt;p&gt;While writing this blog, I thought I’d include a picture of average joe according to a search engine.&amp;#160; Bing came up with this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_NI_l8ifjiAI/SjoTnzJCBOI/AAAAAAAAADc/OsbTgs3Ybn8/s1600-h/average-joe-050810%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="average-joe-050810" border="0" alt="average-joe-050810" src="http://lh5.ggpht.com/_NI_l8ifjiAI/SjoToDRqzDI/AAAAAAAAADg/lkREKEsNF8U/average-joe-050810_thumb.jpg?imgmax=800" width="187" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;A typical average joe, just what you’d expect.&amp;#160; Google came up with this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_NI_l8ifjiAI/SjoTojy6NEI/AAAAAAAAADk/u431I3txYbM/s1600-h/averagejoe%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="averagejoe" border="0" alt="averagejoe" src="http://lh5.ggpht.com/_NI_l8ifjiAI/SjoTpMqmJcI/AAAAAAAAADo/awia2OSt5pQ/averagejoe_thumb.jpg?imgmax=800" width="171" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Hello, Google, I asked for average Joe not average Jane!&amp;#160; Bonus points for the satirical comment about Average Joes from the internet’s point of view.&lt;/p&gt;  &lt;p&gt;Then, whilst searching for ‘average time spent in gym’ (for a whitty comment about Bing’s average Joe) Bing gave me a Gay sex story on the front page, while Google gave me a link to a penis enlargement gym.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7996620819794681260?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7996620819794681260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7996620819794681260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7996620819794681260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7996620819794681260'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/06/price-points.html' title='Price Points'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_NI_l8ifjiAI/SjoToDRqzDI/AAAAAAAAADg/lkREKEsNF8U/s72-c/average-joe-050810_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6558110607778879534</id><published>2009-06-04T00:59:00.001+01:00</published><updated>2009-06-04T00:59:07.106+01:00</updated><title type='text'>Yoink</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_NI_l8ifjiAI/SicOR6NUlTI/AAAAAAAAADU/Vq9Ek2Y0ITA/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://lh5.ggpht.com/_NI_l8ifjiAI/SicOSYrY2PI/AAAAAAAAADY/k_YtMd_yOoQ/image_thumb%5B4%5D.png?imgmax=800" width="244" height="161" /&gt;&lt;/a&gt;So I noticed after opening a lot of tabs that Internet Explorer wasn’t using a huge amount of memory.&amp;#160; Well here’s why… That Google Chrome killer feature – process spawning for each tab is in the world’s favourite browser!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2008/03/11/ie8-and-loosely-coupled-ie-lcie.aspx" target="_blank"&gt;Here’s an IEBlog on the subject&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;All that needs to happen now is for IE to be ported to .net so it can utilise AppDomains for hosting tabs rather than inefficient processes.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6558110607778879534?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6558110607778879534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6558110607778879534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6558110607778879534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6558110607778879534'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/06/yoink.html' title='Yoink'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_NI_l8ifjiAI/SicOSYrY2PI/AAAAAAAAADY/k_YtMd_yOoQ/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5586887834633319498</id><published>2009-05-29T10:49:00.001+01:00</published><updated>2009-05-29T10:49:00.576+01:00</updated><title type='text'>Next In the List of Must-have Browser Features…</title><content type='html'>&lt;p&gt;An &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5817" target="_blank"&gt;SQLite database manager&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sqlite.org/about.html" target="_blank"&gt;SQLite&lt;/a&gt; is an embedded, C based database engine, this means there’s no server process like MySQL, it’s more like Access for the Open Source world.&amp;#160; Evidently someone has taken it upon themselves to write a database manager for Firefox, which as the new must-have browser-feature means I’ll be switching right away.&lt;/p&gt;  &lt;p&gt;&amp;lt;/sarcasm&amp;gt; &amp;lt;!--Why is this tag not in the HTML 5 standard?--&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5586887834633319498?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5586887834633319498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5586887834633319498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5586887834633319498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5586887834633319498'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/05/next-in-list-of-must-have-browser.html' title='Next In the List of Must-have Browser Features…'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-402326671385487323</id><published>2009-05-28T10:41:00.001+01:00</published><updated>2009-05-28T10:41:34.806+01:00</updated><title type='text'>Today’s Philosophical Quote of the Day</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Post-modern epistemology challenges the very possibility of even obtaining truth, with some philosophers going so far as to say that there is no such thing as truth to be obtained.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Forgive me for being particularly unenlightened and dense, but how do they prove the fact that there is no such thing as truth, if there is no such thing as truth…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-402326671385487323?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/402326671385487323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=402326671385487323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/402326671385487323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/402326671385487323'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/05/todays-philosophical-quote-of-day.html' title='Today’s Philosophical Quote of the Day'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-89919974213173540</id><published>2009-05-20T00:03:00.001+01:00</published><updated>2009-05-20T00:03:21.261+01:00</updated><title type='text'>iPlayer</title><content type='html'>&lt;p&gt;For the past few weeks I’ve been &lt;strike&gt;using&lt;/strike&gt; battling against the new &lt;a href="http://www.bbc.co.uk/iplayer/install/" target="_blank"&gt;BBC iPlayer Desktop&lt;/a&gt; program.&amp;#160; This has to be one of the most minimally implemented, poor applications I have ever seen.&amp;#160; Even my Systems Engineering coursework looked sexier, and that was a command-line program.&amp;#160; So let’s have a look at just what a complete failure the iPlayer Desktop App is…&lt;/p&gt;  &lt;h2&gt;INstallation&lt;/h2&gt;  &lt;p&gt;Like all modern web-based client server applications, iPlayer requires a framework to be downloaded and installed.&amp;#160; Most of the time this is something like &lt;a href="http://www.microsoft.com/NET/" target="_blank"&gt;.net&lt;/a&gt; or &lt;a href="http://www.javacoffee.com/" target="_blank"&gt;Java&lt;/a&gt;, which lots of programs use and have been tried and tested, but BBC decided to go for &lt;a href="http://www.adobe.com/products/air/" target="_blank"&gt;Adobe AIR&lt;/a&gt;, which is another 15Mb of code I don’t need on my system.&amp;#160; AIR is also very new and cross platform, so it’s going to be slow-as for a few iterations (although how did they get to version 1.5.1 so quickly?).&lt;/p&gt;  &lt;h2&gt;First Impressions&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_NI_l8ifjiAI/ShM6oA9a9CI/AAAAAAAAADM/qMS-lJchfnA/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="iPlayer - subtle as a knife..." border="0" alt="iPlayer - subtle as a knife..." align="right" src="http://lh3.ggpht.com/_NI_l8ifjiAI/ShM6uPLD_sI/AAAAAAAAADQ/oC3kp89aVv8/image_thumb%5B8%5D.png?imgmax=800" width="244" height="171" /&gt;&lt;/a&gt;First impressions of iPlayer aren’t bad… the interface looks attractive, although I’ve gotta say – it doesn’t really fit in with the whole ‘light colours, translucency’ going on in Vista…&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Like the previous version of iPlayer you can tell iPlayer how much space to use and where to put downloaded videos, but you can’t tell it to use Windows Media Player (or Media Centre, or your preferred video player) to open the content.&amp;#160; In fact some behind the scenes pokery shows that iPlayer now prefers &lt;a href="http://www.adobe.com/products/air/" target="_blank"&gt;mp4&lt;/a&gt; files with a custom encrypted video codec (part of Air I’m guessing).&amp;#160; This means you’re left messing around with iPlayer’s built-in video player (more on that later).&lt;/p&gt;  &lt;h2&gt;Downloading&lt;/h2&gt;  &lt;p&gt;Along with the new codec format appears to come a new delivery architecture.&amp;#160; Gone is the Kontiki peer-to-peer super fast sharing we’re used to, and I’m guessing it’s replaced with a high-speed centralised download system.&amp;#160; Further pokery confirms that they’re using HTTP to deliver content *weeps*.&lt;/p&gt;  &lt;h2&gt;Video Playing&lt;/h2&gt;  &lt;p&gt;Playing videos for the most part is OK.&amp;#160; The videos play on my computer as well as I would expect them to, although there’s sometimes a bit of stuttering around the start.&amp;#160; The major fail though, is the fact that the play, stop, etc. buttons on my keyboard and my remote (which appears to applications like a keyboard) don’t work with iPlayer.&amp;#160; This means I have to mess around with the play bar at the bottom of the screen, where my auto-hiding start bar is.&amp;#160; So I move my cursor to the bottom of the screen, oops to far the start bar’s come up, move the cursor out the way and the play bar has gone along with the start bar and we start all over again.&lt;/p&gt;  &lt;h2&gt;UI &amp;amp; Keyboard&lt;/h2&gt;  &lt;p&gt;This lack of keyboard support seems to be well ingrained throughout iPlayer.&amp;#160; I can’t use the keyboard to tab around the UI elements like I can in every other application, I can’t use the keyboard to move through the videos I’ve downloaded, I’m surprised that I can type into the text boxes in the settings page (and I can tab around them, although the visual feedback for which element has focus is appalling).&amp;#160; Keyboard support is a major issue – not everyone can use a mouse, and a mouse is not appropriate in all cases (home theatre + mouse = fail).&lt;/p&gt;  &lt;p&gt;Guidance from the masters of usability themselves says that&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“A well-designed keyboard UI is an important aspect of software accessibility.&amp;#160; It enables users who are blind or who have certain motor disabilities to navigate an application and interact with its features.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now, I’m guessing that blind people may not be so interested in watching television, but people with motor disabilities should certainly be able to comfortably download their weekly fix of The Apprentice and Have I Got News For You; and as if this isn’t enough of an accessibility fail, read this quote from the iPlayer website:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Adobe AIR is currently not accessible to screen reader users, and AIR applications are unavailable to users who decline to download the Adobe AIR runtime.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Oops, so now blind people really can’t use iPlayer even if they wanted to.&amp;#160; Really, how much of a pain in the arse do you have to be to pretty much go out of your way not to support screen readers?&amp;#160; Every other application (that doesn’t use air) can do this out of the box because they’re not using buzzword technologies and delivering a proper, open accessible service.&lt;/p&gt;  &lt;h2&gt;AIR&lt;/h2&gt;  &lt;p&gt;iPlayer reflects poorly on Air.&amp;#160; Sure iPlayer works, but there’s so many niggles its untrue!&amp;#160; The more I look at iPlayer Desktop and how they’ve implemented it, the more I’m convinced they’ve taken a step back.&amp;#160; They’ve replaced the P2P downloaded files with stuff sent over HTTP – that famous protocol optimised for the delivery of large videos…&lt;/p&gt;  &lt;p&gt;Even worse, this is actually a flash file, wrapped in an executable.&amp;#160; Flash should never have entered the browser, let alone left it and this time there’s no ‘non-flash version’ button to click to take me to the proper stuff.&lt;/p&gt;  &lt;p&gt;Fortunately it does what it needs to, so for the moment its staying.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-89919974213173540?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/89919974213173540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=89919974213173540' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/89919974213173540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/89919974213173540'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/05/iplayer.html' title='iPlayer'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_NI_l8ifjiAI/ShM6uPLD_sI/AAAAAAAAADQ/oC3kp89aVv8/s72-c/image_thumb%5B8%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6267274214732675727</id><published>2009-05-19T02:09:00.001+01:00</published><updated>2009-05-19T02:09:58.391+01:00</updated><title type='text'>Viruses are amazing when…</title><content type='html'>&lt;p&gt;You can take them out with &lt;a href="http://www.sophos.com/klingon-anti-virus/" target="_blank"&gt;Klingon Anti-Virus&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;I so need an excuse to use this…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6267274214732675727?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6267274214732675727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6267274214732675727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6267274214732675727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6267274214732675727'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/05/viruses-are-amazing-when.html' title='Viruses are amazing when…'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4161727827972215927</id><published>2009-04-28T14:37:00.001+01:00</published><updated>2009-04-28T14:37:31.708+01:00</updated><title type='text'>Satire</title><content type='html'>&lt;p&gt;Everyone needs more satire, a chance to relax and look at themselves and laugh at how silly they’ve been.&amp;#160; Yesterday (or was it really early this morning?) I watched/iPlayered/iPlayed a TV Show called Newswipe.&amp;#160; I can’t say it was the most hilarious thing I’ve ever watched but it raised some ridiculously funny and good points.&lt;/p&gt;  &lt;p&gt;So… in keeping with the satire theme, I thought I might reword the BBC’s QnA on swine flu, the global pandemic thought to have affected as many as 52 people.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Infection control experts are scrambling to respond to outbreaks of swine flu in Mexico and the US, and suspected cases elsewhere.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What is swine flu?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Flu 2.0 for Pigs 2009 edition.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What is new about this type of swine flu?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;It’s the affect of trying to install Flu 1.9 for Pigs 2008 edition over Flu 1.5 for Humans 2008 edition.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How dangerous is it?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nobody knows.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;How worried should people be?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nobody knows.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Can the virus be contained?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nobody knows.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Can it be treated?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nobody knows.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What should I do to stay safe?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nobody knows, although being sensible around people with flu is a good place to start.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What measures can I take to prevent infection?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Nobody knows, although being sensible around people with flu is a good place to start.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Is it safe to eat pig meat?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Yes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What about bird flu?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Flu 1.4 for Birds has just entered it’s extended support phase.&amp;#160; No new versions for Flu 1.4 for Birds will be made, but critical and important security patches will be released.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Where can I get further advice?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The documentation for Flu 2.0 for Pigs has not been written yet.&amp;#160; Please check back later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4161727827972215927?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4161727827972215927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4161727827972215927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4161727827972215927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4161727827972215927'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/04/satire.html' title='Satire'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6266420843337530058</id><published>2009-04-27T11:54:00.001+01:00</published><updated>2009-04-27T11:54:30.438+01:00</updated><title type='text'>Funny that…</title><content type='html'>&lt;p&gt;In Systems Engineering, we’ve had a couple of ‘Industry Lectures’ where a graduate of Bath comes and presents about the work that they do, with a focus on the Systems Engineering processes that they do.&amp;#160; Our first Industry Lecture was given by a Business Administration graduate from Accenture, which went down fantastically well with us first year Computer Science students.&lt;/p&gt;  &lt;p&gt;Our second Industry Lecture was given by a Computer Science graduate who was a Ruby-on-Rails programming, Mac using, agile commending web developer.&lt;/p&gt;  &lt;p&gt;When you’ve finally stopped laughing and come to the serious realisation that these people exist…&lt;/p&gt;  &lt;p&gt;*jokes*&lt;/p&gt;  &lt;p&gt;Anyway he admitted that most of the agile Ruby-based projects had run out of money and not come to anything, while the waterfall ASP.NET-based web page (yes, singular page) was responsible for processing multiple billions of pounds of business a year…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6266420843337530058?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6266420843337530058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6266420843337530058' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6266420843337530058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6266420843337530058'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/04/funny-that.html' title='Funny that…'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2198677953014568350</id><published>2009-04-26T14:53:00.001+01:00</published><updated>2009-04-26T14:53:03.435+01:00</updated><title type='text'>Mobile Computing</title><content type='html'>&lt;p&gt;I imagine this is a familiar story for most: your PC starts getting dusty, running slow, starts producing a few errors maybe loosing you an email or a Word Document (you do save regularly don’t you?) and maybe it is time you splashed out on a new system.&amp;#160; Now the most difficult question you will ever face rears its ugly head: Laptop or desktop?&amp;#160; The correct answer is desktop every time.&lt;/p&gt;  &lt;p&gt;So why do you want a desktop?&amp;#160; In fact a better question is why do you want a laptop?&amp;#160; If you’re looking for something small that can be hidden away, then I can recommend a MiniATX or Shuttle PC with a flat screen monitor that takes up very little space, or a similar PC attached to your TV.&amp;#160; If you’re looking for something portable to check your emails and surf the web, then the smartphones of today have shown that it is entirely possible to do that and alot more in a far more pocketable form factor.&amp;#160; And this is before we start on the technical reasons why laptops are just a bad idea.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_NI_l8ifjiAI/SfRnPBf1VYI/AAAAAAAAADE/9mR4Flekhqc/s1600-h/Posture%5B3%5D.jpg"&gt;&lt;img title="Posture" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="244" alt="Posture" src="http://lh4.ggpht.com/_NI_l8ifjiAI/SfRnPp3h8hI/AAAAAAAAADI/EeUr0LaA1P0/Posture_thumb%5B1%5D.jpg?imgmax=800" width="223" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Consider this image showing correct posture for using a computer (courtesy of Microsoft’s Healthy Computing Guide) and note particularly the distance between the keyboard and the monitor and how you simply don’t get that in a laptop.&amp;#160; Either you’re killing your neck by looking down at the screen, or you’re giving yourself RSI because the keyboard is too high.&amp;#160; And this is important if you’re buying a laptop as your primary computer because you’re going to be spending quite a bit of time in front of it.&amp;#160; When I was working at MGM last year, one of the contractors sitting near me, quite a big guy, had a ridiculously small laptop and spent much of the day hunched over this thing.&amp;#160; Why would you do that to you back?&lt;/p&gt;  &lt;p&gt;The next problem with laptops is performance.&amp;#160; Laptops have two major problems limiting performance: heat and battery life.&amp;#160; Most laptops these days are more than comfortable to run at quite a toasty temperature, in fact this temperature is such that it warms certain areas of the body a bit too much causing infertility, which is why manufacturers now refer to them as Notebooks because they’re not safe to go on your lap!&amp;#160; You’ve then got battery life – now I’ve seen a laptop stand around for 6 or 7 hours before running out of juice, but that laptop was just sitting there for that time doing nothing, no WiFi, no USB peripherals and a £60 extended battery upgrade.&amp;#160; Realistically a laptop bought as a primary computer would need some welly and that will impact on it’s mobility after all if you can only use a laptop within 2 metres of a power socket, doesn’t that limit the mobility argument you used early in an attempt to qualify your purchase?&lt;/p&gt;  &lt;p&gt;I’m a big fan of ubiquitous computing – the idea that wherever I am I can access a computer to help me in whatever I’m doing.&amp;#160; To a degree we’re already there – your washing machine, TV, toaster, video recorder, HiFi, etc. already have small computers in them, but ubiquitous computing is generally focused on more consumer level services such as being able to check your email while your toast is doing.&amp;#160; From this view, a laptop is like trying to knock a small pin into soft wood using a sledgehammer.&amp;#160; It will do the job fine, plus some more substantial tasks, but it is far more appropriate to use something a bit smaller.&amp;#160; Smartphones have shown that the concept works, now all we need are some real hardware and software vendors to make a product that works.&lt;/p&gt;  &lt;p&gt;So we’ve seen that the laptop has bridged the gap between desktop power and mobile computing but such a gap should really be a niche market for those who really go need power on the go rather than as a consumer device.&amp;#160; We have also seen that the compromises built into a typical laptop result in a generally immobile, under powered, poorly configured computer who’s tasks could be more effectively performed by a smaller device.&lt;/p&gt;  &lt;p&gt;Do you have a laptop?&amp;#160; Why did you buy it?&amp;#160; Or maybe you decided not to get a laptop?&amp;#160; Why was that?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2198677953014568350?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2198677953014568350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2198677953014568350' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2198677953014568350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2198677953014568350'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/04/mobile-computing.html' title='Mobile Computing'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_NI_l8ifjiAI/SfRnPp3h8hI/AAAAAAAAADI/EeUr0LaA1P0/s72-c/Posture_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-5140649372154004145</id><published>2009-04-07T13:16:00.001+01:00</published><updated>2009-04-07T13:16:00.618+01:00</updated><title type='text'>Updates</title><content type='html'>&lt;p&gt;Woo! My blog has made it onto a listing of &lt;a href="http://uccfbloggers.blogspot.com/" target="_blank"&gt;UCCF bloggers&lt;/a&gt;!&amp;#160; I guess I ought to focus on Christian aspects a little more rather than the large amount of technology related posts I’ve been writing…&amp;#160; If anyone’s listening my name has an h in it (even if it is silent).&lt;/p&gt;  &lt;p&gt;In the mean time, you may notice a few changes to the blog’s theme as I make it a little more techy (making it look like a load of Visual Basic code).&amp;#160; I have a few techy things to do today:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Sort out my parents new computer, which seems to be taking forever&lt;/li&gt;    &lt;li&gt;Get some video conversion going to free up space on my Media drive&lt;/li&gt;    &lt;li&gt;If I have enough room, rip some DVDs to my computer, I may make a post on this later.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Then my long term task list involves writing my Java coursework and updating the new AIFHS website.&lt;/p&gt;  &lt;p&gt;A techy’s work is never done…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-5140649372154004145?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/5140649372154004145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=5140649372154004145' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5140649372154004145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/5140649372154004145'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/04/updates.html' title='Updates'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4374887303881224064</id><published>2009-04-06T19:01:00.001+01:00</published><updated>2009-04-06T19:01:23.569+01:00</updated><title type='text'>Facebook</title><content type='html'>&lt;p&gt;Facebook is wrong, plain and simple wrong.&amp;#160; A fantastic and successful concept that has fooled a number of rich tech investors, just implemented in a really useless and stupid way.&lt;/p&gt;  &lt;p&gt;In the good old days, browsers would render HTML.&amp;#160; This HTML would be sent in a pure form from some server over the internet and would be promptly displayed on a users screen.&amp;#160; HTML renderers were fast and lightweight to enable them to run on cheap and affordable systems with limited power and resources.&lt;/p&gt;  &lt;p&gt;Then someone, probably in marketing, thought that JavaScript sounded like a good idea, and in some ways it was, it allowed long survey pages to be easily broken down into a number of screens, it allowed quicker reactions to certain rendered elements and so on.&amp;#160; What it was not meant to do was to provide an X-11 replacement.&lt;/p&gt;  &lt;p&gt;X-11 was designed as an SSH for GUIs.&amp;#160; An application runs on a remote computer and instructions are sent over a network or other medium to display the appropriate GUI widgets.&amp;#160; It seems to me that increasingly this is what HTML and JavaScript are doing – Gmail, Facebook, Hotmail and the like involve nothing more than a browser downloading a load of JavaScript wrapped with HTML and rendering the result.&amp;#160; User Interactions are then uploaded either as XML or JSON.&lt;/p&gt;  &lt;p&gt;This isn’t what I want my computer to spend its time doing.&amp;#160; I have better things to do like ripping DVDs, listening to music and playing games rather than waiting for the world’s slowest most inefficient language to download and run.&lt;/p&gt;  &lt;p&gt;Why do I need this cleverness?&amp;#160; What is it that can’t be done using a more sane mix of HTML and JavaScript?&amp;#160; I don’t need an IM client in my browser, that’s what Messenger is for, neither do I need an email program.&amp;#160; All I need is a UI that shows me what my friends are doing, lets me view my friends profile and view and update mine and find other friends who aren’t on my list yet.&amp;#160; Does that really need a squillion lines of JavaScript?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4374887303881224064?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4374887303881224064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4374887303881224064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4374887303881224064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4374887303881224064'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/04/facebook.html' title='Facebook'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2544982364763428686</id><published>2009-04-06T16:53:00.001+01:00</published><updated>2009-04-06T16:53:15.014+01:00</updated><title type='text'>New Word Alive</title><content type='html'>&lt;p&gt;I was at &lt;a href="http://www.newwordalive.org/" target="_blank"&gt;New Word Alive&lt;/a&gt; last week.&amp;#160; For those of you who don’t know &lt;a href="http://en.wikipedia.org/wiki/New_Word_Alive" target="_blank"&gt;New Word Alive&lt;/a&gt; is a conference run by &lt;a href="http://www.uccf.org.uk/" target="_blank"&gt;UCCF&lt;/a&gt; and &lt;a href="http://www.keswickministries.org/" target="_blank"&gt;Keswick Ministries&lt;/a&gt; at the &lt;a href="http://www.hafanymor.org.uk/" target="_blank"&gt;Hafan Y Mor&lt;/a&gt; caravan site in North West Wales near &lt;a href="http://maps.google.co.uk/maps?hl=en&amp;amp;q=Pwllheli&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;split=0&amp;amp;gl=uk&amp;amp;ei=zCTaSfvIKozLjAeUg8GWDQ&amp;amp;sa=X&amp;amp;oi=geocode_result&amp;amp;ct=title&amp;amp;resnum=1" target="_blank"&gt;Pwllheli&lt;/a&gt;.&amp;#160; The conference was quite amazing, the teaching was very good and applicable, the worship was … conservative, but there was one session where everyone had the chance to let their hair down a little.&amp;#160; Worship was courtesy of &lt;a href="http://www.stuarttownend.co.uk/" target="_blank"&gt;Stuart Townend&lt;/a&gt; with &lt;a href="http://www.phatfish.net/" target="_blank"&gt;Phatfish&lt;/a&gt; (which I thought was quite surprising given that they’re from &lt;a href="http://www.newfrontiers.xtn.org/" target="_blank"&gt;Newfrontiers&lt;/a&gt;, but I think Stuart knew his target audience well).&lt;/p&gt;  &lt;p&gt;The site was on the coast so I made sure to visit the beach everyday and go for a stroll or sandcastling; unfortunately my legs are still aching from sandcastling on Friday.&amp;#160; There was good entertainment put on after hours, including music, films (such as &lt;a href="http://www.imdb.com/title/tt0910970/" target="_blank"&gt;Wall-E&lt;/a&gt;) and a dramatisation of the second half of Matthew.&amp;#160; We also had a good time in our caravan, 8 of us shared a very nice caravan that was about 10 minutes walk from anywhere which got a bit annoying towards the end of the week.&amp;#160; Irritatingly my camera was out of batteries with my charger here in Worthing so I have no photos to show.&lt;/p&gt;  &lt;p&gt;The only thing I didn’t like about the conference was that it was very openly evangelical conservative (EC), and particularly reinforced by an article in the daily newsletter and and article in a newspaper distributed for free at the event.&amp;#160; I don’t have a major problem with EC, in fact I am impressed by their teaching and firm theological basis.&amp;#160; What I don’t like is that EC seems to press heavily on what I consider secondary issues – why does it matter to me how God made the Earth, how atonement works or when I could get a divorce?&amp;#160; EC does a good job at tying these secondary issues together and presenting the whole lot as Christianity, which when couple with a strong evangelical viewpoint, can put many people off looking further.&amp;#160; In my view a church should be accepting of various views on secondary issues and focus on the primary issues which are that God created the world, and us, gave us freewill, which we used to rebel against him, and then gave his Son as a sacrifice so that we could be forgiven for our rebellion and reunited with Him in a new heaven and new Earth and in the mean time has blessed us with his Holy Spirit to live in us.&amp;#160; I see the church as being an ‘interface’ between society and God, not in the way that Christ is, but in a way to facilitate the spreading of The Good News and to do that the church has got to be able to be fluid and bendy so that it can keep Christianity relevant to the current day, and I don’t know about you but I don’t see that so much in EC with its hymns, pulpits and other Victorian throwbacks.&lt;/p&gt;  &lt;p&gt;Another problem with the EC focus at New Word Alive was that it made me feel a little alienated from UCCF and CU.&amp;#160; As New Word Alive is organised by UCCF, who also help our CU, I’m aware that this could cause CU to be promoting evangelical conservatism rather than Christianity.&amp;#160; After all God gave us free will to choose him and our own church, and it is vital that the major Christian voices on campuses respect this.&lt;/p&gt;  &lt;p&gt;I think I probably will go again next year, so long as the CU goes and it doesn’t clash with anything important at University.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2544982364763428686?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2544982364763428686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2544982364763428686' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2544982364763428686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2544982364763428686'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/04/new-word-alive.html' title='New Word Alive'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6723360194046497810</id><published>2009-03-27T09:52:00.001Z</published><updated>2009-03-27T09:52:16.064Z</updated><title type='text'>Joke Company wastes time on Joke Language</title><content type='html'>&lt;p&gt;Just to show how hip cool and innit Google are, they’re working on a Virtual Machine JIT interpretter\compiler for Python.&amp;#160; &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython" target="_blank"&gt;Hmm… now where else can I write python and have it run on a JIT interpretter\compiler?&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ooh and let me guess: it’ll be a Beta that is only supported in Google specific scenarios, and will install cookies in all your python programs so that it can display targeted ads while your python script is running…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://arstechnica.com/open-source/news/2009/03/google-launches-project-to-boost-python-performance-by-5x.ars"&gt;Google searches for holy grail of Python performance - Ars Technica&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6723360194046497810?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6723360194046497810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6723360194046497810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6723360194046497810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6723360194046497810'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/03/joke-company-wastes-time-on-joke.html' title='Joke Company wastes time on Joke Language'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-902361209604775996</id><published>2009-03-08T09:30:00.001Z</published><updated>2009-03-08T09:30:38.747Z</updated><title type='text'>Java &amp; Layouts</title><content type='html'>&lt;p&gt;So, having found a suitably cunning workaround for my Java XML Serialiser, my next challenge in my coursework is to blackmail Java into getting my UI to work properly.&amp;#160; In most programming languages I’ve encountered, the IDE has a handy form designer where you just drag and drop controls onto a window, and size and position them as you wish.&amp;#160; It’s then up to you to code most of the resize logic.&amp;#160; Visual Studio provides some handy properties called Anchor and Dock on all of the controls that avoids the need for you to write most of the resizing logic.&amp;#160; In Java, controls are (optionally, but almost always) sized and positioned by Layout Managers.&amp;#160; These classes pickup all the controls in a container and lay them out in a certain way, for example a GridLayout lays out controls in a grid, a BorderLayout lays out 5 controls, 4 round the edge of the form and 1 in the middle.&lt;/p&gt;  &lt;p&gt;I can see the attraction of Layout Managers, as they remove the need for even the most complex piece of resizing code, so that people like me can get on with building the thousands of other micro-classes to handle our control’s events.&amp;#160; I imagine that the layout managers themselves probably contain some complex logic, but the lost by Sun in developing these classes is probably more than offset by the time Java developers take to throw out the Layout Managers and do the whole thing themselves.&lt;/p&gt;  &lt;p&gt;The problem I have with the Java Layout Managers is that they all tend to behave in a really annoying unintuitive way that completely removes any control I might want over the position and size of the controls on the form.&amp;#160; For example, the BorderLayout class will ignore a control’s size or preferred size properties, so you have to use a more complex layout.&amp;#160; The most versatile layout manager is the GridBagLayout.&amp;#160; This powerful class arranges controls in a grid and allows to populate any number of rows across and columns down while evenly (or unevenly if you wish) distributing space around controls.&amp;#160; Unfortunately the GridBagLayout requires you to specify the values of 11 different variables by passing a GridBagConstraints class with your control when you add it to a form (or Frame as they’re known in Java).&amp;#160; The problem with this is that specifying those 11 different variables makes your code very hard to read – either it extends over thousands of pages as you set each field of GridBagConstraints separately, or it extends to the far side of an A0 sheet if you use the ever so handy constructor.&amp;#160; In fact, &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GridBagConstraints.html#GridBagConstraints(int,%20int,%20int,%20int,%20double,%20double,%20int,%20int,%20java.awt.Insets,%20int,%20int)" target="_blank"&gt;Sun even acknowledges that the constructor is uselessly unreadable&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;And another annoying thing: the recommended Java IDE Eclipse doesn’t come with a form designer as standard.&amp;#160; Isn’t open source lovely?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-902361209604775996?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/902361209604775996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=902361209604775996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/902361209604775996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/902361209604775996'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/03/java-layouts.html' title='Java &amp;amp; Layouts'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7278439845540057857</id><published>2009-02-28T16:39:00.001Z</published><updated>2009-02-28T16:39:13.377Z</updated><title type='text'>XML Serialisation and Java</title><content type='html'>&lt;p&gt;Anyone who’s spent any meaningful amount of time poking round the .net framework will know of the very useful namespace, System.Xml.Serialization.&amp;#160; The most important class is called XmlSerializer, which has methods that can convert a class’s public properties to XML and back again.&amp;#160; Our coursework in Programming I requires us to read the contents of an XML file and create an object from it.&amp;#160; Unfortunately we’ve got to use Java, and Java doesn’t have properties, but that’s OK, because if you name the accessor and mutator methods properly you can get essentially the same thing.&amp;#160; So off I went and started to code up a Java equivalent of XmlSerializer and all was fine and dandy and working perfectly.&lt;/p&gt;  &lt;p&gt;Then I came to collections.&amp;#160; Almost all collections used in Java are based on a small number of generic classes and interfaces, such as Collection&amp;lt;E&amp;gt;, List&amp;lt;E&amp;gt;, ArrayList&amp;lt;E&amp;gt; and LinkedList&amp;lt;E&amp;gt;.&amp;#160; Generics allow the same code to be used for different types, and allows the compiler to do better typesafety checking, and means us developers don’t have to spend all our time casting from Object to our preferred type.&amp;#160; The implementation of generics is quite interesting: in .net, the CLR is fully aware of Generic Classes, and provides runtime (as well as compiletime) typesafety checking; in Java, generics a ‘a piece of syntactic sugar’, and at compile time they’re converted to normal classes, and anything that refers to the the generic type in the class is converted to the sub-most class that the generic parameter can take.&amp;#160; Ultimately this means that the JVM has no idea it is running a generic class, and so doesn’t know what types the class should work with.&amp;#160; Applying this to collections it means that there is no way to tell what types of classes should go into a collection, which is a small problem when writing an XmlSerializer.&amp;#160; Even if you create a new class inheriting a Generic Collection Class, the class inherits the generic methods, not the specialised methods you mentioned.&lt;/p&gt;  &lt;p&gt;CURSE YOU JAVA!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7278439845540057857?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7278439845540057857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7278439845540057857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7278439845540057857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7278439845540057857'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/02/xml-serialisation-and-java.html' title='XML Serialisation and Java'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4043842151271638371</id><published>2009-02-25T15:50:00.001Z</published><updated>2009-02-25T15:50:11.690Z</updated><title type='text'>System.Drawing.Image and other oddities</title><content type='html'>&lt;p&gt;So I was working on the Anglo-Italian Family History Society’s new website and doing some image manipulation to make images appear nicely resized in the photo gallery.&amp;#160; Rather than uploading a number of copies of the same picture at various sizes, I decided that just one picture file of the highest resolution possible will be uploaded, then resized as appropriate per request.&amp;#160; To do this I:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Created a FileStream from the original file&lt;/li&gt;    &lt;li&gt;Created an Image from the FileStream&lt;/li&gt;    &lt;li&gt;Closed the FileStream&lt;/li&gt;    &lt;li&gt;Resized the Image&lt;/li&gt;    &lt;li&gt;Saved the Image to the ResponseStream&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I kept getting Generic GDI+ errors when saving the Image.&amp;#160; I found out that this was due to the fact that the Image class relies on the stream you created the image from still being open.&amp;#160; Therefore if you open an image from a file, you need to keep that file open, which means other programs can’t use it.&amp;#160; There are two possible workarounds:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Copy the FileStream into a MemoryStream and create the Image from the MemoryStream&lt;/li&gt;    &lt;li&gt;Create a new image and paint the original Image into the new image (you can also do the resizing in this step)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Copying the stream is good because it maintains the metadata in the file better, but it means you’ve got to be able to keep a reference to the MemoryStream so that you can close it when you dispose the Image.&lt;/p&gt;  &lt;p&gt;In other news, Java doesn’t have properties.&amp;#160; This makes XML Serialisation a pain.&amp;#160; Two lines in VB.NET, 6 classes in Java.&amp;#160; Also, I prefer the .net interface naming convention where they’re all prefixed with Is so you know if you’re working with a class or an interface.&amp;#160; And why doesn’t org.w3c.dom.NodeList implement Iterable, or any other collection interface?&amp;#160; It’s a LIST (aka Collection)!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4043842151271638371?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4043842151271638371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4043842151271638371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4043842151271638371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4043842151271638371'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/02/systemdrawingimage-and-other-oddities.html' title='System.Drawing.Image and other oddities'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6560587711602242085</id><published>2009-02-08T16:09:00.001Z</published><updated>2009-02-08T16:09:38.360Z</updated><title type='text'>Web Log Analysis</title><content type='html'>&lt;p&gt;Based on a quick Google search I can safely say that most free log analysers are useless.&amp;#160; They're either web-based (which is fine for a hosted solution, but not analysis of a number of logs on my machine that isn't doing the original serving), or crippled and couldn't analyse a pot of jam.&amp;#160; So I wrote my own...&lt;/p&gt;  &lt;p&gt;At the Anglo-Italian Family History Society we like to know how many people are downloading our journal, and how many people experience errors with the site.&amp;#160; Information about hits to normal pages is handled by a free service we use called statcounter, however they rely on an image or javascript being embedded into the page, and so they won't show up any 404s, or downloads of our PDF journals (the site emails me when an error occurs in the database system we have to display members' surname interests).&amp;#160; So from time to time I like to download the logs and take a look at them.&amp;#160; And I like to do this properly, so seeing as I have 450Mb of logs from 2005 when the site was setup, I might as well use them.&lt;/p&gt;  &lt;p&gt;Unfortunately my Access Database is taking a while to import them...&amp;#160; It's been running for 5-6 hours now and it's just parsing our record-sized log file from August where some annoying person spammed the error page for 12 hours producing a 70Mb log file.&amp;#160; Grr...&lt;/p&gt;  &lt;p&gt;Interestingly the top 20 biggest log files were all created in 2008.&amp;#160; Of cause size doesn't tell everything.&amp;#160; For example at some point the webhosts added the referrer column to the logs, so that added extra size, and don't forget that IE's User Agent string grows exponentially with each release of the .net framework, Office and a smattering of other spyware nasties.&amp;#160; So I suspect if I was to count lines, the story may differ slightly.&amp;#160; Anyway, when I have all this data I can start producing some kind of interesting analysis...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6560587711602242085?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6560587711602242085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6560587711602242085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6560587711602242085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6560587711602242085'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/02/web-log-analysis.html' title='Web Log Analysis'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7243807580361716419</id><published>2009-01-28T17:39:00.001Z</published><updated>2009-01-28T17:39:04.327Z</updated><title type='text'>Buses</title><content type='html'>&lt;p&gt;(Or buzzes if you come from Birmingham)&lt;/p&gt;  &lt;p&gt;In the merry city of Bath, we have to catch the bus to get to and from town, or walk.&amp;#160; A single in &amp;#163;1.10 and a return is &amp;#163;1.75.&amp;#160; There are various season tickets, but you have to be travelling further and more frequently for those to become worth it.&amp;#160; You can also purchase a 'FirstTen' ticket for &amp;#163;8.50 which entitles you to 10 single fares on a bus (or 5 returns).&lt;/p&gt;  &lt;p&gt;&amp;#163;8.50/10 = 85p per ride, which saves 25p compared to a single ticket.&lt;/p&gt;  &lt;p&gt;85p x 2 = &amp;#163;1.70 for a return, saving 5p compared to a return ticket.&amp;#160; 5p! 5p!&amp;#160; Assuming I go into Bath 3 times a week, that saves 15p a week, semester 1 is 12 weeks, plus 3 for revision and exams, plus 10 for semester 2 and another 4 for revision and exams, means I'll be in Bath for 29 weeks, 15p x 29 = &amp;#163;4.35!&lt;/p&gt;  &lt;p&gt;So over 1 year, I won't have even saved enough to have Sunday lunch on campus.&amp;#160; Of cause if I decide to walk into Bath then I could save 75p a week, or &amp;#163;21.75 a year which would get me 3 or 4 Sunday lunches.&lt;/p&gt;  &lt;p&gt;At this rate I wouldn't be surprised if First makes the FirstTen more expensive than a standard return...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7243807580361716419?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7243807580361716419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7243807580361716419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7243807580361716419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7243807580361716419'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/01/buses.html' title='Buses'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7898635402532503415</id><published>2009-01-20T13:05:00.001Z</published><updated>2009-01-20T13:05:27.042Z</updated><title type='text'>Headline grabbing</title><content type='html'>&lt;p&gt;&lt;a href="http://news.bbc.co.uk/1/hi/magazine/7839744.stm" target="_blank"&gt;Good to see that the BBC is continuing to report on highly important world changing events...&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7898635402532503415?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7898635402532503415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7898635402532503415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7898635402532503415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7898635402532503415'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/01/headline-grabbing.html' title='Headline grabbing'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-9015586364451884133</id><published>2009-01-16T19:20:00.001Z</published><updated>2009-01-16T19:22:22.256Z</updated><title type='text'>Dan Lyons gets Star of Approval</title><content type='html'>&lt;p&gt;Despite being the voice of &lt;a href="http://fakesteve.blogspot.com/" target="_blank"&gt;Fake Steve Jobs&lt;/a&gt; for a few years, Dan Lyons has today received a Star of Approval for the following comment:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Imagine what it might be like if the Church of Scientology went into the consumer electronics business, and you'd have a pretty good picture of how Apple operates.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The quote can be found in &lt;a href="http://www.newsweek.com/id/179825" target="_blank"&gt;this&lt;/a&gt; article on the second page.&lt;/p&gt;  &lt;p&gt;In other news, &lt;a href="http://news.bbc.co.uk/1/hi/england/hampshire/7832647.stm" target="_blank"&gt;this man&lt;/a&gt; walked out in protest of having to drive a bus with &amp;quot;There's probably no God&amp;quot;.&amp;#160; What I want to know is, why did they bother to include the probably?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-9015586364451884133?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/9015586364451884133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=9015586364451884133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/9015586364451884133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/9015586364451884133'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/01/dan-lyons-gets-star-of-approval.html' title='Dan Lyons gets Star of Approval'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6795308793147194174</id><published>2009-01-15T15:09:00.001Z</published><updated>2009-01-15T15:09:30.261Z</updated><title type='text'>Dell</title><content type='html'>&lt;p&gt;Dell recently won a reprieve from their Nick Pierce Star of Disapproval award when they incorrectly listed a Nvidia Quadro FX 4600 SDI for &amp;#163;12.95 inc. VAT, P&amp;amp;P (it is currently listed at &amp;#163;1,500).&amp;#160; Unfortunately they cancelled my order, so they now keep their Nick Pierce Star of Disapproval award.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6795308793147194174?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6795308793147194174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6795308793147194174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6795308793147194174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6795308793147194174'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/01/dell.html' title='Dell'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-805239280807660927</id><published>2009-01-13T21:07:00.001Z</published><updated>2009-01-13T21:07:12.857Z</updated><title type='text'>Searching</title><content type='html'>&lt;p&gt;We at the &lt;a href="www.anglo-italianfhs.org.uk/" target="_blank"&gt;Anglo-Italian Family History Society&lt;/a&gt; have recently purchased a &lt;a href="http://www1.euro.dell.com/content/products/productdetails.aspx/inspnnb_1525?c=uk&amp;amp;cs=ukdhs1&amp;amp;l=en&amp;amp;ref=lthp&amp;amp;s=dhs" target="_blank"&gt;laptop&lt;/a&gt; for us to take to family history fairs so that people can view our transcriptions and website there and then.&amp;#160; We've decided to go for &lt;a href="http://www.microsoft.com/windows/default.aspx?icid=winvan" target="_blank"&gt;Vista Ultimate&lt;/a&gt; so that we can use IIS to serve up the website proper and not have some rip-off cached version.&amp;#160; One of the questions that came up was would the content be searchable?&amp;#160; Obviously we wouldn't have access to &lt;a href="www.google.co.uk/" target="_blank"&gt;Google&lt;/a&gt; at a fair, so it would seem that we wouldn't be able to search the entire site for a surname.&lt;/p&gt;  &lt;p&gt;But hang on a minute, what are they actually searching for here?&amp;#160; The website does contain a number of pages with 'articles' on them, but most of the surname data is on a small number of pages, which are mostly automated, and their contents are pulled from our database.&amp;#160; So we don't need Google, all we need is something that can perform text matching against a set of records, and maybe do the same on a text file.&amp;#160; Thankfully Google aren't the only ones capable of writing a search engine, and a little heuristics can go a long way, and there can be a lot of hidden information with family history surnames...&lt;/p&gt;  &lt;p&gt;This got me thinking about searching the web.&amp;#160; There is a significant amount of research going into the 'semantic web', that is one where computers can extract the meaning of information that people put on webpages.&amp;#160; For example, you could be browsing the website of your &lt;a href="www.yfriday.org.uk" target="_blank"&gt;favourite band&lt;/a&gt;, and your browser would be able to scan the site and offer to add an appointment in your calendar for the &lt;a href="www.yfriday.org.uk" target="_blank"&gt;next time the band are touring in your area&lt;/a&gt;.&amp;#160; Alternatively if the band isn't touring in your area, your browser could go and lookup an estate &lt;a href="http://www.propertyfinder.com/uk/property/north+east/tyne+and+wear/houses+for+sale" target="_blank"&gt;agents and suggest a new house for you&lt;/a&gt; in an area where the band do tour.&lt;/p&gt;  &lt;p&gt;In some respects, this kind of thing is already here.&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/ms996507.aspx" target="_blank"&gt;XML Web Services&lt;/a&gt; transfer XML across the web, which computers can very easily parse and use in whatever tasks they need.&amp;#160; There are also &lt;a href="http://microformats.org/wiki/hcalendar" target="_blank"&gt;HTML microformats&lt;/a&gt;, which use class names to identify areas of the page that contain details about a person, or event, or blog post.&amp;#160; This information can then be indexed by your preferred search engine for your frisking pleasure.&lt;/p&gt;  &lt;p&gt;I'm thinking it would be quite interesting to include some of these microformats on the AIFHS site...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-805239280807660927?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/805239280807660927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=805239280807660927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/805239280807660927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/805239280807660927'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2009/01/searching.html' title='Searching'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8196668366195780838</id><published>2008-12-31T16:54:00.001Z</published><updated>2008-12-31T16:54:59.581Z</updated><title type='text'>Java is great but...</title><content type='html'>&lt;p&gt;Why is it that I need to use at least 10 small obscure classes when doing anything with Swing (the primary GUI Framework)?&lt;/p&gt;  &lt;h2&gt;Example&lt;/h2&gt;  &lt;p&gt;In a program I'm writing I need to display the contents of a list.&amp;#160; Java provides a handy class called JList, which can display lists of things.&amp;#160; Now, in VB.NET I would create a List control and use DataBinding to bind the collection to the list.&amp;#160; That's four classes, two of which are collections, one of which I wrote myself.&amp;#160; With the JList I'll need to almost re-implement my collection in a class implementing ListModel, along with some other Listener classes to communicate between the JList and the ListModel.&amp;#160; That's four classes, three of which I wrote myself.&amp;#160; Add to that some pretty shoddy documentation and tutorials and... welcome to the world of open source.&lt;/p&gt;  &lt;p&gt;Oh and did I mention that JList doesn't implement scrolling or selection, no they're contained in other classes, and that's after you've had to layer up 20 panels to get your UI to layout the way you want.&amp;#160; What's wrong with a Location property, why do my controls have to be laid out by a layout manager?&amp;#160; Do I really care so much about how aesthetically my user interface resizes that I have to know 2 interfaces and at least 5 classes just to put my controls at a certain point on the screen?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8196668366195780838?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8196668366195780838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8196668366195780838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8196668366195780838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8196668366195780838'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/java-is-great-but.html' title='Java is great but...'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2900880309243974148</id><published>2008-12-30T13:53:00.001Z</published><updated>2008-12-30T13:53:03.253Z</updated><title type='text'>Media Players and Libraries</title><content type='html'>&lt;p&gt;Despite MP3s being around for 20 years, the iPod being round for 7 or so years, and media library integration in media players around for at least 9 years, Media Players nowadays are really disappointing.&amp;#160; Windows Media Player is slow, iTunes hasn't got a Now Playing list, RealPlayer isn't much faster than Windows Media Player and Winamp hasn't got a very inspiring UI or library.&lt;/p&gt;  &lt;p&gt;In today's world of internet, Web Services, XML and service endpoint integration I'm really suprised there's no central industry standard service where music publishers can register the details of the CDs they've published.&amp;#160; Instead it's up to those of us who can't bear to live without a properly organised CD shelf to fill in those details and out of the kindness of our open-source hearts, upload the details to some very incomplete database, or pay someone else to compile that information for us.&lt;/p&gt;  &lt;p&gt;Media players are also ridiculously stupid.&amp;#160; None of the major media players seem to be able to do anything remotely intelligent with artists, for example.&amp;#160; If the internet is the future of music distribution, then this kind of thing needs to be more readily available in media players.&amp;#160; For example, if I'm listening to Tim Hughes, then I could click a link or a button to view some kind of profile page about him, with a photo, vital statistics, short bio, discography, and a short (upto 10) list of similar artists (i.e. If you liked Tim Hughes, you'll also like Matt Redman, Ben Cantelon, etc.), perhaps using some kind of last.fm type of thing which records which artists people listen to.&lt;/p&gt;  &lt;p&gt;Usage of Album Art in Media Players is also appaling.&amp;#160; Windows Media Player serves up blurry micro-icons with a vague similarity, iTunes needs your credit card details, RealPlayer is ... RealPlayer and image processing is probably considered an unnecessary feature by the Winamp fans.&amp;#160; Why can I not get high resolution album art for an album I've just paid &amp;#163;15 for?&lt;/p&gt;  &lt;p&gt;The problem that the music industry seems to have is that they're so focused on music, they're not studying how people are using the music they publish.&amp;#160; Once we've given them our life savings to listen to a 30-second demo they're uninterested in what we do next.&amp;#160; When I've paid for a CD and put it on my computer and Windows Media Player doesn't know what it is, I feel disappointed with my purchase.&amp;#160; When I can't see the album art clearly I feel disappointed with my purchase, and I'm not going to be so willing to pay &amp;#163;15 when I can get pretty much the same thing for free over Limewire or Bittorrent.&lt;/p&gt;  &lt;p&gt;First hurdle however, is that the CD format doesn't support identifying different albums - it's basically a digitised gramophone, with some extra digital markers thrown in.&amp;#160; This is perfectly understandable as CDs were invented before the age of the internet, and at the time, they probably had more storage than most hard drives.&amp;#160; Of cause this could be easily fixed by shoehorning 16 bytes in somewhere to store a GUID for the album that can be picked up by media players and CD ripping software.&amp;#160; These GUIDs can then be registered at a central database that Internet-aware devices can contact to download the necessary information.&amp;#160; The other way to fix this would be to use CD-Text, but then you're getting into the realms of code-pages, character encodings, and text on the CD will take up alot more space than a 128-bit GUID.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2900880309243974148?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2900880309243974148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2900880309243974148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2900880309243974148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2900880309243974148'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/media-players-and-libraries.html' title='Media Players and Libraries'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4886969798503084375</id><published>2008-12-26T16:30:00.001Z</published><updated>2008-12-26T16:30:01.123Z</updated><title type='text'>Wii Tennis is a great game but...</title><content type='html'>&lt;p&gt;My arm is really aching after yesterday's tennising at Uncle and Auntie's house.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4886969798503084375?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4886969798503084375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4886969798503084375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4886969798503084375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4886969798503084375'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/wii-tennis-is-great-game-but.html' title='Wii Tennis is a great game but...'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-958515179750763875</id><published>2008-12-24T21:30:00.001Z</published><updated>2008-12-24T21:30:38.785Z</updated><title type='text'>Yes</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_NI_l8ifjiAI/SVKp77wwx5I/AAAAAAAAAB0/qVrm1SOHus0/s1600-h/Aero%20over%20RDP%5B9%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="Aero over RDP" src="http://lh3.ggpht.com/_NI_l8ifjiAI/SVKp8ZlH3RI/AAAAAAAAAB4/y7tyvXuab7s/Aero%20over%20RDP_thumb%5B5%5D.jpg?imgmax=800" width="244" align="left" border="0" /&gt;&lt;/a&gt;Yes, this is a remote desktop session&lt;/p&gt;  &lt;p&gt;Yes that is Aero you see&lt;/p&gt;  &lt;p&gt;Yes that is rather cool&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_NI_l8ifjiAI/SVKp-D-Ev5I/AAAAAAAAAB8/AAzlEJUFYp0/s1600-h/Flip%20over%20RDP%5B5%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="Flip over RDP" src="http://lh5.ggpht.com/_NI_l8ifjiAI/SVKp-5w7oxI/AAAAAAAAACA/BGbIYJeIxbU/Flip%20over%20RDP_thumb%5B3%5D.jpg?imgmax=800" width="244" align="right" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yes this is Flip 3D&lt;/p&gt;  &lt;p&gt;Yes it is a bit jerky, but suprisingly stable...&lt;/p&gt;  &lt;p&gt;Remote Desktop is able to tell if both server and client are running Vista (or Windows Server 2008) and can enable Aero over the remote session.&amp;#160; It's done by sending the appropriate drawing commands to the client, so it doesn't work on XP, which doesn't have a rasterising desktop composer...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-958515179750763875?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/958515179750763875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=958515179750763875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/958515179750763875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/958515179750763875'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/yes.html' title='Yes'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_NI_l8ifjiAI/SVKp8ZlH3RI/AAAAAAAAAB4/y7tyvXuab7s/s72-c/Aero%20over%20RDP_thumb%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-9180745752644089569</id><published>2008-12-18T00:06:00.001Z</published><updated>2008-12-18T00:06:21.089Z</updated><title type='text'>Webflex is now feature complete</title><content type='html'>&lt;p&gt;For those of you that are interested, Webflex is now feature complete for Version 1.0.&amp;#160; This means I no longer have any completely new bits to add to Webflex (I think).&amp;#160; Instead I now have the tediously boring task of reviewing the 1000s of lines of code I've written and make sure it's mostly consistent (which I know it isn't) and test that it all works (which some of it probably doesn't).&lt;/p&gt;  &lt;h2&gt;What is Webflex?&lt;/h2&gt;  &lt;p&gt;If you have no idea what Webflex is, then let me explain.&amp;#160; About three years ago I was registering on various forums, noticing that each time I was repeatedly putting in the same information.&amp;#160; This got me thinking that rather than using a web browser to access a forum, one could craft an application that would be able to access forums in a similar matter, but allow extra features like automatically registering at new forums and keeping those profiles in sync.&amp;#160; This idea grew into Aspex, which is currently on hold.&amp;#160; As I was writing Aspex, I noticed two distinct streams in the project: one side dealt with the forum part - headers, boards, posts, etc. and the other side dealt with managing data and the website.&amp;#160; I noticed that there was a clear gap between the two streams, which allowed me to to focus on creating a basic website management tool, which could be easily extended to provide both a web-based and local client based interface.&lt;/p&gt;  &lt;p&gt;This web and local client mix is where I believe that computing should be heading.&amp;#160; The browser is nothing more than an over-hyped shop window.&amp;#160; I'm not going to use a browser to edit my 100,000 word thesis, I'm not going to use a browser to edit my companies balance sheet and I'm not going to use a browser to create and show a presentation; I will use desktop applications for these tasks.&amp;#160; I'm going to use a browser to read articles, and access the communication services that networking (not just HTTP over TCP) allows when I'm away from my normal computing context (like at an airport, in town, etc.).&amp;#160; These communication services could be email, facebook, twitter, etc.&amp;#160; If I'm going to use these communication services they need to integrate into my current computing environment, and if that's isolated in a web browser, then that's one more button to click which is one more barrier to cross.&amp;#160; Therefore, any communication service worth my time will have both a web based interface and a local client that can integrate into my operating system (such as a Twitter gadget for the sidebar to let me micro-blog my current activity).&lt;/p&gt;  &lt;p&gt;Anyway, back to Webflex.&amp;#160; Webflex itself looks after the management of a website and it's data.&amp;#160; The idea is that you take Webflex and build up your website around it as one or a number of plugins.&amp;#160; Plugins have two versions: a server and a client version.&amp;#160; The server version contains Data Item classes, Data Handler classes, Web Services, Web Pages, plus the necessary XML and code to install the tables into the database.&amp;#160; The client version contains the web service clients, controls and other classes to integrate with the Webflex client and allow users to access the services on the server.&lt;/p&gt;  &lt;p&gt;The way in which Webflex manages data is quite important.&amp;#160; I felt that it was important that Webflex is as compatible as possible with different DBMSs.&amp;#160; Unfortunately DBMSs have different ways of expressing similar (but subtly different) things, so I needed a way to express the tables and queries that would be used in an independent way, that was easily usable by my code.&amp;#160; This resulted in the creation of XTDML (eXtensible Table Definition Markup Language) and XQDML (as XTDML, but with Query instead of Table).&amp;#160; These two XML based formats describe the necessary features of a table and query in a way that allows them to be converted to SQL statements at runtime to be installed into a database.&amp;#160; Rather than executing SQL queries each time, XQDML files are saved as stored procedures and views on a DBMS, so only the very simple task of calling the appropriate stored procedure is needed to get the data.&amp;#160; I also wrote a tool to convert Access queries to XQDML meaning that a developer never actually needs to touch SQL when developing a Webflex application.&amp;#160; Unfortunately the side affect of this is that Webflex is incompatible with OLEDB and ODBC databases (the .net provider for each doesn't support named parameters) and MySQL 4.0 and below (it doesn't support stored procedures or views).&lt;/p&gt;  &lt;p&gt;Another major feature of Webflex is it's security model.&amp;#160; The core of Webflex consists of about 15 tables for storing users, groups, plugin and security data.&amp;#160; Each user can be a member of many groups, upon which security controls are applied.&amp;#160; When a plugin is installed it may register a number of Object Types that can be secured.&amp;#160; Security can either be shared among all records in a table, or specific to an individual record.&amp;#160; The plugin will also specify the default security for each of the five ranks for each action defined on an object, so for example a plugin could specify that by default an Administrator can Edit a Header, but an unregistered user cannot.&amp;#160; This model allows for the adding of any number of objects and any number of actions, helping Webflex be a highly extensible core for a website.&lt;/p&gt;  &lt;p&gt;The final feature of Webflex is the Task Manager.&amp;#160; The Task Manager has a number of Tasks, that contain a number of actions and a number of triggers.&amp;#160; Triggers can be triggered by an Event, or at a certain time (which can be repeated over a certain period).&amp;#160; Whenever a trigger is triggered, each of the actions associated with that Task are run asynchronously.&amp;#160; Examples of Tasks include Installing a Plugin when requested, or sending an email to a newly registered user.&lt;/p&gt;  &lt;p&gt;And that pretty much sums up what I've been working on for the past three years.&amp;#160; And in writing this I've just realised that I haven't yet written the web interface, the ability for the local client to add new tasks to the Task Manager or for emails to be sent to new users telling them their credentials and registration code.&amp;#160; Oops.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-9180745752644089569?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/9180745752644089569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=9180745752644089569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/9180745752644089569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/9180745752644089569'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/webflex-is-now-feature-complete.html' title='Webflex is now feature complete'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-7950108584906388424</id><published>2008-12-13T20:24:00.001Z</published><updated>2008-12-13T20:24:56.135Z</updated><title type='text'>Laptop Shopping</title><content type='html'>&lt;p&gt;If there's one thing I hate more than Macs, it's buying a laptop.&amp;#160; As an aside I'm not a great fan of laptops anyway, but I can see where their portability would be advantageous.&amp;#160; This time I've been asked by the &lt;a href="www.anglo-italianfhs.org.uk/" target="_blank"&gt;Anglo-Italian Family History Society&lt;/a&gt; to get a laptop for them to take round the Family History Fairs, so that they can show their website and allow visitors to search their transcription records.&lt;/p&gt;  &lt;p&gt;Now, much as I despise &lt;a href="www.dell.co.uk" target="_blank"&gt;Dells&lt;/a&gt; and their cheap rubbishness, they have got the buying-a-laptop-online thing sorted.&amp;#160; I choose my model, customise it, get any extra accessories Dell can provide and buy it there and then, I've got what I want quickly, easily and with little stress.&amp;#160; So, with a rough figure to work from I can now go to other manufacturers and see what laptops they've got to offer.&amp;#160; On &lt;a href="www.acer.co.uk" target="_blank"&gt;Acers&lt;/a&gt; site, rather than giving a handy scriptlet to customise my laptop, they just list every model of laptop they sell, with a basic specification.&amp;#160; No customising, no searching, no &amp;quot;this is the model most suited for you&amp;quot;, just me and a list of meaningless product codes.&amp;#160; Same with &lt;a href="www.toshiba.co.uk" target="_blank"&gt;Toshiba&lt;/a&gt; (although they do have a searchy thing), same with &lt;a href="www.hp.co.uk" target="_blank"&gt;HP&lt;/a&gt;, same with &lt;a href="www.lenovo.co.uk" target="_blank"&gt;Lenovo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Let's face it, unless you don't mind sitting down with a large Excel spreadsheet ready to compare each one, you might as well get a Dell.&lt;/p&gt;  &lt;p&gt;What about the great leveller of the internet - price comparison websites.&amp;#160; Why shop around yourself, when a website can do it for you?&amp;#160; One issue I have with price comparison websites is that they tend to simplify things quite a lot.&amp;#160; For example, for filtering CPU speed I have to choose within their pre-determined ranges.&amp;#160; I can't say I want 1.8, but don't mind a little either side, I've got to say 1.7-1.79 and 1.8-1.89.&amp;#160; It's also increasingly common for CPU speeds to mean very little to the performance of a processor.&amp;#160; A uninformed user may see that there's 3GHz P4s or 1.8GHz Core 2 Duos.&amp;#160; Which one is better?&amp;#160; The Core 2, because it's got two cores, but the price comparison website doesn't see that, it only sees a processor (and who says a laptop can only have 1 processor) with a speed.&lt;/p&gt;  &lt;p&gt;Another price comparison website I went to, asked me to choose which brand I wanted first.&amp;#160; But that defeats the whole point of a price comparison website, when I want to compare competing laptops from different providers.&lt;/p&gt;  &lt;p&gt;Another problem with laptops (and computers in general) is different components from different makers.&amp;#160; Do I go for an Intel processor or an AMD processor?&amp;#160; Do I go for an ATI graphics chip, or an nVidia graphics chip?&amp;#160; What are a real performance differences?&amp;#160; Will the AMD spontaneously self combust on account of it's heat?&amp;#160; Will the ATI be let down by some terrible software?&amp;#160; Is it worth spending &amp;#163;30 on go-faster-strips?&amp;#160; Should I really throw this all away, become a &lt;a href="http://www.normssummeroflove.com/hippy-norm.jpg" target="_blank"&gt;hippy&lt;/a&gt;, buy a &lt;a href="http://francisanderson.files.wordpress.com/2008/01/cult_of_mac_400x503.jpg" target="_blank"&gt;Mac&lt;/a&gt; and put &lt;a href="http://org.dailyflashid.com/gallery/ubuntu.jpg" target="_blank"&gt;Ubuntu&lt;/a&gt; on it?&lt;/p&gt;  &lt;p&gt;What's needed is a central website with a large database with all the necessary statistics about every laptop, and every component in a laptop - from the RAM clock speeds, to the colour of the trackpad.&amp;#160; The site should then have extensive reviews comparing different components, and benchmarking them against each other.&amp;#160; The site can then use these facts to recommend different choices to users when they search for laptops.&lt;/p&gt;  &lt;p&gt;In other news &lt;a href="http://myeve.eve-online.com/devblog.asp?a=blog&amp;amp;bid=613#a41" target="_blank"&gt;Windows Vista is actually faster than Windows XP&lt;/a&gt;.&amp;#160; Unfortunately for &lt;a href="http://programming-designs.com/misc/web20pyramid.gif" target="_blank"&gt;Web 2.0&lt;/a&gt; &lt;a href="http://www.louisgray.com/graphics/onesies_500.jpg" target="_blank"&gt;pro-Apple, pro-Google&lt;/a&gt; &lt;a href="http://www.andybudd.com/presentations/dcontruct05/images/zen2.jpg" target="_blank"&gt;hippys&lt;/a&gt;, the world did not end, but a small deer was run over in a country lane in the &lt;a href="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCC&amp;amp;cp=50.722112~92.870178&amp;amp;style=h&amp;amp;lvl=10&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1" target="_blank"&gt;upper left corner of Mongolia&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-7950108584906388424?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/7950108584906388424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=7950108584906388424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7950108584906388424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/7950108584906388424'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/laptop-shopping.html' title='Laptop Shopping'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-2508660860816204298</id><published>2008-12-10T12:05:00.001Z</published><updated>2008-12-10T12:05:56.641Z</updated><title type='text'>Speedy Browsers</title><content type='html'>&lt;p&gt;Everyone knows that the problem with today's Web 2.0 applications is that they're uselessly slow.&amp;#160; Facebook, for example, is infuriatingly unresponsive to my clicks, and quite easily gets confuddled if I press the back button a few too many times.&amp;#160; Obviously Google has a few things to say about this problem and has come up with &lt;a href="http://google-code-updates.blogspot.com/2008/12/native-client-technology-for-running.html" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So, I want native speeds, network awareness, easy deployment... Simple, a nice application with a well written Windows Installer based auto-update manager would be perfect.&amp;#160; But then you'd have to be good at programming and that might be a problem for all those Web 2.0 companies that have problems thinking outside the browser...&lt;/p&gt;  &lt;p&gt;At the moment, we have a desktop which is too difficult for some 'programmers' to access.&amp;#160; So some very clever people made an abstraction of the desktop and invented a scripting language so that the world and his horse could display rubbish on our screens.&amp;#160; After a while this abstraction becomes more complex, and one wonders if there'll ever be an abstraction for the abstraction (a browser within a browser)...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-2508660860816204298?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/2508660860816204298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=2508660860816204298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2508660860816204298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/2508660860816204298'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/speedy-browsers.html' title='Speedy Browsers'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-3999014654912313185</id><published>2008-12-02T17:37:00.001Z</published><updated>2008-12-02T17:37:17.239Z</updated><title type='text'>On Java And Headaches</title><content type='html'>&lt;p&gt;Today's question of the day:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;How on earth did Sun manage to frak Java up so much?&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I suppose I ought to point out that I come from a VB and VB.NET background, so I'm not going to enjoy curly braces, case-sensitivity and semi-colons, but I can also point out that VB.NET and Java are competing in the same market and my thoughts about them will decide which one I 'push' in any programming related projects I take part in in the future.&lt;/p&gt;  &lt;p&gt;We have to learn Java at Bath in the first year, having just been molly coddled by Python for 6 weeks.&amp;#160; The issues that I have with Java can be summed up in this nice little list:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Type coercion:      &lt;br /&gt;VB.NET will let you run the following statement:       &lt;br /&gt;&lt;code&gt;Dim x As Single = 2.02&lt;/code&gt;       &lt;br /&gt;Java, on the other hand won't let you execute this equivalent statement:       &lt;br /&gt;&lt;code&gt;float x = 2.02;&lt;/code&gt;       &lt;br /&gt;Why? Because 2.02 in Java is created as a double and you can't coerce a double straight to a float, despite the fact that I CLEARLY WANT THIS VARIABLE AS A FLOAT and 2.02 is perfectly representable by this data type.&amp;#160; Similarly I can't assign a long variable a value greater than 2^32 because by default Java creates numbers as ints, despite the fact I'm clearly assigning this constant value to a long variable.&amp;#160; Similarly I can't coerce a char to a String (although I can append chars to Strings). &lt;/li&gt;    &lt;li&gt;String equality:      &lt;br /&gt;The following function returns false:       &lt;br /&gt;&lt;code&gt;boolean Example(){ String s1 = &amp;quot;blah&amp;quot;; String s2 = &amp;quot;bl&amp;quot;+&amp;quot;ah&amp;quot;; return s1 == s2; }&lt;/code&gt;       &lt;br /&gt;Why does it return false? Because the == operator on strings compares the reference not the value.&amp;#160; How many times will I want to know if two variables reference the same string compared to the number of times I will want to two if two variables reference equal strings?&amp;#160; Instead I've got to use the compareTo function to find that s1 and s2 are equal.&lt;/li&gt;    &lt;li&gt;Interface naming     &lt;br /&gt;In the .net framework all interface names start with 'I', so we have 'IList', 'IComponent', 'IComparable', etc.&amp;#160; In Java there is no difference between the naming scheme of a class and an interface.&amp;#160; In Java is 'Collection' an interface or a class?&amp;#160; Is 'Set' an interface or a class?&amp;#160; You can't tell until Java complains when you try to inherit them that they're both interfaces!&lt;/li&gt;    &lt;li&gt;IDE     &lt;br /&gt;Why does Eclipse have to be so slow?&amp;#160; I'm half way through typing out a line of code and it spends 15 seconds thinking about nothing before letting my text appear on the screen.&amp;#160; With VB.NET, all you need to do is install VB2008 Express and you're sorted with one of the best IDEs ever made.&amp;#160; With Java you can use Sun Development Studio, NetBeans, Eclipse, Emacs (if you're brave) and so on and so forth.&amp;#160; This means that rather than focus on one quality product, developers are spreading their efforts to maintain 3 IDEs (Emacs doesn't count) and the reduction in quality is noticable.&lt;/li&gt;    &lt;li&gt;;     &lt;br /&gt;And one last shout to my friend, the semi-colon.&amp;#160; Why can't they develop and IDE clever enough to put them in for me?&amp;#160; Or develop a language clever enough not to need them?&amp;#160; Oh wait they did...&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-3999014654912313185?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/3999014654912313185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=3999014654912313185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3999014654912313185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/3999014654912313185'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/12/on-java-and-headaches.html' title='On Java And Headaches'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-543042671867273627</id><published>2008-11-25T01:19:00.001Z</published><updated>2008-11-25T01:19:16.633Z</updated><title type='text'>Love One</title><content type='html'>&lt;p&gt;I've had a sore throat for the last few days, and it made me have a coughing fit during a coursework group meeting yesterday.&amp;#160; Thankfully we were in an '&lt;a href="http://www.bath.ac.uk/news/multimedia/internal/?1196937070" target="_blank"&gt;e-Lounge&lt;/a&gt;' so I was able to run and get a bottle of water and stop the coughing.&amp;#160; Unfortunately only bottled water was available at &amp;#163;1 for 500ml, which is a bit expensive, but when you're coughing you don't care, and the water is produced by the &lt;a href="http://www.onedifference.org/uk/water/" target="_blank"&gt;One Difference&lt;/a&gt; organisation that channels its profits into water supply projects in deepest darkest Africa and has a picture of &lt;a href="http://www.david-tennant.com/" target="_blank"&gt;David Tennant&lt;/a&gt; on their site...&lt;/p&gt;  &lt;p&gt;Reading the back of the bottle, One Difference gives villages a &lt;a href="http://www.playpumps.org/" target="_blank"&gt;PlayPump&lt;/a&gt;, which is like a child's roundabout attached to a pump so that as the children play, water is pumped into storage tanks.&amp;#160; Is this not the most genius application of child labour?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-543042671867273627?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/543042671867273627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=543042671867273627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/543042671867273627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/543042671867273627'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/11/love-one.html' title='Love One'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-541345469991363686</id><published>2008-11-20T11:42:00.001Z</published><updated>2008-11-20T11:42:43.437Z</updated><title type='text'>Tehe</title><content type='html'>&lt;p&gt;&lt;a href="http://blog.wired.com/gadgets/2008/11/apple-adds-copy.html" target="_blank"&gt;Suckers&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-541345469991363686?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/541345469991363686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=541345469991363686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/541345469991363686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/541345469991363686'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/11/tehe.html' title='Tehe'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-6511236426625229475</id><published>2008-11-13T15:39:00.001Z</published><updated>2008-11-13T15:39:15.540Z</updated><title type='text'>Java</title><content type='html'>&lt;p&gt;Proof that open source doesn't always work:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;How can you have a class-orientated language and not include properties?!?!?!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Or maybe it's just Java...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-6511236426625229475?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/6511236426625229475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=6511236426625229475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6511236426625229475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/6511236426625229475'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/11/java.html' title='Java'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-4757467372704332945</id><published>2008-11-10T23:09:00.001Z</published><updated>2008-11-10T23:09:19.903Z</updated><title type='text'>Eve Blogs and RESTing</title><content type='html'>&lt;p&gt;Two for the price of one:&lt;/p&gt;  &lt;h2&gt;Eve Blogs&lt;/h2&gt;  &lt;p&gt;I never realised &lt;a href="http://www.crazykinux.com/2008/04/eve-online-blogroll-lovefest.html" target="_blank"&gt;how many blogs there are about Eve&lt;/a&gt;.&amp;#160; Most efforts seem to be centered around &lt;a href="http://www.crazykinux.com/" target="_blank"&gt;CraxyKinux&lt;/a&gt;, who has done alot in organising the Eve Blogging community and maintains a list of every Eve Blog around, plus &lt;a href="http://www.crazykinux.com/2008/06/eve-online-blog-pack.html" target="_blank"&gt;30 high quality blogs&lt;/a&gt;.&amp;#160; Someone even made an &lt;a href="http://www.eve-druid.com/opml-download/" target="_blank"&gt;OPML file&lt;/a&gt; so you can read them all in your preferred RSS Reader.&lt;/p&gt;  &lt;p&gt;The blogs are quite interesting; the blogs written from the perspective of the Eve characters aren't my thing, but some of the entries written by the Eve University 'Professors' offer some witty anecdotes about the latest crazy corp to declare war against them.&lt;/p&gt;  &lt;p&gt;Although a blog purist could claim that most aren't really blogs, as in the strictest sense posts should link to a URL that the writer found interesting (the name blog comes from &lt;a href="http://en.wikipedia.org/wiki/Blog#History" target="_blank"&gt;Web Log&lt;/a&gt;), they're more bdiaries.&lt;/p&gt;  &lt;h2&gt;REST&lt;/h2&gt;  &lt;p&gt;While writing Webflex (which I've just realised I've still yet to properly introduce on this blog), I've been increasingly tempted to use &lt;a href="http://en.wikipedia.org/wiki/REST" target="_blank"&gt;REST&lt;/a&gt; rather than &lt;a href="http://en.wikipedia.org/wiki/SOAP_(protocol)" target="_blank"&gt;SOAP&lt;/a&gt; to communicate with the web server.&lt;/p&gt;  &lt;p&gt;&amp;quot;What is the difference?&amp;quot;&amp;#160; I hear you cry.&amp;#160; Well SOAP and REST are both technologies that attempt to let you transfer an object's state (property and field values) between a server and a client.&amp;#160; They both approach the problem from interestingly difference perspectives.&lt;/p&gt;  &lt;p&gt;SOAP is heavily based on XML, and includes all the trimmings you need to transfer stuff across a network.&amp;#160; It defines a root XML element, which contains a header tag and a body tag.&amp;#160; In the most common implementations, SOAP requests are sent in HTTP requests to a common URL on a web server (such as http://example.com/webserver.asmx) and the namespace of the various elements are used by the web server to determine what to do with the request.&lt;/p&gt;  &lt;p&gt;In true Web 2.0 style, REST focuses on URLs and minimalism to send data over the web.&amp;#160; It has no formal definition (it's more of a design/architecture than a standard), but encourages simply returning an XML document in response to a particular URL (such as http://example.com/users/104374).&lt;/p&gt;  &lt;p&gt;Interestingly SOAP can be used over any suitable protocol, including SMTP or raw TCP, but in most cases it twists HTTP into a transport level protocol to send its data.&amp;#160; REST on the other hand needs something like HTTP for it's URL-based, header and GET/POST functionality.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-4757467372704332945?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/4757467372704332945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=4757467372704332945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4757467372704332945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/4757467372704332945'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/11/eve-blogs-and-resting.html' title='Eve Blogs and RESTing'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8989624252340821717.post-8522674402387315838</id><published>2008-11-02T18:42:00.001Z</published><updated>2008-11-02T18:42:18.948Z</updated><title type='text'>Weekend Away</title><content type='html'>&lt;p&gt;I'm just back from the CU Weekend Away.&amp;#160; We went to Hebron Hall, near Cardiff and I think a very enjoyable time was had by all.&lt;/p&gt;  &lt;p&gt;We arrived on the Friday evening, and once we had all found our rooms and had tea, we had the first of our meetings.&amp;#160; We had a talk by a guy called Dave (?), an ex-UCCF worker, who used to work with Bath, Bath Spa, Bristol and UWE CUs.&amp;#160; His talks were quite interesting - all about how God speaks to us, through his written word, which was inspired by His Spirit and all points to Jesus.&lt;/p&gt;  &lt;p&gt;On Saturday morning, we had the talk in the morning, followed by a fantastic seminar about how to explain the gospel to non-believers.&amp;#160; The leader, Jo, lead us through the Why, What and How of gospel explaining.&amp;#160; For those who are interested, when explaining the gospel, we should include the following points:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;God created the earth&lt;/li&gt;    &lt;li&gt;We were created to have a good relationship with God, and with free will.&amp;#160; We used this free will to go against God's way.&lt;/li&gt;    &lt;li&gt;God loves us and wants to forgive us&lt;/li&gt;    &lt;li&gt;The price of sin is death - when we sin something has to die.&amp;#160; In the Old Testament the Jews sacrificed lambs but...&lt;/li&gt;    &lt;li&gt;When Jesus was crucified, he became our sacrifice for when we sin&lt;/li&gt;    &lt;li&gt;Three days later, Jesus rose from the dead proving there is life after death&lt;/li&gt;    &lt;li&gt;We have a choice as to whether we follow Jesus or not&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But now I have some work I ought to be doing, but I'm too tired so I might leave it till tomorrow...&lt;/p&gt;  &lt;p&gt;Hmm... I can't be bothered to procrastinate now, I'll do it tomorrow as well.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8989624252340821717-8522674402387315838?l=dotknot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotknot.blogspot.com/feeds/8522674402387315838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8989624252340821717&amp;postID=8522674402387315838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8522674402387315838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8989624252340821717/posts/default/8522674402387315838'/><link rel='alternate' type='text/html' href='http://dotknot.blogspot.com/2008/11/weekend-away.html' title='Weekend Away'/><author><name>Nicholas</name><uri>http://www.blogger.com/profile/13147961440552131674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_NI_l8ifjiAI/SdqRo2PqneI/AAAAAAAAACk/S08VkIkOtfI/S220/Me+at+JYG.JPG'/></author><thr:total>0</thr:total></entry></feed>
