<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEMMSHs-eyp7ImA9WxJVGEo.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456</id><updated>2009-07-06T02:28:09.553-07:00</updated><title>Alan Dean</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://alandean.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/alan-dean-at-charteris" type="application/atom+xml" /><entry gd:etag="W/&quot;C0UDRH84eSp7ImA9WxJREEs.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-7035540869004942490</id><published>2009-05-11T10:01:00.001-07:00</published><updated>2009-05-11T10:01:15.131-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-11T10:01:15.131-07:00</app:edited><title>2009 Alt.Net UK Conference Announced</title><content type="html">&lt;p&gt;We are pleased to announce the &lt;a title="Alt.Net UK Conference 2009" href="http://www.altnetuk.com/" rel="bookmark"&gt;2009 Alt.Net Conference&lt;/a&gt;. &lt;a title="AltNetConf UK London August 2009" href="http://codebetter.com/blogs/ian_cooper/archive/2009/05/11/altnetconf-uk-london-august-2009.aspx" rel="bookmark"&gt;As Ian says&lt;/a&gt;, we tend to organise the Conference when the community feels ready for one and the time seems right again.&lt;/p&gt;  &lt;p&gt;This time, we are settings our sights a little higher and making a weekend of it by bringing together the Alt.Net Beers which &lt;a title="SerialSeb" href="http://serialseb.blogspot.com/" rel="bookmark"&gt;Seb&lt;/a&gt; runs, the &lt;a title="Open Space Coding Days in London" href="http://openspacecode.com/uk/london" rel="bookmark"&gt;Open Space Coding Day&lt;/a&gt; which I run and the Conference itself. Attendees will be able to register for one, two or all three events depending on availability. Registration will be open from 13:00 on Tuesday 12 May (tomorrow if you are reading this at the time of posting).&lt;/p&gt;  &lt;p&gt;Our thanks go to EMC Conchango for agreeing to host both the Saturday and Sunday events and also to TEQUILA\ for hosting the Alt.Net Beers on Friday. We would also like to thank our sponsors for giving us support during a time of constrained budgets.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Please note: the website is in the process of shifting DNS entries, so if you don’t see the new version at &lt;/em&gt;&lt;a href="http://altnetuk.com"&gt;&lt;em&gt;http://altnetuk.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt; then try &lt;/em&gt;&lt;a href="http://www.altnetuk.com"&gt;&lt;em&gt;http://www.altnetuk.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt; instead.&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/5703778183485988456-7035540869004942490?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/7035540869004942490/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=7035540869004942490" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7035540869004942490?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7035540869004942490?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/oc1eXe_8Trc/2009-altnet-uk-conference-announced.html" title="2009 Alt.Net UK Conference Announced" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/05/2009-altnet-uk-conference-announced.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEFSHk-fip7ImA9WxJTF0s.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-4971820162361533510</id><published>2009-04-26T05:52:00.001-07:00</published><updated>2009-04-26T09:16:59.756-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-26T09:16:59.756-07:00</app:edited><title>Golden Hours</title><content type="html">&lt;p&gt;&lt;a title="John Harrison&amp;#39;s H4 Watch" href="http://www.horology-stuff.com/watches/H4.html" rel="bookmark"&gt;&lt;img style="display: inline" align="right" src="http://farm4.static.flickr.com/3645/3475407805_0e7181fc47_m.jpg" /&gt;&lt;/a&gt; I quite often talk about “Golden Hours”. I employ the practice both at &lt;a title="moveme.com" href="http://www.moveme.com/" rel="bookmark"&gt;work&lt;/a&gt; and at the &lt;a title="Open Space Coding Days" href="http://openspacecode.com/home" rel="bookmark"&gt;Open Space Coding Days&lt;/a&gt;. However, I find that there are relatively few people who have heard of the practice – a fact that I find somewhat surprising given the huge amount of value that I find that it delivers. Although I can’t quite recall where I first heard of Golden Hours, I have been using the practice for about 6 years, on and off.&lt;/p&gt;  &lt;h4&gt;Background&lt;/h4&gt;  &lt;p&gt;There has been a great deal of research over the years into human concentration and productivity, much of which indicates that humans tend to concentrate in sprints. Furthermore, deep concentration seems to take time to achieve (typically at least 10 to 15 minutes) and is easily disrupted, &lt;a title="Human concentration study is reported" href="http://www.physorg.com/news78417842.html" rel="bookmark"&gt;especially by multiple stimuli&lt;/a&gt;. The optimum concentration period seems to be in the region of 100 minutes and few are able to maintain deep concentration beyond that.&lt;/p&gt;  &lt;p&gt;In addition to the general research, there is a body of productivity studies (including a great deal on &lt;a title="Maximising Development Productivity" href="http://www.byte-vision.com/ProductivityArticle.aspx" rel="bookmark"&gt;developer productivity&lt;/a&gt;). Much of this indicates that, regardless of the number of hours actually worked, the vast bulk of productive coding time amounts to about 4 hours a day.&lt;/p&gt;  &lt;p&gt;When discussing this with developers, I find that this generally fits with their personal experience.&lt;/p&gt;  &lt;h4&gt;In Practice&lt;/h4&gt;  &lt;p&gt;Essentially, Golden Hours takes the observations made above and simply embraces them.&lt;/p&gt;  &lt;p&gt;What does it look like in practice? I follow a regime as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Golden Hours run from 10:00 to 12:00 and from 14:00 to 16:00.&lt;/li&gt;    &lt;li&gt;All preparatory work must be carried out prior to the Golden Hours: all investigations and all communications must be complete. Preparation is regarded as ‘done’ when the pair who will work together are satisfied that they have sufficient knowledge to code for 2 hours without interruption.&lt;/li&gt;    &lt;li&gt;During the assigned Golden Hours, the developers should close all communications: shut off IM, close their email application, mute their phones and so on.&lt;/li&gt;    &lt;li&gt;During the assigned Golden Hours, nobody is allowed to interrupt the developers unless there is an emergency. Fire alarms count, the live systems failing catastrophically also count. Not much else counts as an emergency. This includes the CEO, other senior management and any other stakeholders. It isn’t negotiable. In reality, there is very little that can’t wait for a maximum of 2 hours.&lt;/li&gt;    &lt;li&gt;Depending upon your environment, there may need to be a buffer to protect the developers. In some organisations, that may involve having 1st-line tech support. In others, you may need a assign the ‘bouncer’ role to someone.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have found that 2 hours is an excellent unit of time to work with. You can thoroughly prepare for a 2 hour coding stint in a relatively short time (I find to 30 minutes preparation time is typically sufficient). It is a length of time that external stakeholders are usually happy to live with the developers going incommunicado. Just the need to thoroughly prepare is an excellent practice that minimises wheel-spinning. Once you have bedded-in Golden Hours, I have also found that it is a good unit of time for estimation purposes – along the lines of &lt;em&gt;“Assuming that you know everything that you need to know, how many golden hours do you estimate that this task / feature / story will take?”&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;You may find the response to the introduction of Golden Hours surprising. When I brought the practice into MoveMe, the product owner immediately asked &lt;em&gt;“Does this mean that developers can’t interrupt &lt;strong&gt;me&lt;/strong&gt; during this time either?”&lt;/em&gt; with a big smile of his face. An excellent reminder that being unprepared and disorganised is a disruption to others.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-4971820162361533510?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/4971820162361533510/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=4971820162361533510" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4971820162361533510?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4971820162361533510?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/AyCoVmDLsl4/golden-hours.html" title="Golden Hours" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/04/golden-hours.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUACSHw4fip7ImA9WxVVFkw.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-1014158280433051777</id><published>2009-03-09T08:49:00.001-07:00</published><updated>2009-03-09T08:49:29.236-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-09T08:49:29.236-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><title>Turning 40</title><content type="html">&lt;p&gt;&lt;img style="display: inline; margin: 0px 5px 0px 0px" src="http://farm4.static.flickr.com/3622/3341757990_21ae9f4553_t.jpg" align="left" /&gt; This evening I am off to Coventry to give my “&lt;a title="Video of REST at DDD7" href="http://alandean.blogspot.com/2009/01/video-of-rest-at-ddd7.html" rel="bookmark"&gt;Separating REST Facts from Fallacies&lt;/a&gt;” talk at the &lt;a title="You are under a REST!" href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=181" rel="nofollow"&gt;Coventry NxtGenUG&lt;/a&gt;, after which I will head up to Yorkshire as it is my 40th tomorrow. I don’t have anything in particular planned as I’m not big on birthdays, although I have treated myself to a new car (nothing fancy – just a Honda Jazz).&lt;/p&gt;  &lt;p&gt;It’s odd, the prospect of turning 40, in that I really don’t feel like I am. Having never married nor had children, perhaps I haven’t been through the life events that make someone feel 40. It’s my working conjecture to explain it. In any event, I’ll only been sporadically connected in the next couple of days.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-1014158280433051777?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/1014158280433051777/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=1014158280433051777" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1014158280433051777?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1014158280433051777?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/gLTBx9gW8JI/turning-40.html" title="Turning 40" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/03/turning-40.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkACQn45eSp7ImA9WxVWGUw.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-1510454838892730435</id><published>2009-03-01T04:32:00.001-08:00</published><updated>2009-03-01T04:32:43.021-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-01T04:32:43.021-08:00</app:edited><title>Environment Preparation for Book</title><content type="html">&lt;p&gt;Personally, I am a big fan of using Virtual PC for development as it makes changing between software versions so easy and allows easy switching between host machines. So, naturally, an important task in preparation for my book is to set up an image for the development. Here is my recipe:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a title="Windows Server 2008" href="http://www.microsoft.com/windowsserver2008" rel="nofollow"&gt;Windows Server 2008&lt;/a&gt; &lt;em&gt;(I could use Vista but I prefer to develop on a Server OS)&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="Microsoft Visual Studio" href="http://www.microsoft.com/visualstudio" rel="nofollow"&gt;Microsoft Visual Studio 2008 Team System&lt;/a&gt;, including &lt;a title="SQL Server" href="http://www.microsoft.com/sqlserver" rel="nofollow"&gt;SQL Express 2005&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Ancillary Software     &lt;ul&gt;       &lt;li&gt;&lt;a title="Visual Studio 2008 Add-in Compatibility" href="http://www.csharper.net/blog/visual_studio_2008_add_in_compatibility.aspx" rel="nofollow"&gt;C# Shiznit&lt;/a&gt;          &lt;ul&gt;           &lt;li&gt;Explore In Windows for Visual Studio 2008&lt;/li&gt;            &lt;li&gt;MRU Cleaner for Visual Studio 2008&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;&lt;a title="Google Chrome" href="http://www.google.com/chrome" rel="nofollow"&gt;Chrome&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="CopySourceAsHtml (CSAH)" href="http://www.jtleigh.com/CopySourceAsHtml" rel="nofollow"&gt;CopySourceAsHtml&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="Fiddler Web Debugger" href="http://www.fiddler2.com/" rel="nofollow"&gt;Fiddler&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="Firefox web browser" href="http://www.mozilla.com/firefox" rel="nofollow"&gt;Firefox&lt;/a&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a title="Abduction! :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/3408" rel="nofollow"&gt;Abduction!&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="ColorZilla :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/271" rel="nofollow"&gt;ColorZilla&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Copy Plain Text Mozilla Extension by Jeremy Gillick" href="http://mozmonkey.com/copyplaintext/" rel="nofollow"&gt;Copy Plain Text&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="CSS Validator :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/2289" rel="nofollow"&gt;CSS Validator&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="CSS Viewer :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/2104" rel="nofollow"&gt;CSS Viewer&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Dublin Core Viewer :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/528" rel="nofollow"&gt;Dublin Core Viewer&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Firebug :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/1843" rel="nofollow"&gt;Firebug&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="FireFTP - The Free FTP Client for Mozilla Firefox" href="http://fireftp.mozdev.org/" rel="nofollow"&gt;FireFTP&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Html Validator :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/249" rel="nofollow"&gt;Html Validator&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="HttpFox :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/6647" rel="nofollow"&gt;HttpFox&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="IE View - Launch pages in IE from Firefox" href="http://ieview.mozdev.org/" rel="nofollow"&gt;IE View&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="LinkChecker :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/532" rel="nofollow"&gt;LinkChecker&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Live HTTP Headers :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/3829" rel="nofollow"&gt;Live HTTP Headers&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="MeasureIt :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/539" rel="nofollow"&gt;MeasureIt&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="NoScript :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/722" rel="nofollow"&gt;NoScript&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Operator :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/4106" rel="nofollow"&gt;Operator&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="pastego :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/3201" rel="nofollow"&gt;pastego&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Quick Locale Switcher :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/1333" rel="nofollow"&gt;Quick Locale Switcher&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Ubiquity :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/9527" rel="nofollow"&gt;Ubiquity&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="View Dependencies :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/2214" rel="nofollow"&gt;View Dependencies&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="View Source Chart (Firefox Extension)" href="http://jennifermadden.com/scripts/ViewRenderedSource.html" rel="nofollow"&gt;View Source Chart&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="WAVE Toolbar" href="http://wave.webaim.org/toolbar" rel="nofollow"&gt;WAVE Toolbar&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="Window Resizer :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/1985" rel="nofollow"&gt;Window Resizer&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a title="YSlow :: Firefox Add-ons" href="https://addons.mozilla.org/firefox/addon/5369" rel="nofollow"&gt;YSlow&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;&lt;a title="HttpWatch: An HTTP Viewer and HTTP Sniffer for IE and Firefox" href="http://www.httpwatch.com/" rel="nofollow"&gt;HttpWatch&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="Internet Explorer Developer Toolbar" href="http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038" rel="nofollow"&gt;Internet Explorer Developer Toolbar&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="StyleCop" href="http://code.msdn.microsoft.com/sourceanalysis" rel="nofollow"&gt;Microsoft StyleCop&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="Visual Studio Gallery | PowerCommands for Visual Studio 2008" href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31" rel="nofollow"&gt;Microsoft Visual Studio 2008 Power Commands&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="RedGate Reflector" href="http://www.red-gate.com/products/reflector" rel="nofollow"&gt;Reflector&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="TortoiseSVN" href="http://tortoisesvn.tigris.org/" rel="nofollow"&gt;TortoiseSVN&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a title="Windows Sysinternals" href="http://technet.microsoft.com/sysinternals" rel="nofollow"&gt;Windows Sysinternals&lt;/a&gt;          &lt;ul&gt;           &lt;li&gt;Debug View&lt;/li&gt;            &lt;li&gt;Process Explorer&lt;/li&gt;            &lt;li&gt;Process Monitor&lt;/li&gt;            &lt;li&gt;TCP View&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;&lt;a title="WinMerge" href="http://winmerge.org/" rel="nofollow"&gt;WinMerge&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET MVC" href="http://asp.net/mvc" rel="nofollow"&gt;ASP.NET MVC 1.0 Release Candidate&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="Microsoft Azure Resources" href="http://www.microsoft.com/azure/resources" rel="nofollow"&gt;Microsoft Azure&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a title="Microsoft Azure SDKs" href="http://www.microsoft.com/azure/sdk" rel="nofollow"&gt;Developer SDKs&lt;/a&gt;        &lt;ul&gt;         &lt;li&gt;Windows Azure Software Development Kit (January 2009 CTP)&lt;/li&gt;          &lt;li&gt;Windows Azure Tools for Microsoft Visual Studio January 2009 CTP&lt;/li&gt;          &lt;li&gt;Microsoft .NET Services SDK (Dec 2008 CTP)&lt;/li&gt;          &lt;li&gt;SQL Data Services (SDS) SDK (CTP)&lt;/li&gt;       &lt;/ul&gt;     &lt;/li&gt;      &lt;li&gt;&lt;a title="Microsoft Azure Training Kit" href="http://www.microsoft.com/azure/trainingkit" rel="nofollow"&gt;Training Kit&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-1510454838892730435?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/1510454838892730435/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=1510454838892730435" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1510454838892730435?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1510454838892730435?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/XpOC9gpgnl0/environment-preparation-for-book.html" title="Environment Preparation for Book" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/03/environment-preparation-for-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYMQHw8fSp7ImA9WxVWGE8.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-4138875482447337907</id><published>2009-02-28T04:29:00.001-08:00</published><updated>2009-02-28T04:29:41.275-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-28T04:29:41.275-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Book" /><title>Working out a writing schedule</title><content type="html">&lt;p&gt;This is the top-level view of my book:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Introduction (20 pages)&lt;/li&gt;    &lt;li&gt;Chapter 1: Introducing the Project (10 pages)&lt;/li&gt;    &lt;li&gt;Chapter 2: The Product Data Store (20 pages)&lt;/li&gt;    &lt;li&gt;Chapter 3: User Authentication (50 pages)&lt;/li&gt;    &lt;li&gt;Chapter 4: Product Management (80 pages)&lt;/li&gt;    &lt;li&gt;Chapter 5: Product Pages (50 pages)&lt;/li&gt;    &lt;li&gt;Chapter 6: The Shopping Cart (100 pages)&lt;/li&gt;    &lt;li&gt;Chapter 7: Checkout (150 pages)&lt;/li&gt;    &lt;li&gt;Chapter 8: Personalization (100 pages)&lt;/li&gt;    &lt;li&gt;Chapter 9: Deployment, Monitoring and Management (50 pages)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My next task is to work out a writing schedule to accomplish these chapters. This is my first book, so I am on a steep learning curve.&lt;/p&gt;  &lt;p&gt;Aside from community commitments, I will be devoting my weekends to writing and my weekday evenings to preparation, editorial and revisions.&lt;/p&gt;  &lt;p&gt;I will backload the Introduction and Chapter 1. Luckily Chapters 2 to 4 form an ‘up ramp’ in terms of page count, which I hope will allow me to accelerate into the writing rather than needing to be at high velocity from the start (an objective I would be unlikely to achieve). Another piece of luck is that the UK Bank Holiday season falls right in the middle of the schedule, just at the point where I have the largest pieces of work to accomplish.&lt;/p&gt;  &lt;p&gt;So, thinking in units of ‘weekend’ my initial plan is as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Feb 28 = Environment Prep &amp;amp; Ancillary Tasks&lt;/li&gt;    &lt;li&gt;Mar 07 = Chapter 2: The Product Data Store (20 pages)&lt;/li&gt;    &lt;li&gt;Mar 14 = Chapter 3: User Authentication (50 pages)&lt;/li&gt;    &lt;li&gt;Mar 21 = Chapter 4: Product Management (80 pages)&lt;/li&gt;    &lt;li&gt;Mar 28 = Chapter 4: Product Management (80 pages) &lt;em&gt;[Open Space Coding Day]&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Apr 04 = Chapter 5: Product Pages (50 pages) &lt;em&gt;[DDD Belfast]&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Apr 11 = Chapter 6: The Shopping Cart (100 pages) &lt;em&gt;[Easter Bank Holidays]&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Apr 18 = Chapter 6: The Shopping Cart (100 pages)&lt;/li&gt;    &lt;li&gt;Apr 25 = Chapter 6: The Shopping Cart (100 pages)&lt;/li&gt;    &lt;li&gt;May 02 = Chapter 7: Checkout (150 pages) &lt;em&gt;[DDD Scotland], [May Day Bank Holiday]&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;May 09 = Chapter 7: Checkout (150 pages)&lt;/li&gt;    &lt;li&gt;May 16 = Chapter 7: Checkout (150 pages)&lt;/li&gt;    &lt;li&gt;May 23 = Chapter 8: Personalization (100 pages) &lt;em&gt;[Whitsun Bank Holiday]&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;May 30 = Chapter 8: Personalization (100 pages) &lt;em&gt;[Open Space Coding Day]&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Jun 06 = Chapter 9: Deployment, Monitoring and Management (50 pages)&lt;/li&gt;    &lt;li&gt;Jun 13 = Introduction, Chapter 1&lt;/li&gt;    &lt;li&gt;Jun 20 = &lt;em&gt;&lt;strong&gt;(manuscript)&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A tough schedule, I know, but I &lt;em&gt;&lt;strong&gt;really&lt;/strong&gt;&lt;/em&gt; want this book out on the shelves by the time that &lt;a title="PDC &amp;#39;09" href="http://channel9.msdn.com/posts/PDCNews/Announcing-PDC2009/" rel="nofollow"&gt;PDC ‘09&lt;/a&gt; rolls around.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-4138875482447337907?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/4138875482447337907/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=4138875482447337907" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4138875482447337907?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4138875482447337907?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/BDlP1Xz1XS0/working-out-writing-schedule.html" title="Working out a writing schedule" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/working-out-writing-schedule.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4NSXs9fyp7ImA9WxVWGEw.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-1134181387065111202</id><published>2009-02-28T03:03:00.001-08:00</published><updated>2009-02-28T03:03:18.567-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-28T03:03:18.567-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Book" /><title>Preparation for Book Screenshots</title><content type="html">&lt;p&gt;Wiley have sent me a bunch of preparation guidelines in order to produce printable screenshots. They made it easy by providing theme files for Windows XP or Vista, However, I’m using a Server 2008 in Virtual PC because I’m developing for Azure so I had to step through their guide and carry out the configuration manually. The end result is not aesthetically pleasing on-screen but I am assured that it makes for good print stock:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3316/3316185336_e97f02762f_o.png" /&gt; &lt;/p&gt;  &lt;p&gt;Anyway, if any other Wiley authors want to skip the manual process on Server 2008 then just put the following into a .theme file and double-click it:&lt;/p&gt;  &lt;p&gt;&lt;small&gt;&lt;code&gt;; Copyright © Microsoft Corp. 1995-2001       &lt;br /&gt;        &lt;br /&gt;[Theme]        &lt;br /&gt;        &lt;br /&gt;; My Computer        &lt;br /&gt;[CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon]        &lt;br /&gt;DefaultValue=%SystemRoot%\System32\imageres.dll,-109        &lt;br /&gt;        &lt;br /&gt;; My Documents        &lt;br /&gt;[CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\DefaultIcon]        &lt;br /&gt;DefaultValue=%WinDir%SYSTEM32\mydocs.dll,0        &lt;br /&gt;        &lt;br /&gt;; My Network Places - SHIDI_MYNETWORK        &lt;br /&gt;[CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\DefaultIcon]        &lt;br /&gt;DefaultValue=%WinDir%SYSTEM32\imageres.dll,-25        &lt;br /&gt;        &lt;br /&gt;; Recycle Bin        &lt;br /&gt;[CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon]        &lt;br /&gt;full=%SystemRoot%\System32\imageres.dll,-54        &lt;br /&gt;empty=%SystemRoot%\System32\imageres.dll,-55        &lt;br /&gt;        &lt;br /&gt;[Control Panel\Colors]        &lt;br /&gt;ActiveTitle=0 0 0        &lt;br /&gt;Background=128 128 128        &lt;br /&gt;Hilight=0 0 0        &lt;br /&gt;HilightText=255 255 255        &lt;br /&gt;TitleText=255 255 255        &lt;br /&gt;Window=255 255 255        &lt;br /&gt;WindowText=0 0 0        &lt;br /&gt;Scrollbar=224 224 224        &lt;br /&gt;InactiveTitle=128 128 128        &lt;br /&gt;Menu=192 192 192        &lt;br /&gt;WindowFrame=0 0 0        &lt;br /&gt;MenuText=0 0 0        &lt;br /&gt;ActiveBorder=192 192 192        &lt;br /&gt;InactiveBorder=192 192 192        &lt;br /&gt;AppWorkspace=128 128 128        &lt;br /&gt;ButtonFace=192 192 192        &lt;br /&gt;ButtonShadow=127 127 127        &lt;br /&gt;GrayText=127 127 127        &lt;br /&gt;ButtonText=0 0 0        &lt;br /&gt;InactiveTitleText=192 192 192        &lt;br /&gt;ButtonHilight=224 224 224        &lt;br /&gt;ButtonDkShadow=64 64 64        &lt;br /&gt;ButtonLight=192 192 192        &lt;br /&gt;InfoText=0 0 0        &lt;br /&gt;InfoWindow=192 192 192        &lt;br /&gt;GradientActiveTitle=0 0 0        &lt;br /&gt;GradientInactiveTitle=128 128 128        &lt;br /&gt;ButtonAlternateFace=181 181 181        &lt;br /&gt;HotTrackingColor=0 0 128        &lt;br /&gt;MenuHilight=10 36 106        &lt;br /&gt;MenuBar=212 208 200        &lt;br /&gt;        &lt;br /&gt;[Control Panel\Desktop]        &lt;br /&gt;Wallpaper=        &lt;br /&gt;TileWallpaper=0        &lt;br /&gt;WallpaperStyle=2        &lt;br /&gt;Pattern=        &lt;br /&gt;ScreenSaveActive=0        &lt;br /&gt;        &lt;br /&gt;[Control Panel\Desktop\WindowMetrics]        &lt;br /&gt;        &lt;br /&gt;[Metrics]        &lt;br /&gt;IconMetrics=76 0 0 0 82 0 0 0 82 0 0 0 1 0 0 0 245 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 144 1 0 0 0 0 0 1 0 0 0 0 84 97 104 111 109 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0         &lt;br /&gt;NonclientMetrics=84 1 0 0 1 0 0 0 16 0 0 0 16 0 0 0 18 0 0 0 18 0 0 0 243 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 65 114 105 97 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 18 0 0 0 243 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 65 114 105 97 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 18 0 0 0 243 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 65 114 105 97 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 243 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 65 114 105 97 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 243 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 188 2 0 0 0 0 0 0 0 0 0 0 65 114 105 97 108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0         &lt;br /&gt;PaddedBorderWidth=0        &lt;br /&gt;        &lt;br /&gt;[MasterThemeSelector]        &lt;br /&gt;MTSM=DABJDKT        &lt;br /&gt;ThemeColorBPP=4        &lt;br /&gt;        &lt;br /&gt;[VisualStyles]        &lt;br /&gt;Path=        &lt;br /&gt;ColorStyle=@themeui.dll,-855        &lt;br /&gt;Size=@themeui.dll,-2019        &lt;/code&gt;&lt;/small&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-1134181387065111202?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/1134181387065111202/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=1134181387065111202" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1134181387065111202?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1134181387065111202?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/JDqDsYzPicQ/preparation-for-book-screenshots.html" title="Preparation for Book Screenshots" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/preparation-for-book-screenshots.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04NRH49fip7ImA9WxVWGEw.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-8265473271707420638</id><published>2009-02-28T02:13:00.001-08:00</published><updated>2009-02-28T02:13:15.066-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-28T02:13:15.066-08:00</app:edited><title>Book Cover Photoshoot</title><content type="html">&lt;p&gt;Now that I have a signed contract for my “RESTful Applications with Microsoft Azure” I went for my for my &lt;a title="Book Cover Photoshoot" href="http://www.flickr.com/photos/alan-dean/sets/72157614390263609/" rel="bookmark"&gt;book cover photoshoot&lt;/a&gt; of the author portrait that is the Wrox ‘signature’.&lt;/p&gt;  &lt;p&gt;This is the one that seems to be getting the most positive feedback:&lt;/p&gt;  &lt;p&gt;&lt;a title="Book Cover Photo 2" href="http://www.flickr.com/photos/alan-dean/3312015360/in/set-72157614390263609/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3393/3312015360_e2275b679c.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;These are the others that have been sent to the publisher:&lt;/p&gt;  &lt;p&gt;&lt;a title="Book Cover Photo 1" href="http://www.flickr.com/photos/alan-dean/3312013322/in/set-72157614390263609/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3611/3312013322_179d1ce75c_m.jpg" /&gt;&lt;/a&gt; &lt;a title="Book Cover Photo 3" href="http://www.flickr.com/photos/alan-dean/3311186867/in/set-72157614390263609/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3536/3311186867_dffc8e73e7_m.jpg" /&gt;&lt;/a&gt; &lt;a title="Book Cover Photo 4" href="http://www.flickr.com/photos/alan-dean/3312019458/in/set-72157614390263609/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3491/3312019458_3cd2378886_m.jpg" /&gt;&lt;/a&gt; &lt;a title="Book Cover Photo 5" href="http://www.flickr.com/photos/alan-dean/3311190807/in/set-72157614390263609/"&gt;&lt;img src="http://farm4.static.flickr.com/3664/3311190807_b1b4ba6a51_m.jpg" /&gt;&lt;/a&gt; &lt;a title="Book Cover Photo 6" href="http://www.flickr.com/photos/alan-dean/3312023250/in/set-72157614390263609/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3349/3312023250_0c7e9b1fc2_m.jpg" /&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/5703778183485988456-8265473271707420638?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/8265473271707420638/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=8265473271707420638" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/8265473271707420638?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/8265473271707420638?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/YXP5IjmMers/book-cover-photoshoot.html" title="Book Cover Photoshoot" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/book-cover-photoshoot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08ESXczfSp7ImA9WxVXFEo.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-5699702079808485149</id><published>2009-02-12T12:49:00.001-08:00</published><updated>2009-02-12T12:50:08.985-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-12T12:50:08.985-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><title>REST goes travelling</title><content type="html">&lt;p&gt;I am taking my “&lt;a title="Video of REST at DDD7" href="http://alandean.blogspot.com/2009/01/video-of-rest-at-ddd7.html" rel="bookmark"&gt;Separating REST Facts from Fallacies&lt;/a&gt;” on the road next week:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: inline; margin: 0px 5px 5px 0px" height="73" src="http://www.nxtgenug.net/images/h2mcp.jpg" width="81" align="left" /&gt; &lt;/p&gt;  &lt;h4&gt;&lt;a title="Event: A Change is a good as a REST!" href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=179" rel="bookmark"&gt;NxtGenUG at Microsoft Research Cambridge&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Tuesday 17th February 2009 (&lt;a title="Microsoft Research Cambridge" href="http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=CB3+0FB&amp;amp;ie=UTF8&amp;amp;z=17&amp;amp;iwloc=addr" rel="nofollow"&gt;map&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;&lt;a title="February 19th: NServiceBus and REST" href="http://tech.groups.yahoo.com/group/LondonDotNet/message/840" rel="nofollow"&gt;LondonDotNet User Group at Conchango&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Thursday 19th February 2009 (&lt;a title="Conchango, 36 Southwark Bridge Road, London" href="http://maps.google.co.uk/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=36+Southwark+Bridge+Road,+SE1+9EU&amp;amp;sll=51.505812,-0.095648&amp;amp;sspn=0.00794,0.01605&amp;amp;g=SE1+9EU&amp;amp;ie=UTF8&amp;amp;ll=51.512695,-0.09141&amp;amp;spn=0.00794,0.01605&amp;amp;z=14&amp;amp;iwloc=addr" rel="nofollow"&gt;map&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/5703778183485988456-5699702079808485149?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/5699702079808485149/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=5699702079808485149" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/5699702079808485149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/5699702079808485149?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/BhJkDxDkwX0/rest-goes-travelling.html" title="REST goes travelling" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/rest-goes-travelling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYMQHoyeSp7ImA9WxVQF00.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-867762430502047909</id><published>2009-02-03T15:19:00.001-08:00</published><updated>2009-02-03T15:19:41.491-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-03T15:19:41.491-08:00</app:edited><title>Community Code Spike</title><content type="html">&lt;p&gt;After the &lt;a title="Open Space Coding Day, London, 31st January 2009" href="http://openspacecode.com/uk/london/2009-01-31" rel="bookmark"&gt;Open Space Coding Day&lt;/a&gt; last Saturday there were a number of discussions about how the event format might be improved. One of those discussions got me thinking about how you might combine the extreme programming practice of Code Spiking along with the collaborative style of Open Spaces.&lt;/p&gt;  &lt;p&gt;So I decided that I would try out another experimental format, which I am going to call “Community Code Spike”. The recipe is as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Get 6 to 8 developers together.&lt;/li&gt;    &lt;li&gt;Pre-define a topic (fairly specific rather than generic).&lt;/li&gt;    &lt;li&gt;One day to spike code&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I was inspired by a conversation with Jamie Thomson to propose &lt;em&gt;“working out what is the best way to abstract the DAL in a web application to make the business logic agnostic to being self-hosted or Azure hosted.”&lt;/em&gt; as the first spike topic – to be held at the &lt;a title="Move Me" href="http://www.moveme.com/" rel="bookmark"&gt;MoveMe.com&lt;/a&gt; offices on 14th March at Buckingham Gate, London.&lt;/p&gt;  &lt;p&gt;All notes and code will be checked-in to Google Code under the MIT license in order that the community has access to the output of the spike.&lt;/p&gt;  &lt;p&gt;At the moment, I have 6 developers lined up:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Alan Dean&lt;/li&gt;    &lt;li&gt;James Enock&lt;/li&gt;    &lt;li&gt;Jamie Thomson&lt;/li&gt;    &lt;li&gt;Simon Evans&lt;/li&gt;    &lt;li&gt;David de Florinier&lt;/li&gt;    &lt;li&gt;Yucel Evrimer&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I suspect that 6 will be a good number for the event – I also think that it is the appropriate number for our offices (any more and we would need to find a bigger place to host it).&lt;/p&gt;  &lt;p&gt;Like the Open Space Coding Day, this will not be a one-off event. On the other hand, it is a format that suits ad-hoc arrangements so I won’t be hosting it on a schedule. Instead, I will put together groups of people according to the topic ‘at hand’ based on what I know of their interest and work out what is the right date for that group.&lt;/p&gt;  &lt;p&gt;If you like the idea – why not try it out yourself?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-867762430502047909?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/867762430502047909/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=867762430502047909" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/867762430502047909?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/867762430502047909?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/pnAzxcG5kQQ/community-code-spike.html" title="Community Code Spike" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/community-code-spike.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEICR34yfyp7ImA9WxVQFkk.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-2489467837638314099</id><published>2009-02-02T22:29:00.001-08:00</published><updated>2009-02-02T22:29:26.097-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T22:29:26.097-08:00</app:edited><title>Open Space Coding in Amsterdam?</title><content type="html">&lt;p&gt;You just gotta love twitter.&lt;/p&gt;  &lt;p&gt;During yesterday, there was a chat with &lt;a title="Mendelt Siebenga" href="http://twitter.com/Mendelt" rel="nofollow"&gt;Mendelt Siebenga&lt;/a&gt; and &lt;a title="Kees Dijk" href="http://twitter.com/KeesDijk" rel="nofollow"&gt;Kees Dijk&lt;/a&gt; who liked the sound of what we did in London from reading the twitterstream. They may put together an &lt;a title="Open Space Coding Day" href="http://openspacecode.com/" rel="bookmark"&gt;Open Space Coding Day&lt;/a&gt; of their own in Amsterdam. If this turns out to be a viral meme, then I will be a happy man :-) the more, the merrier!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-2489467837638314099?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/2489467837638314099/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=2489467837638314099" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/2489467837638314099?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/2489467837638314099?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/TVnvmC6OxJc/open-space-coding-in-amsterdam.html" title="Open Space Coding in Amsterdam?" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/open-space-coding-in-amsterdam.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQCR3k8eCp7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-570469357820580564</id><published>2009-02-02T22:16:00.001-08:00</published><updated>2009-02-10T13:12:46.770-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T13:12:46.770-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openspacecode" /><title>Wrapping up the first Open Space Coding Day</title><content type="html">&lt;p&gt;I felt that the first &lt;a title="Open Space Coding Day 1" href="http://openspacecode.com/uk/london/2009-01-31" rel="bookmark"&gt;Open Space Coding Day&lt;/a&gt; on Saturday validated my belief that if you get a group of geeks together who care enough, great things happen.&lt;/p&gt;  &lt;p&gt;Some of the attendees have already posted about their experience:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Open Space Coding – Using the SSDS REST Library" href="http://blogs.conchango.com/jamiethomson/archive/2009/02/01/open-space-coding-using-the-ssds-rest-library.aspx" rel="bookmark"&gt;Jamie Thomson&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Open Space Coding Day (31st Jan 2009) – Wrap Up" href="http://cantgrokwontgrok.blogspot.com/2009/01/open-space-coding-day-31st-jan-2009.html" rel="bookmark"&gt;Rob Cooper&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Surface at Open Space Code Day" href="http://kareenascode.blogspot.com/2009/02/surface-at-open-space-code-day.html" rel="bookmark"&gt;Chris O’Dell&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Reusable Build Scripts" href="http://sleepoverrated.com/archive/2009/02/reusable-build-scripts/" rel="bookmark"&gt;Scott Cowan&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;People were twittering during the event as well:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;“&lt;a title="twitter search &amp;quot;open space coding&amp;quot;" href="http://search.twitter.com/search?q=open+space+coding" rel="nofollow"&gt;open space coding&lt;/a&gt;” &lt;/li&gt;    &lt;li&gt;&lt;a title="#openspacecode tag" href="http://search.twitter.com/search?q=openspacecode" rel="nofollow"&gt;#openspacecode&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a title="Michelle Flynn talking during Planning" href="http://www.flickr.com/photos/alan-dean/3240339531/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3118/3240339531_a9f550aa84_m.jpg" /&gt;&lt;/a&gt; &lt;a title="Michelle Flynn talking during Planning" href="http://www.flickr.com/photos/alan-dean/3241170658/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3374/3241170658_7c6009deb8_m.jpg" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;The morning sessions that the attendees voted for were:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Reusable build scripts &lt;/li&gt;    &lt;li&gt;&lt;a title="MVC Testability" href="http://code.google.com/p/openspacecode/wiki/MvcTestability" rel="nofollow"&gt;Testability: HTML, JavaScript and ASP.NET MVC&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;OpenRasta, including static reflection &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The afternoon sessions were:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a title="Secure Development" href="http://code.google.com/p/openspacecode/wiki/SecureDevelopment" rel="nofollow"&gt;Hands-on secure development with Barry Dorrans&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Learning F# and the Euler Project" href="http://code.google.com/p/openspacecode/wiki/FSharpEuler" rel="nofollow"&gt;Learning F# and the Euler Project&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Using MEF &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a title="&amp;quot;Testability: HTML, Javascript and ASP.NET MVC&amp;quot; Session" href="http://www.flickr.com/photos/alan-dean/3241168202/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3485/3241168202_7f257d6d17_m.jpg" /&gt;&lt;/a&gt; &lt;a title="&amp;quot;OpenRasta, incl. Static Reflection&amp;quot; Session" href="http://www.flickr.com/photos/alan-dean/3240342213/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3506/3240342213_f85fbded21_m.jpg" /&gt;&lt;/a&gt; &lt;a title="&amp;quot;Reusable Build Scripts&amp;quot; Session" href="http://www.flickr.com/photos/alan-dean/3240344439/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3445/3240344439_8b85240cbc_m.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The concept for Open Space Coding is &lt;em&gt;“all about doing, not about talking”&lt;/em&gt;. So, no PowerPoint slide decks and no speakers. People really seemed to take this emphasis on board and the atmosphere was totally different to other events that I have attended – it felt very ‘studious’ to me. Someone else described it to me as ‘collegiate’.&lt;/p&gt;  &lt;p&gt;I took on the role of being ‘host-at-large’ during the day, checking in on the different rooms to see if things were running smoothly. This wasn’t onerous, but it did allow me to pass on effective practices that were being used in one room to other rooms. One takeaway is that next time, we need to have instructions beforehand on setting up access to the repository so that less time is lost wheel-spinning in the first 30 minutes.&lt;/p&gt;  &lt;p&gt;The event repository is &lt;a title="Open Space Coding Day repository" href="http://code.google.com/p/openspacecode/" rel="nofollow"&gt;http://code.google.com/p/openspacecode/&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="2009-01-31 London" href="http://code.google.com/p/openspacecode/source/browse/#svn/trunk/src/2009-01-31 London" rel="nofollow"&gt;The repository root for the day&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="MEF" href="http://code.google.com/p/openspacecode/source/browse/#svn/trunk/src/2009-01-31 London/MEF" rel="nofollow"&gt;MEF session code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="MvcTestability" href="http://code.google.com/p/openspacecode/source/browse/#svn/trunk/src/2009-01-31 London/MvcTestability" rel="nofollow"&gt;MVC testability session code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="f-sharp" href="http://code.google.com/p/openspacecode/source/browse/#svn/trunk/src/2009-01-31 London/f-sharp" rel="nofollow"&gt;F# session code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="hands-on-secure-development" href="http://code.google.com/p/openspacecode/source/browse/#svn/trunk/src/2009-01-31 London/hands-on-secure-development" rel="nofollow"&gt;Secure development session code&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="reusable-build-scripts" href="http://code.google.com/p/openspacecode/source/browse/#svn/trunk/src/2009-01-31 London/reusable-build-scripts" rel="nofollow"&gt;Reusable build scripts session code&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a title="A sneak preview of Barry&amp;#39;s session" href="http://www.flickr.com/photos/alan-dean/3240395445/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3084/3240395445_2427e68800_m.jpg" /&gt;&lt;/a&gt; &lt;a title="The Build Script session, cutting angle brackets" href="http://www.flickr.com/photos/alan-dean/3240396143/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3367/3240396143_25cac36ac0_m.jpg" /&gt;&lt;/a&gt; &lt;a title="The Testability session, cutting code" href="http://www.flickr.com/photos/alan-dean/3240396917/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3098/3240396917_81344d4c6c_m.jpg" /&gt;&lt;/a&gt; &lt;a title="The OpenRasta session, cutting code" href="http://www.flickr.com/photos/alan-dean/3240397737/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3397/3240397737_2ce74a4b91_m.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="EMC Conchango" href="http://www.conchango.com/" rel="nofollow"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://farm4.static.flickr.com/3508/3211059594_68709e7f3a_o.jpg" align="right" /&gt;&lt;/a&gt; Thank you to EMC Conchango for kindly hosting us for the day – it really makes a difference having a company who is so open to engagement with the community. Thanks also to &lt;a title="Michelle Flynn&amp;#39;s blog" href="http://blogs.conchango.com/michelleflynn/" rel="bookmark"&gt;Michelle Flynn&lt;/a&gt; for all her help. Conchango have a &lt;a title="Microsoft Surface" href="http://www.microsoft.com/surface" rel="nofollow"&gt;Microsoft Surface&lt;/a&gt; table, so at lunch there was a chance to play with this cool technology:&lt;/p&gt;  &lt;p style="text-align: center"&gt;&lt;a title="Playing with the Surface table at Conchango" href="http://www.flickr.com/photos/alan-dean/3241457608/in/set-72157613146486709/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3313/3241457608_8bb738ee0b.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Of course, no geek event is complete without the social element and we adjourned to &lt;a title="The George" href="http://www.pubs.com/pub_details.cfm?ID=187" rel="nofollow"&gt;The George&lt;/a&gt; on Borough High Street after the event for a well-deserved drink.&lt;/p&gt;  &lt;p&gt;I will be posting over the next few days about the feedback from the Retrospective and about other ideas that I would like to take community feedback about.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-570469357820580564?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/570469357820580564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=570469357820580564" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/570469357820580564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/570469357820580564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/ZTf7Aer6ito/wrapping-up-first-open-space-coding-day.html" title="Wrapping up the first Open Space Coding Day" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/02/wrapping-up-first-open-space-coding-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUFSXo9eyp7ImA9WxVRE00.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-5978425328161351209</id><published>2009-01-18T10:43:00.001-08:00</published><updated>2009-01-18T10:43:38.463-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-18T10:43:38.463-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openspacecode" /><title>Open Space Code website goes live</title><content type="html">&lt;p&gt;Nothing very exciting, to be sure, but the first Coding Day is now up on &lt;a title="http://openspacecode.com/" href="http://openspacecode.com/"&gt;http://openspacecode.com/&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/5703778183485988456-5978425328161351209?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/5978425328161351209/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=5978425328161351209" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/5978425328161351209?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/5978425328161351209?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/Zz4qqQrsOFs/open-space-code-website-goes-live.html" title="Open Space Code website goes live" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/01/open-space-code-website-goes-live.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFSXo6cSp7ImA9WxVREkQ.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-8784918799533658798</id><published>2009-01-18T06:39:00.001-08:00</published><updated>2009-01-18T06:56:58.419-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-18T06:56:58.419-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="DDD7" /><title>Video of REST at DDD7</title><content type="html">&lt;p&gt;In November, I gave my “&lt;a title="Separating REST Facts from Fallacies - Slideshare" href="http://www.slideshare.net/alan.dean/separating-rest-facts-from-fallacies-presentation" rel="bookmark"&gt;Separating REST Facts from Fallacies&lt;/a&gt;” presentation at &lt;a title="DDD7 Agenda" href="http://www.developerday.co.uk/ddd/agendaddd7lineup.asp" rel="nofollow"&gt;DDD7&lt;/a&gt; and I now have the video. Please be aware that the flash stream is 178MB, so please be a little patient whilst it downloads:&lt;/p&gt;  &lt;p&gt;&lt;object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="720" height="594" codebase="http://active.macromedia.com/flash7/cabs/ swflash.cab#version=9,0,28,0"&gt;                 &lt;param name="src" value="ddd7.flv" /&gt;                 &lt;param name="bgcolor" value="#1a1a1a" /&gt;                 &lt;param name="quality" value="best" /&gt;                 &lt;param name="allowScriptAccess" value="always" /&gt;                 &lt;param name="allowFullScreen" value="true" /&gt;                 &lt;param name="scale" value="showall" /&gt;                 &lt;param name="flashVars" value="autostart=false" /&gt;                 &lt;embed name="csSWF" src="http://thoughtpad.net/alan-dean/separating-rest-facts-from-fallacies/ddd7_controller.swf" width="720" height="594" bgcolor="#1a1a1a" quality="best" allowScriptAccess="always" allowFullScreen="true" scale="showall" flashVars="autostart=false" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;             &lt;/object&gt;&lt;/p&gt;  &lt;p&gt;The embedded video works fine in both Firefox and Chrome but my IE7 isn’t playing ball, so there is also a WMV version (290MB) &lt;a title="&amp;quot;Separating REST Facts from Fallacies&amp;quot; Video" href="http://thoughtpad.net/alan-dean/separating-rest-facts-from-fallacies/ddd7.wmv" rel="bookmark"&gt;available for download&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/5703778183485988456-8784918799533658798?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/8784918799533658798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=8784918799533658798" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/8784918799533658798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/8784918799533658798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/FODk80_HuBc/video-of-rest-at-ddd7.html" title="Video of REST at DDD7" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/01/video-of-rest-at-ddd7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQNQXg9fCp7ImA9WxVREko.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-8144307277459056758</id><published>2009-01-17T08:50:00.001-08:00</published><updated>2009-01-18T03:33:10.664-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-18T03:33:10.664-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="HTTP" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><title>HTTP i18N Patterns</title><content type="html">&lt;p&gt;&lt;a title="World Map - Robinson Projection" href="http://www.flickr.com/photos/alan-dean/3203930050/" rel="nofollow"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://farm4.static.flickr.com/3300/3203930050_1a32996537.jpg" align="right" /&gt;&lt;/a&gt; I have been dealing with the problems of &lt;a title="Internationalization and localization - Wikipedia" href="http://wikipedia.org/wiki/Internationalization_and_localization" rel="nofollow"&gt;internationalization&lt;/a&gt; (&lt;abbr title="internationalization numeronym"&gt;i18N&lt;/abbr&gt;) in order to make applications &lt;a title="Developing World-Ready Applications" href="http://msdn.microsoft.com/library/h6270d0z(VS.71)" rel="nofollow"&gt;world-ready&lt;/a&gt; for over a decade now. In fact, many years ago, my first community presentation was “&lt;a title="Internationalisation And Globalisation in Visual Basic 6 Presentation" href="http://www.slideshare.net/alan.dean/internationalisation-and-globalisation" rel="bookmark"&gt;Internationalisation and Globalisation in Visual Basic 6&lt;/a&gt;”.&lt;/p&gt;  &lt;p&gt;There has recently been a discussion on the &lt;a title="Yahoo! REST Discussion List" href="http://tech.groups.yahoo.com/group/rest-discuss/" rel="nofollow"&gt;[rest-discuss]&lt;/a&gt; list titled “&lt;a title="&amp;quot;Conneg for language selection: Just Say No&amp;quot; on [rest-discuss]" href="http://tech.groups.yahoo.com/group/rest-discuss/message/12006" rel="nofollow"&gt;Conneg for language selection: Just Say No&lt;/a&gt;”. I wrote a lengthy response on the thread and thought that there was value converting that into a blog entry.&lt;/p&gt;  &lt;h4&gt;Don’t confuse translation with localization&lt;/h4&gt;  &lt;p&gt;&lt;a title="Translation - Wikipedia" href="http://wikipedia.org/wiki/Translation" rel="nofollow"&gt;Translation&lt;/a&gt; is the conversion of source text in one language to target text in another language.&lt;/p&gt;  &lt;p&gt;&lt;a title="Language localization - Wikipedia" href="http://wikipedia.org/wiki/Language_localisation" rel="nofollow"&gt;Localization&lt;/a&gt; (&lt;abbr title="localization numeronym"&gt;l10N&lt;/abbr&gt;), whilst typically involving translation, is the process of cultural adaptation.&lt;/p&gt;  &lt;blockquote&gt;Imagine that you are book publisher responsible for publishing a work of &lt;a title="Leo Tolstoy - Wikipedia" href="http://wikipedia.org/wiki/Leo_Tolstoy" rel="nofollow"&gt;Leo Tolstoy&lt;/a&gt;. In Russia, you would not translate the text (the original being written in Russian). But you would still localize by, for example, putting a price on the cover in roubles. You might then order a translation to French and the imprint would be localized by having a price in euros. Depending on your marketing, the localization may also involve changing the jacket image and will certainly require the book title to be translated as well. However, it seems that there is a section of the market for Tolstoy in France that reads in Russian. In which case, you may decide to have an additional imprint that has no translation but still requires localisation of both jacket image and prices.&lt;/blockquote&gt;  &lt;h4&gt;Resource translation creates a new resource, translation of decoration creates alternate representations&lt;/h4&gt;  &lt;p&gt;In &lt;a title="REST bookmarks" href="http://delicious.com/alan.dean/rest" rel="bookmark"&gt;REST&lt;/a&gt;, it important to distinguish between different &lt;a title="REST Resource bookmarks" href="http://delicious.com/alan.dean/rest+resource" rel="bookmark"&gt;resources&lt;/a&gt; and different &lt;a title="REST Representation bookmarks" href="http://delicious.com/alan.dean/rest+representation" rel="bookmark"&gt;representations&lt;/a&gt;. When using &lt;a title="HTTP bookmarks" href="http://delicious.com/alan.dean/http" rel="bookmark"&gt;HTTP&lt;/a&gt;, you can &lt;a title="conneg bookmarks" href="http://delicious.com/alan.dean/conneg" rel="bookmark"&gt;content negotiate&lt;/a&gt; (&lt;abbr title="content negotiation"&gt;conneg&lt;/abbr&gt;) between alternate representations, but you should not do so between different resources. Instead, you should provide the user with links to follow to view the different resources.&lt;/p&gt;  &lt;h4&gt;Content negotiation by language or Request-IP address?&lt;/h4&gt;  &lt;p&gt;Localization conneg can be either language-driven from the &lt;a title="Accept-Language bookmarks" href="http://delicious.com/alan.dean/accept-language" rel="bookmark"&gt;Accept-Language&lt;/a&gt; HTTP header and/or country-driven from the Request-IP address. Both are valid localizations and both can be used in concert. For example, the price of goods and services are country-specific localizations rather then language-specific (both in terms of the currency used and the tax regime to be applied).&lt;/p&gt;  &lt;h4&gt;Health warning: URI structure is orthogonal to REST&lt;/h4&gt;  &lt;p&gt;Before I go into more detail with my examples, I want to make it clear that what &lt;a title="Uniform Resource Identifier - Wikipedia" href="http://wikipedia.org/wiki/Uniform_Resource_Identifier" rel="nofollow"&gt;URI&lt;/a&gt;s look like is, &lt;a title="prima facie - Wikipedia" href="http://wikipedia.org/wiki/Prima_facie" rel="nofollow"&gt;prima facie&lt;/a&gt;, unimportant to REST. This is sometimes referred to as &lt;a title="URI Opacity bookmarks" href="http://delicious.com/alan.dean/uri+opacity" rel="bookmark"&gt;URI opacity&lt;/a&gt; or opaqueness. Nonetheless, there are good patterns we can employ for URI structure and human-readable URIs are considered to be ‘&lt;em&gt;a good thing’&lt;/em&gt;.&lt;/p&gt;  &lt;h4&gt;Example: Tolstoy on the Web&lt;/h4&gt;  &lt;p&gt;Carrying on with the Tolstoy example, here is how I would personally approach the structure and content negotiation of his book “&lt;a title="Anna Karenina - Wikipedia" href="http://wikipedia.org/wiki/Anna_Karenina" rel="nofollow"&gt;Anna Karenina&lt;/a&gt;”&lt;/p&gt;  &lt;h5&gt;1. Expose the ‘concept of’ a book called “Anna Karenina” by Leo Tolstoy&lt;/h5&gt;  &lt;p&gt;&lt;code&gt;http://www.example.com/book/leo-tolstoy/anna-karenina&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;In this example, I have used the English translations of both names but any language would be acceptable. It is worth noting, however, that regardless of how much we may dislike the fact, American English is the &lt;a title="de facto - Wikipedia" href="http://wikipedia.org/wiki/De_facto" rel="nofollow"&gt;de facto&lt;/a&gt; default language of the Web. I would argue that you need a good reason to depart from American English for ‘&lt;a title="Canonical - Wikipedia" href="http://wikipedia.org/wiki/Canonical" rel="nofollow"&gt;canonical&lt;/a&gt;’ URIs. This is not to say that you cannot have localized URIs as well. In the example below, you can see “book” being translated into “livre” on the URI.&lt;/p&gt;  &lt;p&gt;Content negotiate based upon &lt;a title="Accept bookmarks" href="http://delicious.com/alan.dean/accept" rel="bookmark"&gt;Accept&lt;/a&gt; (for media types) and Accept-Language to a list of the various translations of Anna Karenina using the following URI structure:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;{canonical-baseURI}.{language-token}.{media-type-token}&lt;/code&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" summary="This table lists a series of example content negotiation URIs from the canonical URI." border="1"&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;caption&gt;A table of example content negotiation URIs from the canonical URI.&lt;/caption&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;URI&lt;/th&gt;        &lt;th&gt;Language&lt;/th&gt;        &lt;th&gt;Media Type&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/book/leo-tolstoy/anna-karenina&lt;/code&gt;&lt;/td&gt;        &lt;td colspan="2"&gt;No representation&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/book/leo-tolstoy/anna-karenina.en.html&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;&lt;a title="English language - Wikipedia" href="http://wikipedia.org/wiki/English_language" rel="nofollow"&gt;Generic English&lt;/a&gt;&lt;/td&gt;        &lt;td&gt;&lt;a title="HTML - Wikipedia" href="http://wikipedia.org/wiki/HTML" rel="nofollow"&gt;HTML&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/livre/leo-tolstoy/anna-karenina.fr.html&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;&lt;a title="French Language - Wikipedia" href="http://wikipedia.org/wiki/French_language" rel="nofollow"&gt;Generic French&lt;/a&gt;&lt;/td&gt;        &lt;td&gt;HTML&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/livre/leo-tolstoy/anna-karenina.fr-fr.html&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;French, as spoken in France&lt;/td&gt;        &lt;td&gt;HTML&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/livre/leo-tolstoy/anna-karenina.fr-ca.html&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;French, as spoken in Canada&lt;/td&gt;        &lt;td&gt;HTML&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/book/leo-tolstoy/anna-karenina.en.atom&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;Generic English&lt;/td&gt;        &lt;td&gt;&lt;a title="Atom syndication format - Wikipedia" href="http://wikipedia.org/wiki/Atom_(standard)" rel="nofollow"&gt;Atom&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/livre/leo-tolstoy/anna-karenina.fr.atom&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;Generic French&lt;/td&gt;        &lt;td&gt;Atom&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/livre/leo-tolstoy/anna-karenina.fr-fr.atom&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;French, as spoken in France&lt;/td&gt;        &lt;td&gt;Atom&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.com/livre/leo-tolstoy/anna-karenina.fr-ca.atom&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;French, as spoken in Canada&lt;/td&gt;        &lt;td&gt;Atom&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Each of these pages should contain a list of links of the available translations and the countries in which they are available for purchase.&lt;/p&gt;  &lt;h5&gt;2. Expose the country-specific links for product purchase&lt;/h5&gt;  &lt;p&gt;There are a number of different ways of hosting country specific URIs:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Country Code TLD bookmarks" href="http://delicious.com/alan.dean/cctld" rel="bookmark"&gt;Country Code TLDs&lt;/a&gt; (&lt;acronym title="Country Code Top Level Domain"&gt;ccTLD&lt;/acronym&gt;).       &lt;br /&gt;For example, &lt;code&gt;http://www.example.co.uk&lt;/code&gt; or &lt;code&gt;http://www.example.fr&lt;/code&gt; &lt;/li&gt;    &lt;li&gt;Country-specific subdomains.      &lt;br /&gt;For example, &lt;code&gt;http://uk.example.com&lt;/code&gt; or &lt;code&gt;http://fr.example.com&lt;/code&gt; &lt;/li&gt;    &lt;li&gt;Country-specific paths.      &lt;br /&gt;For example, &lt;code&gt;http://www.example.com/uk/&lt;/code&gt; or &lt;code&gt;http://www.example.com/fr/&lt;/code&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For my example purposes, I will simply use ccTLDs. If we look at the way in which we have set up our content negotiation for the canonical example above, we see that we can use the same pattern. In many cases, language negotiation isn’t provided for ccTLD domains unless there are multiple official languages. So for &lt;code&gt;http://www.example.fr&lt;/code&gt; there might only be localization to French but for &lt;code&gt;http://www.example.ca&lt;/code&gt; there would likely be localization to both English and French:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" summary="This table lists a series of example content negotiation URIs from the ccTLD URI." border="1"&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;caption&gt;A table of example content negotiation URIs from the ccTLD URI.&lt;/caption&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;URI&lt;/th&gt;        &lt;th&gt;Language&lt;/th&gt;        &lt;th&gt;Media Type&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.ca/book/leo-tolstoy/anna-karenina&lt;/code&gt;&lt;/td&gt;        &lt;td colspan="2"&gt;No representation&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.ca/book/leo-tolstoy/anna-karenina.en-ca.html&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;English, as spoken in Canada&lt;/td&gt;        &lt;td&gt;HTML&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.ca/livre/leo-tolstoy/anna-karenina.fr-ca.html&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;French, as spoken in Canada&lt;/td&gt;        &lt;td&gt;HTML&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.ca/book/leo-tolstoy/anna-karenina.en-ca.atom&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;English, as spoken in Canada&lt;/td&gt;        &lt;td&gt;Atom&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;code&gt;http://www.example.ca/livre/leo-tolstoy/anna-karenina.fr-ca.atom&lt;/code&gt;&lt;/td&gt;        &lt;td&gt;French, as spoken in Canada&lt;/td&gt;        &lt;td&gt;Atom&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;In some cases, such as Google, the canonical URI step is skipped by sniffing the Request-IP address and then redirecting straight to the ccTLD. Google has the good manners to also provide a link back to the .com domain when it does this.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-8144307277459056758?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/8144307277459056758/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=8144307277459056758" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/8144307277459056758?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/8144307277459056758?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/0-Pdv8qf9Eo/http-i18n-patterns.html" title="HTTP i18N Patterns" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/01/http-i18n-patterns.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MERHw8cCp7ImA9WxVREk0.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-6476373974299009554</id><published>2009-01-16T22:30:00.001-08:00</published><updated>2009-01-17T06:10:05.278-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-17T06:10:05.278-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><title>DDD Belfast</title><content type="html">&lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://farm4.static.flickr.com/3258/3203328366_9a0cf5dc9e_o.png" align="right" /&gt; The &lt;a title="DDD Belfast Call for Speakers" href="http://developerdeveloperdeveloper.com/belfast/ViewNews.aspx?id=283" rel="nofollow"&gt;Call for Speakers&lt;/a&gt; has been put out for &lt;a title="Developer! Developer! Developer! Belfast" href="http://developerdeveloperdeveloper.com/belfast/" rel="bookmark"&gt;DDD Belfast&lt;/a&gt; on April 4&lt;sup&gt;th&lt;/sup&gt;.&lt;/p&gt;  &lt;p&gt;I have submitted a double session on &lt;a title="REST Bookmarks" href="http://delicious.com/alan.dean/rest" rel="bookmark"&gt;REST&lt;/a&gt;. The first session is a reprise of the session I gave at &lt;a title="DDD7 Agenda" href="http://www.developerday.co.uk/ddd/agendaddd7lineup.asp" rel="nofollow"&gt;DDD7&lt;/a&gt; and the second session is a new presentation about Azure:&lt;/p&gt; &lt;dl&gt;&lt;dt&gt;&lt;strong&gt;Part 1 &amp;quot;REST: Separating Facts from Fallacies&amp;quot; (1 hour)&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;&lt;em&gt;Still not sure what REST is or why it might be important to you? REST (Representational State Transfer) is still a deeply misunderstood architectural style. This presentation is designed to dispel some of the myths surrounding REST.&lt;/em&gt;&lt;/dd&gt;&lt;dt&gt;&lt;strong&gt;Part 2 &amp;quot;Delivering RESTful systems with Azure&amp;quot; (1 hour)&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;&lt;em&gt;The new Windows Azure platform allows .NET developers to deliver a variety of cloud-based systems. In particular, Microsoft provides support for REST (Representation State Transfer) style architectures. This session will provide a tour around the key enabling features of the platform allowing highly scalable systems by leveraging the benefits of REST - identifying patterns for success and warning of anti-patterns.&lt;/em&gt;&lt;/dd&gt;&lt;/dl&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-6476373974299009554?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/6476373974299009554/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=6476373974299009554" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/6476373974299009554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/6476373974299009554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/xmfWmyf-6rE/ddd-belfast.html" title="DDD Belfast" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/01/ddd-belfast.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcGQXwzeCp7ImA9WxVSFUQ.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-7364863672470774084</id><published>2009-01-10T06:26:00.001-08:00</published><updated>2009-01-10T06:33:40.280-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-10T06:33:40.280-08:00</app:edited><title>The Android Phone</title><content type="html">&lt;p&gt;&lt;a title="Android G1" href="http://www.flickr.com/photos/alan-dean/3184756820/" rel="bookmark"&gt;&lt;img style="text-align: center;display: inline; margin-left: 0px; margin-right: 0px; " src="http://farm4.static.flickr.com/3076/3184756820_d50e635f51_o.jpg" align="left" /&gt;&lt;/a&gt; &lt;a title="Nokia N95" href="http://www.flickr.com/photos/alan-dean/3184752692/" rel="bookmark"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://farm4.static.flickr.com/3373/3184752692_c38c47ac28_t.jpg" align="right" /&gt;&lt;/a&gt; My Christmas present to myself this year was a &lt;a title="Android Dev Phone" href="http://android.brightstarcorp.com/" rel="nofollow"&gt;Android developer phone&lt;/a&gt; and &lt;a title="Android developer phone box contents" href="http://www.flickr.com/photos/nix0n/3103966892/" rel="bookmark"&gt;it arrived earlier this week&lt;/a&gt;. Previously, I was using the &lt;a title="Nokia Nseries N95" href="http://web.nseries.com/products/n95/" rel="nofollow"&gt;Nokia N95&lt;/a&gt; which I liked a great deal but it was time to upgrade. What phone to choose though? I could have followed the well-trodden route and buy an &lt;a title="iPhone" href="http://www.apple.com/iphone/" rel="nofollow"&gt;iPhone&lt;/a&gt;. Certainly, the iPhone seems very nice. At the PDC I watched others using the iPhone around me and I was impressed by the ease-of-use, so it was a strong option. However, it would mean changing my phone provider to &lt;a title="O2" href="http://www.o2.co.uk/" rel="nofollow"&gt;O&lt;small&gt;2&lt;/small&gt;&lt;/a&gt;, who have &lt;a title="iPhone - O2" href="http://www.o2.co.uk/iphone" rel="nofollow"&gt;exclusivity&lt;/a&gt; for the UK and I left O&lt;small&gt;2&lt;/small&gt; a while back because of the poor reception quality I was getting. What is more, I couldn’t help but feel that was rather me-too and I am not really that much of a fan of &lt;a title="Apple" href="http://www.apple.com/" rel="nofollow"&gt;Apple&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So the Android G1 seemed like it was worth a try-out. The developer phone is totally unlocked, although a little pricey at $520 including tax and shipping, so I don’t need to leave &lt;a title="Orange" href="http://www.orange.co.uk/" rel="nofollow"&gt;Orange&lt;/a&gt; to use the new phone. You also need to be registered as a developer on the &lt;a title="Android Market" href="http://www.android.com/market/" rel="nofollow"&gt;Android Market&lt;/a&gt; to be able to buy the phone, which costs $25 (presumably to discourage timewasters).&lt;/p&gt;  &lt;p&gt;&lt;a title="US to UK Plug Adapter" href="http://www.amazon.co.uk/gp/product/B0006OFKNC?ie=UTF8&amp;amp;tag=alandean-21&amp;amp;link_code=as3&amp;amp;camp=2506&amp;amp;creative=9298&amp;amp;creativeASIN=B0006OFKNC" rel="bookmark"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://ecx.images-amazon.com/images/I/1123TSR7ECL._SL500_AA150_.jpg" /&gt;&lt;/a&gt;You will need to buy a &lt;a title="US to UK Plug Adapter" href="http://www.amazon.co.uk/gp/product/B0006OFKNC?ie=UTF8&amp;amp;tag=alandean-21&amp;amp;link_code=as3&amp;amp;camp=2506&amp;amp;creative=9298&amp;amp;creativeASIN=B0006OFKNC" rel="nofollow"&gt;US to UK Plug Adapter&lt;/a&gt; to charge the phone from the mains. You can also charge it from a PC or laptop via the USB cable which is important because the phone burns through battery life fast when in use. I estimate that it has a standby battery life of about 24 hours but only about 2 to 3 hours of active use. &lt;/p&gt;  &lt;p&gt;The phone does not come with a manual, or at least mine didn’t.&lt;img src="http://farm4.static.flickr.com/3438/3184835612_ab47ffd812_t.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="Orange" href="http://orange.co.uk/" rel="nofollow"&gt;&lt;img src="http://shop.orange.co.uk/images/logo.gif" /&gt;&lt;/a&gt; When you first power-up the phone, you need to configure the &lt;a title="Access Point Name" href="http://wikipedia.org/wiki/Access_Point_Name" rel="nofollow"&gt;APN&lt;/a&gt; for your operator. There is a note in the box which tells you to visit &lt;a title="Quick IM" href="http://www.quickim.com/support/gprs-settings.html" rel="nofollow"&gt;Quick IM&lt;/a&gt; for instructions on how to do this. I found the whole thing very confusing. Turns out, to set it up for Orange, all you need to do is type "&lt;code&gt;orangeinternet&lt;/code&gt;" into the APN textbox. I wasted a lot of time figuring out that simple thing out. Also, don’t be fooled by the GPRS in the page title – there is just one setting for GPRS, 3G and 3G+ (the phone negotiates to the highest available connectivity type).&lt;/p&gt;  &lt;p style="text-align: center;"&gt;&lt;a title="Google Mail" href="http://mail.google.com/" rel="nofollow"&gt;&lt;img src="https://mail.google.com/mail/help/images/googlemail.gif" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After setting up the connectivity, you are next required to either sign in to an existing &lt;a title="Manage Google Account" href="https://www.google.com/accounts" rel="nofollow"&gt;Google Account&lt;/a&gt; or set up a new one. So far as I know, there is no way to run the phone without a Google Account.&lt;/p&gt;  &lt;p style="text-align: center;"&gt;&lt;a title="Google Apps" href="http://google.com/a" rel="nofollow"&gt;&lt;img src="http://www.google.com/apps/intl/en/images/150x55.gif" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Even better, you can use your &lt;a title="Google Apps" href="http://google.com/a" rel="nofollow"&gt;Google Apps for Domain&lt;/a&gt; account. This is perfect for me as I have set up all my email accounts and calendars to forward or synchronize onto my Google App Domain, so that I have a single place to go.&lt;/p&gt;  &lt;p style="text-align: center;"&gt;&lt;img src="http://farm4.static.flickr.com/3417/3184032805_f2ea607635_o.png" /&gt; &lt;/p&gt;  &lt;p&gt;I have been very impressed with the seamlessness of the integration between the Google account and the Android. All of your Gmail contacts are synchronized across. The phone is very tolerant of the formatting you use for phone numbers and if your contact has an address, the phone contacts allows you to go straight to the integrated Google Maps application to view the address location.&lt;/p&gt;  &lt;p style="text-align: center;"&gt;&lt;img src="http://farm4.static.flickr.com/3155/2987228884_5a431e85c6_o.png" /&gt; &lt;img src="http://farm4.static.flickr.com/3171/2987228916_dffa2323cb.jpg?v=0" /&gt; &lt;/p&gt;  &lt;p&gt;The email interface is clean and easy to use. Touch really works well for scrolling through lists and items. Unlike the iPhone, the Android G1 screen flips out to expose a keyboard:&lt;/p&gt;  &lt;p style="text-align: center;"&gt;&lt;img src="http://farm4.static.flickr.com/3016/3005590014_98281dd181.jpg?v=0" /&gt; &lt;/p&gt;  &lt;p&gt;Not all of the Google stable of applications have integrated applications. Google Docs and Google Reader have to be accessed via the browser, but have nice clean interfaces which I assume are similar to the iPhone versions.&lt;/p&gt;  &lt;p style="text-align: left;"&gt;Thought has clearly been given to the nature of intermittent connectivity when mobile. The integrated apps such as Contacts and Mail synchronize so you can work offline and the browser versions are tolerant of connection dropouts. For example Google Reader will gracefully retry without intervention until a new connection is established. This is very unlike Reader on the N95 browser which spits out errors when the connection drops out.&lt;/p&gt;  &lt;p style="text-align: center;"&gt;&lt;img src="http://3.bp.blogspot.com/_9l0GmPwgCzk/SSyX3pxKmZI/AAAAAAAAAA0/_C8XsM5a50c/s400/search02.png" /&gt; &lt;/p&gt;  &lt;p&gt;The phone desktop has three panes which you can flick between. The right-hand one has a search entry form which has an intelligent dropdown, which often saves you typing everything completely and also fixes up your spelling when you make a mistake on the keyboard (a feature I like a lot).&lt;/p&gt;  &lt;p&gt;All-in-all, I think that this is a wonderful phone that I am very glad to have bought. Better battery life would be nice. You can replace the battery, which allows you to carry a spare, but the procedure for doing that is rather fiddly (unlike the Nokia 95, which makes swapping a battery very easy indeed). The level of usability is on an entirely higher level than any other phone I have used and is good enough for me to productively use the time on the train into work to clear down my email backlog from overnight, catch up on Reader and so on. It will see heavy use from me!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-7364863672470774084?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/7364863672470774084/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=7364863672470774084" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7364863672470774084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7364863672470774084?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/zRlGMBeeZwc/android-phone.html" title="The Android Phone" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_9l0GmPwgCzk/SSyX3pxKmZI/AAAAAAAAAA0/_C8XsM5a50c/s72-c/search02.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2009/01/android-phone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHQ3Y8fyp7ImA9WxVTEkw.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-1041113183634344285</id><published>2008-12-25T05:00:00.001-08:00</published><updated>2008-12-25T05:00:32.877-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-25T05:00:32.877-08:00</app:edited><title>Happy Christmas</title><content type="html">&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3247/3135439856_68e441dbb7_o.jpg" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-1041113183634344285?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/1041113183634344285/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=1041113183634344285" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1041113183634344285?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/1041113183634344285?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/avyPvFWhIOE/happy-christmas.html" title="Happy Christmas" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/12/happy-christmas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCQnoyeip7ImA9WxRaFE8.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-7081193112614087631</id><published>2008-12-16T01:36:00.001-08:00</published><updated>2008-12-16T01:36:03.492-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-16T01:36:03.492-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openspacecode" /><category scheme="http://www.blogger.com/atom/ns#" term="altnetuk" /><title>It’s not a Hack Day</title><content type="html">&lt;p&gt;Last week I went to the &lt;a title="Discuss Mesh, Live and the Cloud" href="http://crowdsource.pbwiki.com/Discuss-Mesh,-Live-and-the-Cloud" rel="nofollow"&gt;Cloud Gathering&lt;/a&gt; in London. Whilst there, I had a number of discussions about the forthcoming Open Spaces Coding Day and it became clear that I need to clarify the objectives:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It &lt;strong&gt;isn’t&lt;/strong&gt; a ‘Hack Day’ where there is a defined target such as “build a cool new app”.&lt;/li&gt;    &lt;li&gt;It &lt;strong&gt;isn’t&lt;/strong&gt; a ‘Training Day’ where there is a curriculum or class-based training.&lt;/li&gt;    &lt;li&gt;It &lt;strong&gt;&lt;em&gt;is&lt;/em&gt;&lt;/strong&gt; a ‘Hands-on Learning Day’.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What do I mean by ‘Learning Day’? Well, for a start I want to make it clear that the attendees are not expected to create applications. The code that is produced must be checked in to the repository, but that is so we can all come by later a get a copy of it to learn ourselves or to remind ourselves what we did.&lt;/p&gt;  &lt;p&gt;Let’s say that there is a session on &lt;a title="NHibernate Forge" href="http://nhforge.org/" rel="nofollow"&gt;NHibernate&lt;/a&gt; (which wouldn’t surprise me in the slightest). In six months time, one of the attendees is asked to do some work that involves NHibernate and thinks “this is what we were doing on the Coding Day”. The attendee can go and refresh their memory from code that they learnt with. I believe that this has value to the community.&lt;/p&gt;  &lt;p&gt;Another example is that there may be a group of people who all know nothing about a subject, perhaps something new like &lt;a title="Azure Services Platform" href="http://www.microsoft.com/azure/" rel="nofollow"&gt;Azure&lt;/a&gt; or something old like &lt;a title="Mono Project" href="http://www.mono-project.com/" rel="nofollow"&gt;Mono&lt;/a&gt;. They can work to together to learn how to get on the first step of the ladder, which is often the hardest part of learning.&lt;/p&gt;  &lt;p&gt;In summary, this is all about &lt;a title="Self actualization - Wikipedia" href="http://wikipedia.org/wiki/Self_actualization" rel="nofollow"&gt;self-actualisation&lt;/a&gt; within a supporting group of like-minded individuals.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-7081193112614087631?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/7081193112614087631/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=7081193112614087631" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7081193112614087631?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7081193112614087631?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/oTJfZKZun0s/its-not-hack-day.html" title="It’s not a Hack Day" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/12/its-not-hack-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYNQXY9eSp7ImA9WxRbGUQ.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-7103451616651528483</id><published>2008-11-30T09:18:00.001-08:00</published><updated>2008-12-11T02:59:50.861-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T02:59:50.861-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openspacecode" /><category scheme="http://www.blogger.com/atom/ns#" term="altnetuk" /><title>"Open Space Coding Day"</title><content type="html">&lt;p&gt;&lt;img style="margin: 0px 5px 0px 0px" src="http://farm4.static.flickr.com/3195/3070639129_c674cf4c62_m.jpg" align="left"&gt; Time for a little reflection. Over the last year, I think that a great deal has been achieved in the &lt;a title="The ALT.NET Community" href="http://altdotnet.org/" rel="nofollow"&gt;Alt.Net&lt;/a&gt; community in the UK. We have had two &lt;a title="Alt.Net.UK Conference" href="http://www.altnetuk.com/" rel="nofollow"&gt;conferences&lt;/a&gt; and &lt;a title="SerialSeb" href="http://serialseb.blogspot.com/" rel="bookmark"&gt;Sebastian Lambla&lt;/a&gt; has now ran four &lt;a title="Alt.net London Beers #4 &amp;ndash; 25th of November" href="http://serialseb.blogspot.com/2008/10/altnet-london-beers-4-25th-of-november.html" rel="nofollow"&gt;Alt.Net Beers&lt;/a&gt;. These have stimulated healthy discussion in the community which I am very happy to see and we should continue to nurture.&lt;/p&gt; &lt;p&gt;In the spirit of continual improvement, I have been thinking about how we can build on these successes and one question in particular comes to mind: &lt;em&gt;"how do we move from talking to doing?"&lt;/em&gt;. I would also like to foster a feedback loop into the conferences so that the conversation has forward motion.&lt;/p&gt; &lt;p&gt;&lt;a title="Open Space Technology, Harrison Owen" href="http://www.amazon.co.uk/gp/product/1576754766?ie=UTF8&amp;amp;tag=alandean-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=1576754766" rel="nofollow"&gt;&lt;img style="margin: 0px 0px 0px 5px" src="http://farm4.static.flickr.com/3027/3070639771_f1cb64e274_t.jpg" align="right"&gt;&lt;/a&gt; My draft proposal to the community is to host a series of what I am currently calling "Open Space Coding Days". I would like these to be on a regular basis, rather like Alt.Net Beers. The focus should be on hands-on activity rather than general discussion but the &lt;a title="Open Space Technology - Wikipedia" href="http://wikipedia.org/wiki/Open_Space_Technology" rel="nofollow"&gt;Open Space philosophy&lt;/a&gt; still applies. Accordingly, the activities should be self-organizing. This is not about speakers or powerpoint. The only requirement we should have is to publish the code in an open repository and notes in a wiki.&lt;/p&gt; &lt;p&gt;Before I get tackled on the subject, for all I know this is a format that has been tried elsewhere. I suspect that the model might be very near to a &lt;a title="BarCamp - Wikipedia" href="http://wikipedia.org/wiki/BarCamp" rel="nofollow"&gt;BarCamp&lt;/a&gt; but as I haven't been to one, I don't know.&lt;/p&gt; &lt;p&gt;I am very interested in taking feedback. The following jump to mind but the list won't be exhaustive:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Would you be interested in attending such an event?  &lt;li&gt;Would you or your company be interested in sponsoring?  &lt;li&gt;I have in mind to do this on Saturdays - do people think this is the right day?  &lt;li&gt;What is a reasonable number of people for a hands-on event like this (I suspect it will be fewer than for a conference)?  &lt;li&gt;How often should the event be run? Monthly? Every other month? Some other period?  &lt;li&gt;Should it run separately to Alt.Net Beers or seek to work together (perhaps planning events to coincide)?  &lt;li&gt;Is it reasonable to require attendees to bring their own laptops and have development software already installed? If not, what are the alternatives?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I am in discussions with &lt;a title="Conchango" href="http://www.conchango.com/" rel="nofollow"&gt;Conchango&lt;/a&gt; to host the first of these as they were so supportive with our first Alt.Net UK Conference. &lt;strike&gt;Dates are still open as I write this.&lt;/strike&gt;&lt;/p&gt; &lt;h4&gt;Update (9th December)&lt;/h4&gt; &lt;p&gt;&lt;a title="Conchango" href="http://www.conchango.com/" rel="nofollow"&gt;&lt;img style="margin: 0px 5px 5px 0px" src="http://farm4.static.flickr.com/3051/3095010427_827c292f60_o.jpg" align="left"&gt;&lt;/a&gt; Conchango have kindly agreed to be venue hosts for Open Space Coding Day 1. This will be on the &lt;a title="UK .NET Events" href="http://ukdotnet.ning.com/events/open-spaces-coding-day" rel="nofollow"&gt;31st January&lt;/a&gt; at their &lt;a title="Contact Conchango" href="http://www.conchango.com/contact-us/" rel="nofollow"&gt;London offices&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I was expecting to have to put up a reservation form, but in a flurry of tweets during today almost all of the places have been taken! Taking a leaf from &lt;a title="Robert Scoble" href="http://twitter.com/scobleizer" rel="nofollow"&gt;Scoble&lt;/a&gt;, I thought I would see how effective &lt;a title="twitter" href="http://twitter.com" rel="nofollow"&gt;twitter&lt;/a&gt; would be as an organising tool and I am very impressed! &lt;strike&gt;At the time of writing, there are a couple of places left&lt;/strike&gt;. All the places have now been taken. If you wish to go on the waiting list please contact me either on &lt;a title="Alan Dean" href="http://twitter.com/adean" rel="bookmark"&gt;twitter.com/adean&lt;/a&gt; or email &lt;a href="mailto:alan.dean@gmail.com"&gt;alan.dean@gmail.com&lt;/a&gt;. If you can't make it on the 31st, don't worry - I will be running the event every other month, so you can always catch it next time around. People on the waiting list will be given first refusal on attending subsequent events so that there is a variation in attendees between events and that people don't feel left out. Therefore it is worth letting me know that you would like to come.&lt;/p&gt; &lt;p&gt;When I was at the PDC, I found it very annoying that there wasn't a consistent hashtag in use. Therefore, I would like to propose that we standardise on a single hashtag for these events. I have started using &lt;a title="#openspacecode" href="http://search.twitter.com/search?q=openspacecode" rel="bookmark"&gt;#openspacecode&lt;/a&gt; - the only other option that came to mind was #oscd, which (whilst shorter) just seemed too arcane to me.&lt;/p&gt; &lt;p&gt;Following the principle of 'golden hours', there will be two coding sessions of two hours in the day and a generous period of time for socialising over lunch:&lt;/p&gt; &lt;p&gt;&lt;a title="Open Space Coding Day schedule" href="http://www.flickr.com/photos/alan-dean/3095069207/sizes/o/" rel="bookmark"&gt;&lt;img src="http://farm4.static.flickr.com/3164/3095069207_dd4153b1ca.jpg"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The planning process will be as follows:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Attendees put up the sessions they are interested in having  &lt;li&gt;Attendees put their names against sessions they are willing to host. No host means the session is dropped. Be aware: the host is not a presenter, the host is not expected to even know the subject. The host is simply someone to keep the session flowing effectively for the participants.  &lt;li&gt;Attendees vote on which proposed sessions get the go-ahead. &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The only exception to this process will be that I am going to try to have one 'keynote' session per event. On the 31st January, &lt;a title="now with extra subtext goodness" href="http://idunno.org/" rel="bookmark"&gt;Barry Dorrans&lt;/a&gt; (Security MVP) has kindly agreed to host a session on "&lt;strong&gt;Hands-on secure development&lt;/strong&gt;". It's certainly one session that I want to be part of!&lt;/p&gt; &lt;p&gt;Please remember to bring your laptop. If you don't have one, then you will have to share. There will be WiFi access available. I will be putting together trial Virtual Machines for anyone who isn't an MSDN subscriber or hasn't got Visual Studio installed. &lt;em&gt;Important&lt;/em&gt;: if you want to propose a session using a different development environment, for example using Mono on Ubuntu, please contact me so that we can arrange a VM. These session are about doing, not presenting, and so any proposed sessions that attendees cannot participate in will be dropped before voting.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-7103451616651528483?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/7103451616651528483/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=7103451616651528483" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7103451616651528483?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7103451616651528483?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/EnGRjLdjM4g/space-coding-day.html" title="&amp;quot;Open Space Coding Day&amp;quot;" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/space-coding-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YGQng_eCp7ImA9WxRUFUU.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-4892387874914046014</id><published>2008-11-24T20:58:00.001-08:00</published><updated>2008-11-24T20:58:43.640-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-24T20:58:43.640-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ethics" /><title>Partnership or Company?</title><content type="html">&lt;p&gt;At &lt;a title="DDD7" href="http://alandean.blogspot.com/2008/11/ddd7.html" rel="bookmark"&gt;DDD7&lt;/a&gt;, I had an interesting discussion about the question of whether a &lt;a title="Partnership" href="http://wikipedia.org/wiki/Partnership" rel="nofollow"&gt;partnership&lt;/a&gt; or a &lt;a title="Company" href="http://wikipedia.org/wiki/Company" rel="nofollow"&gt;company&lt;/a&gt; is the better model for a consultancy.&lt;/p&gt; &lt;p&gt;&lt;img style="margin: 0px 5px 0px 0px" src="http://farm4.static.flickr.com/3155/3057368127_f0f7b7d9e8_o.jpg" align="left"&gt; I think that the accepted practice is to incorporate as a limited company. Certainly I can see advantages in doing so: in tax treatment and the limited liability that it offers.&lt;/p&gt; &lt;p&gt;However, I wonder if partnership is a more appropriate model; even potentially a more ethical model.&lt;/p&gt; &lt;p&gt;The joint and several liability of partners requires that they treat business with care. It is interesting to note that both lawyers and accountants, both classes of fee-earning professionals, either often use partnership or are even required by law to do so. I don't know what the practice is for other types of fee-earning professionals, but I would be interested to find out.&lt;/p&gt; &lt;p&gt;Looking at the current devastation in our financial markets, I ask myself if the mighty investment banks would have placed such huge and arguably unwarranted risks if they had remained the partnerships that they were, rather than change to corporations. Similarly, would the UK Building Societies which relinquished their mutual status during the 1990s have fared better if they had not done so?&lt;/p&gt; &lt;p&gt;My thoughts on this subject are not fully formed but I do have a nagging suspicion that we ought to consider which is the appropriate model.&lt;/p&gt; &lt;p&gt;I would be very interested to hear what people think - especially those who are customers of consultancies. Would you have more or less faith in a business where the partners did not have limited liability? Perhaps you prefer dealing with companies? Either way, what would be your rationale?&lt;/p&gt; &lt;p&gt;For quite some time I have had a feeling that we need to mature as a profession, that there will come a time when our customers will expect the same level of professional certification and regulation that they have with other service providers such as lawyers, accountants and engineers. Perhaps the kind of organisations we work for will be part of this maturation.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-4892387874914046014?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/4892387874914046014/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=4892387874914046014" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4892387874914046014?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4892387874914046014?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/YI7ZqNDFRvs/partnership-or-company.html" title="Partnership or Company?" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/partnership-or-company.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNQ308fip7ImA9WxRUFUU.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-4047948541477332417</id><published>2008-11-24T20:31:00.001-08:00</published><updated>2008-11-24T20:31:32.376-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-24T20:31:32.376-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DDD7" /><title>DDD7</title><content type="html">&lt;p&gt;&lt;a title="Developer! Developer! Developer! Day" href="http://www.developerday.co.uk/" rel="nofollow"&gt;&lt;img style="margin: 0px 5px 0px 0px" src="http://www.developerday.co.uk/ddd/images/DDDLogoGrey.gif" align="left"&gt;&lt;/a&gt; I thought that &lt;a title="Developer! Developer! Developer! Day" href="http://www.developerday.co.uk/" rel="nofollow"&gt;Developer Day 7&lt;/a&gt; was another resounding success. As usual, the organisers deserve kudos for arranging what has to be the premier UK Community event.&lt;/p&gt; &lt;p&gt;If you were an attendee, please take the time to fill in the &lt;a title="Feedback for latest DDD Day" href="http://www.developerday.co.uk/ddd/feedback.asp" rel="nofollow"&gt;feedback&lt;/a&gt; - the speakers all appreciate this a great deal.&lt;/p&gt; &lt;p&gt;&lt;a title="Separating REST Facts from Fallacies" href="http://www.slideshare.net/alan.dean/separating-rest-facts-from-fallacies-presentation" rel="bookmark"&gt;&lt;img style="margin: 0px 0px 0px 5px" src="http://farm4.static.flickr.com/3295/3012315218_3a81526751_m.jpg" align="right"&gt;&lt;/a&gt; I was in the first tranche of presentations in Memphis at 09:30 and all the seats were taken (typically a good sign). It was the first time I have given the "&lt;a title="Separating REST Facts from Fallacies" href="http://www.slideshare.net/alan.dean/separating-rest-facts-from-fallacies-presentation/" rel="bookmark"&gt;Separating REST Facts from Fallacies&lt;/a&gt;" talk to an audience and was pleased that I timed it right, completing it with a little under 5 minutes for questions. It is a bugbear of mine when speakers overrun their timeslot so I take this very seriously in my own presentations.&lt;/p&gt; &lt;p&gt;There were surprisingly few questions at the end but those that were asked were good. I had prepped for a number of questions that I had expected to be faced with, but wasn't. One of my friends who was in the audience reported overhearing a conversation where the comment was made that the presentation was 'religious'. If that meant that they could tell that I believe in REST where appropriate, then that is good. If that meant that they felt that the presentation was unbalanced, that is not so good and would be surprising as I made a particular effort in the talk to avoid setting up the typical dogma of "REST Good, WS-* Bad".&lt;/p&gt; &lt;p&gt;In any event, the &lt;a title="Channel 9" href="http://channel9.msdn.com/" rel="nofollow"&gt;Channel 9&lt;/a&gt; folk were there to video all the sessions this time so you will be able to judge for yourself. Historically, only a limited number of sessions were recorded. I don't yet know where the videos will be hosted but I will announce when I find out. It is going to be interesting, to say the least, to see myself giving a presentation as I haven't previously done so. I imagine that I will be squirming in my seat and will be my own worst critic.&lt;/p&gt; &lt;p&gt;&lt;a title="Alan Dean at DDD7 Geek Dinner" href="http://www.flickr.com/photos/plip/3056576851/" rel="nofollow"&gt;&lt;img style="margin: 0px 5px 0px 0px" src="http://farm4.static.flickr.com/3158/3056576851_929c34deec.jpg" align="left"&gt;&lt;/a&gt; The Geek Dinner in the evening was great fun. Thanks to Zi Makki for organising that. The conversation is always stimulating and I had a couple of very interesting discussions about REST and other subjects. I really do enjoy the networking aspects of these conferences - a chance to meet and talk with others who are as passionate about technology and self-improvement as I am.&lt;/p&gt; &lt;p&gt;&lt;a title="Plipster's photostream" href="http://www.flickr.com/photos/plip/" rel="nofollow"&gt;Phil Winstanley&lt;/a&gt; and &lt;a title="Craig Murphy's photostream" href="http://www.flickr.com/photos/craigmurphy/" rel="nofollow"&gt;Craig Murphy&lt;/a&gt; have both pushed up their photos to Flickr (I didn't take any).&lt;a title="Alan Dean in DDD7 Speakers Lounge" href="http://www.flickr.com/photos/plip/3057399414/" rel="nofollow"&gt;&lt;img src="http://farm4.static.flickr.com/3175/3057399414_79d1d79497_m.jpg"&gt;&lt;/a&gt; &lt;a title="Alan Dean in DDD7 Speakers Lounge" href="http://www.flickr.com/photos/craigmurphy/3054812022/" rel="nofollow"&gt;&lt;img src="http://farm4.static.flickr.com/3269/3054812022_baf16bda5e_m.jpg"&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/5703778183485988456-4047948541477332417?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/4047948541477332417/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=4047948541477332417" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4047948541477332417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/4047948541477332417?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/RMotDG_DRaM/ddd7.html" title="DDD7" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/ddd7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAHSHs_fyp7ImA9WxRUEkU.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-9107425497451623714</id><published>2008-11-21T09:15:00.001-08:00</published><updated>2008-11-21T09:15:39.547-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-21T09:15:39.547-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DDD7" /><title>developerday.co.uk error</title><content type="html">&lt;p&gt;There appears to be some kind of problem with the DDD website right now.&lt;/p&gt; &lt;p&gt;Don't fret! You can still reach it at &lt;a title="http://216.247.126.58/DDD/" href="http://216.247.126.58/DDD/"&gt;http://216.247.126.58/DDD/&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/5703778183485988456-9107425497451623714?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/9107425497451623714/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=9107425497451623714" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/9107425497451623714?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/9107425497451623714?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/86VjTi776ys/developerdaycouk-error.html" title="developerday.co.uk error" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/developerdaycouk-error.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEHQnc7eSp7ImA9WxRUEk4.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-2053602088253694122</id><published>2008-11-20T17:22:00.001-08:00</published><updated>2008-11-20T17:23:53.901-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-20T17:23:53.901-08:00</app:edited><title>"Windows Live Sync replacing FolderShare"</title><content type="html">&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3015/3047195518_787e620608_o.png" align="left"&gt; I have been a long-term user of &lt;a title="Windows Live FolderShare" href="http://foldershare.com/" rel="nofollow"&gt;FolderShare&lt;/a&gt; from before &lt;a title="Microsoft buys FolderShare" href="http://news.cnet.com/Microsoft-buys-FolderShare/2100-1014_3-5930785.html" rel="nofollow"&gt;Microsoft bought it in 2005&lt;/a&gt;. Indeed, it is central to &lt;a title="Backup" href="http://thoughtpad.net/alan-dean/backup.html" rel="bookmark"&gt;my personal backup strategy&lt;/a&gt;. FolderShare seemed to languish for quite some time but &lt;a title="OneCare, RIP" href="http://alandean.blogspot.com/2008/11/onecare-rip.html" rel="bookmark"&gt;unlike OneCare&lt;/a&gt;, it isn't going to die but is going to be &lt;a title="Windows Live Sync replacing FolderShare: What you need to know" href="http://foldershareteam.spaces.live.com/blog/cns!9D186A323DE6761!1646.entry" rel="nofollow"&gt;re-born as Windows Live Sync&lt;/a&gt; instead. Watching the progress of &lt;a title="Live Mesh" href="http://www.mesh.com/" rel="nofollow"&gt;Live Mesh&lt;/a&gt;, I've been expecting something like this for a while and it makes sense to have a common platform for this kind of functionality from Microsoft.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-2053602088253694122?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/2053602088253694122/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=2053602088253694122" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/2053602088253694122?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/2053602088253694122?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/vBdNHA1Hvn0/live-sync-replacing-foldershare.html" title="&amp;quot;Windows Live Sync replacing FolderShare&amp;quot;" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/live-sync-replacing-foldershare.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EHQnY5eSp7ImA9WxRUEk8.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-7784277570333401254</id><published>2008-11-20T17:04:00.001-08:00</published><updated>2008-11-20T17:07:13.821-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-20T17:07:13.821-08:00</app:edited><title>OneCare, RIP</title><content type="html">&lt;p&gt;&lt;img height="256" src="http://upload.wikimedia.org/wikipedia/en/7/79/Windows_Live_OneCare_logo.png" width="256" align="right"&gt; I was very sad to hear of the &lt;a title="Microsoft discontinues Windows Live OneCare &amp;ndash; offers lightweight alternative for free" href="http://www.liveside.net/main/archive/2008/11/18/microsoft-discontinues-windows-live-onecare-offers-lightweight-alternative-for-free.aspx" rel="nofollow"&gt;impending demise of OneCare&lt;/a&gt;. I am quite a fan of it and have licensed it on all of my own machines and those of my family. It is unobtrusive, unlike so many of the alternatives and has the quality of 'it just works'. I can only assume that it hasn't made enough money. Microsoft are dressing the decision up as "&lt;a title="Improving Global Access to Core PC Protection" href="http://www.microsoft.com/presspass/features/2008/Nov08/11-18AmyBarzdukasQandA.mspx" rel="nofollow"&gt;Improving Global Access to Core PC Protection&lt;/a&gt;" but I can't see that offering "&lt;a title="The 'Morro' of the story" href="http://news.cnet.com/8301-10805_3-10102707-75.html" rel="nofollow"&gt;Morro&lt;/a&gt;" requires the cessation of &lt;a title="Windows Live OneCare" href="http://onecare.live.com/" rel="nofollow"&gt;OneCare&lt;/a&gt;. &lt;a title="Occam's Razor - Wikipedia" href="http://wikipedia.org/wiki/Occam's_razor" rel="nofollow"&gt;Occam's Razor&lt;/a&gt; therefore indicates a financial motive.&amp;nbsp; It isn't going to die immediately, but &lt;a title="Consumer Security Strategy Update" href="http://windowsonecare.spaces.live.com/Blog/cns!C29701F38A601141!10418.entry" rel="nofollow"&gt;subscriptions will be cease to be available from June 30th 2009&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;P.S. It seems that a 'morro' is "&lt;a title="Morro - Wikipedia" href="http://wikipedia.org/wiki/Morro" rel="nofollow"&gt;a rocky outcrop in the shallow waters of a harbour, often round in shape and sometimes very high&lt;/a&gt;". It is also the name of the &lt;a title="Morro Castle (fortress) - Wikipedia" href="http://wikipedia.org/wiki/Morro_Castle_(fortress)" rel="nofollow"&gt;harbour fortress of Havana, Cuba&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/5703778183485988456-7784277570333401254?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/7784277570333401254/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=7784277570333401254" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7784277570333401254?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/7784277570333401254?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/ZJ1RrQ0-QOA/onecare-rip.html" title="OneCare, RIP" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/onecare-rip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AEQnY6eyp7ImA9WxRVGEk.&quot;"><id>tag:blogger.com,1999:blog-5703778183485988456.post-2436385973620377637</id><published>2008-11-15T17:20:00.001-08:00</published><updated>2008-11-16T06:28:23.813-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-16T06:28:23.813-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><title>Federated HTTP Authentication</title><content type="html">&lt;p&gt;One of the questions that has not had much discussion recently in the &lt;a title="Deriving REST" href="http://roy.gbiv.com/pubs/dissertation/rest_arch_style.htm#sec_5_1" rel="nofollow"&gt;REST&lt;/a&gt; &lt;a title="rest-discuss" href="http://tech.groups.yahoo.com/group/rest-discuss/" rel="nofollow"&gt;community&lt;/a&gt; is &lt;a title="Alan Dean's authentication Bookmarks" href="http://delicious.com/alan.dean/authentication" rel="bookmark"&gt;authentication&lt;/a&gt; and &lt;a title="Alan Dean's authorization Bookmarks" href="http://delicious.com/alan.dean/authorization" rel="bookmark"&gt;authorization&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a title="HTTP Cookie" href="http://wikipedia.org/wiki/HTTP_cookie" rel="nofollow"&gt;Cookies&lt;/a&gt; should not be used by a system which is to be considered RESTful. &lt;a title="Roy Fielding on Cookies" href="http://delicious.com/alan.dean/Roy.Fielding+cookie" rel="bookmark"&gt;Roy has explained why a number of times&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I have looked at both &lt;a title="OAuth" href="http://oauth.net/" rel="nofollow"&gt;OAuth&lt;/a&gt; and &lt;a title="OpenID" href="http://openid.net/" rel="nofolow"&gt;OpenID&lt;/a&gt;, but they do not seem to have a good story for automated agents as they focus on having human interaction in a browser session.&lt;/p&gt; &lt;p&gt;What would be ideal is a standardized authentication mechanism that supports federation. The obvious candidate is &lt;a title="HTTP Authentication: Basic and Digest Access Authentication" href="http://www.ietf.org/rfc/rfc2617.txt" rel="nofollow"&gt;HTTP Digest Authentication&lt;/a&gt; (the specification isn't the easiest read, I have to admit, so you might find the &lt;a title="Digest access authentication" href="http://en.wikipedia.org/wiki/Digest_access_authentication" rel="nofollow"&gt;wikipedia entry&lt;/a&gt; more understandable). Granted, it doesn't have a pretty logo. But it is supported by every user agent that I know of that is HTTP-aware. What isn't clear, however, is if it can be &lt;a title="Federated Identity" href="http://wikipedia.org/wiki/Federated_identity" rel="nofollow"&gt;federated&lt;/a&gt; to permit user agents to employ a separate &lt;a title="What is an Identity Provider?" href="http://asc.gsa.gov/portal/template/faq08.vm" rel="nofollow"&gt;Identity Provider&lt;/a&gt;, reducing the need for multiple online identities.&lt;/p&gt; &lt;p&gt;This is an itch that I have been scratching in my mind for a while and I brought it up in conversation with &lt;a title="{Open Source} Heroes Happen Here" href="http://www.microsoft.com/opensource/heroes/steve.mspx" rel="nofollow"&gt;Steve Bjorg&lt;/a&gt; yesterday. This gives me a reason/excuse to post where my thoughts are on the subject right now. &lt;em&gt;Please note that these thoughts may well change and I do not consider myself a security expert.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The following diagram outlines the sequence diagram that I have in mind. &lt;strong&gt;Important&lt;/strong&gt;: There is a precondition that the Server already has knowledge of the location of the Identity Provider for the user. This would probably be achieved manually in the same way that OpenID does, including an 'allow access' screen.&lt;/p&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3037/3032600561_78e45cc279_o.png"&gt; &lt;/p&gt; &lt;p&gt;This is what the HTTP messages might look like:&lt;/p&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3178/3033444802_52269a3690_o.png"&gt;&lt;/p&gt; &lt;p&gt;The Client makes an ordinary GET request to a resource that happens to be protected.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;code&gt;GET /dir/index.html HTTP/1.1&lt;br&gt;Host: example.com &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3174/3033444828_3954649f2d_o.png"&gt; &lt;/p&gt; &lt;p&gt;The Server crafts a fresh &lt;a title="WWW-Authenticate" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.47" rel="nofollow"&gt;WWW-Authenticate&lt;/a&gt; header and sends it to the Client with a &lt;a title="401 Unauthorized" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2" rel="nofollow"&gt;401 Unauthorized&lt;/a&gt; status code.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;code&gt;HTTP/1.1 401 Unauthorised&lt;br&gt;Date: Sun, 10 Apr 2005 20:26:47 GMT&lt;br&gt;WWW-Authenticate: Digest realm="realm@example.com",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qop="auth,auth-int",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opaque="5ccc069c403ebaf9f0171e9517f40e41"&lt;br&gt;Content-Type: text/html&lt;br&gt;Content-Length: 311&lt;br&gt;&lt;br&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br&gt;"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"&amp;gt;&lt;br&gt;&amp;lt;HTML&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;HEAD&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TITLE&amp;gt;Error&amp;lt;/TITLE&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/HEAD&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;BODY&amp;gt;&amp;lt;H1&amp;gt;401 Unauthorised.&amp;lt;/H1&amp;gt;&amp;lt;/BODY&amp;gt;&lt;br&gt;&amp;lt;/HTML&amp;gt; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3216/3033444846_b7543cf156_o.png"&gt;&lt;/p&gt; &lt;p&gt;The Client crafts an &lt;a title="Authorization" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.8" rel="nofollow"&gt;Authorization&lt;/a&gt; header by hashing the user credentials with the parameters of the WWW-Authenticate header in the normal fashion and resends the original request.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;code&gt;GET /dir/index.html HTTP/1.1&lt;br&gt;Host: example.com&lt;br&gt;Authorization: Digest username="Mufasa",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; realm="realm@example.com",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uri="/dir/index.html",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qop=auth,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nc=00000001,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnonce="0a4f113b",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response="6629fae49393a05397450978507c4ef1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opaque="5ccc069c403ebaf9f0171e9517f40e41" &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3070/3032600695_e168830252_o.png"&gt; &lt;/p&gt; &lt;p&gt;Here is the cunning part. The Authorization header contains enough information that a hash comparison can be carried out by anyone who has the correct credentials at hand. It doesn't have to be the Server. Therefore, the Server passes the Authorization header to a previously stored Identity Provider URI for validation (in this case, on &lt;a href="http://example.org"&gt;http://example.org&lt;/a&gt;).&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;code&gt;GET /user/Mufasa?domain=example.com HTTP/1.1&lt;br&gt;Host: example.org&lt;br&gt;Authorization: Digest username="Mufasa",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; realm="realm@example.com",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uri="/dir/index.html",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qop=auth,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nc=00000001,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnonce="0a4f113b",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response="6629fae49393a05397450978507c4ef1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opaque="5ccc069c403ebaf9f0171e9517f40e41" &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3052/3033444918_10c2f6ba00_o.png"&gt; &lt;/p&gt; &lt;p&gt;The Identity Provider retrieves the password of the user and performs the hash comparison. If validation fails, a 401 Unauthorized is returned to the Server. If it succeeds, a &lt;a title="200 OK" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1" rel="nofollow"&gt;200 OK&lt;/a&gt; is returned.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;code&gt;HTTP/1.1 200 OK&lt;br&gt;Date: Sun, 10 Apr 2005 20:27:03 GMT&lt;br&gt;Content-Length: 0 &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3037/3032600671_067cf767f1_o.png"&gt; &lt;/p&gt; &lt;p&gt;The user is now authenticated. The Server can check permissions and respond with the representation requested, if permitted. A &lt;a title="403 Forbidden" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4" rel="nofollow"&gt;403 Forbidden&lt;/a&gt; would be sent if the authenticated user is not permitted.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;code&gt;HTTP/1.1 200 OK&lt;br&gt;Date: Sun, 10 Apr 2005 20:27:03 GMT&lt;br&gt;Content-Type: text/html&lt;br&gt;Content-Length: 7984&lt;br&gt;&lt;br&gt;... &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;There are some optimizations that could be employed. The Identity Provider could issue validation for a given period by setting the &lt;a title="Expires" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21" rel="nofollow"&gt;Expires&lt;/a&gt; header on the validation response, indicating that the Server can cache the authentication for a period. Similarly, the other conditional &lt;a title="Header field definitions" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" rel="nofollow"&gt;HTTP headers&lt;/a&gt; could be employed for more complex caching.&lt;/p&gt; &lt;p&gt;The communication between Client and Server and between Server and Identity Provider does not need to be encrypted because the credentials are always hashed on the wire, mitigating a &lt;a title="Man-in-the-middle attack" href="http://wikipedia.org/wiki/Man_in_the_middle" rel="nofollow"&gt;man-in-the-middle attack&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The Client does not need to know anything about the Identity Provider. So far as the Client is concerned, this is a perfectly ordinary HTTP Digest Authentication mechanism which gives two benefits:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;There is no need for a complex set of Client HTTP requests to achieve authentication.  &lt;li&gt;The REST &lt;a title="Layered System" href="http://roy.gbiv.com/pubs/dissertation/rest_arch_style.htm#sec_5_1_6" rel="nofollow"&gt;Layered System&lt;/a&gt; constraint is not violated.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I am interested to hear feedback from my audience if this is an authentication model that would be useful. As I said at the top, I am not a security expert so there may be flaws in my thinking.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5703778183485988456-2436385973620377637?l=alandean.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alandean.blogspot.com/feeds/2436385973620377637/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5703778183485988456&amp;postID=2436385973620377637" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/2436385973620377637?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5703778183485988456/posts/default/2436385973620377637?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alan-dean-at-charteris/~3/Kjwh3E8wCeQ/federated-http-authentication.html" title="Federated HTTP Authentication" /><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>alan.dean@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="12220788490984153542" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">16</thr:total><feedburner:origLink>http://alandean.blogspot.com/2008/11/federated-http-authentication.html</feedburner:origLink></entry></feed>
