<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Liam Westley</title>
        <link>http://geekswithblogs.net/twickers/Default.aspx</link>
        <description>His incoherent ramblings</description>
        <language>en-GB</language>
        <copyright>Liam Westley</copyright>
        <managingEditor>liam.westley@tigernews.co.uk</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Liam Westley</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/twickers/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>DDDNorth2 Bradford, 13th October 2012 - Async Patterns presentation and source code</title>
            <category>Visual Studio Async</category>
            <category>Windows 8</category>
            <category>Software</category>
            <category>DDD</category>
            <category>Development</category>
            <link>http://geekswithblogs.net/twickers/archive/2012/10/14/dddnorth2-bradford-13th-october-2012---async-patterns-presentation-and.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2012/10/14/dddnorth2-bradford-13th-october-2012---async-patterns-presentation-and.aspx'&gt;http://geekswithblogs.net/twickers/archive/2012/10/14/dddnorth2-bradford-13th-october-2012---async-patterns-presentation-and.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Many thanks to &lt;a href="http://twitter.com/apwestgarth"&gt;Andy Westgarth&lt;/a&gt; and his team for organising a fantastic conference at the rather elegant Bradford University School of Management. Also, a big congratulations to all the delegates who gave up there free time to come and hear us speak and who were, in general, enthusiastic and asked some cracking questions to keep us speakers on our toes.&lt;/p&gt;  &lt;p&gt;For those who attended my Async my source code and presentation are now available on GitHub,&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="https://github.com/westleyl/DDDNorth2-AsyncPatterns" href="https://github.com/westleyl/DDDNorth2-AsyncPatterns"&gt;https://github.com/westleyl/DDDNorth2-AsyncPatterns&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you are new to Git then the easiest client to install is GitHub for Windows, a graphical UI for accessing GitHub. Personally, I also have TortoiseGit installed – the file explorer add-in that works in a familiar manner to TortoiseSVN.&lt;/p&gt;  &lt;p&gt;As I mentioned during the presentation I have not included the sample data, the music files, in the source code placed on GitHub but I have included instructions on how to download them from &lt;a href="http://silents.bandcamp.com"&gt;http://silents.bandcamp.com&lt;/a&gt; and place them in the correct folders.&lt;/p&gt;  &lt;p&gt;What I forgot to mention is that Windows Media Player by default does not play Ogg Vorbis and Flac music files, however you can download the codec installer for these, for free, from &lt;a href="http://xiph.org/dshow"&gt;http://xiph.org/dshow&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I am planning to break down this little project into a series of blog posts, with each pattern being a single blog post over several weeks. In these I will flesh out the background behind the pattern, the basic goal being achieved and how to monitor the progress of the sample data being processed. Basically, what I said during the presentation and is missing from the slides.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE 16 October 2012 : &lt;/strong&gt;For those who don’t want to create a GitHub account, I’ve also uploaded the entire source code tree and presentation as a ZIP file that you can download here, &lt;a href="http://www.tigernews.co.uk/blog-twickers/dddnorth2/DDDNorth2-AsyncPatterns.zip" target="_blank"&gt;DDDNorth2-AsyncPatterns.zip&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Resources : &lt;/em&gt;You can download the Task-based Asynchronous Pattern white paper by Stephen Toub, which was the inspiration for this presentation from here - &lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=19957" href="http://www.microsoft.com/en-us/download/details.aspx?id=19957"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=19957&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/150986.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2012/10/14/dddnorth2-bradford-13th-october-2012---async-patterns-presentation-and.aspx</guid>
            <pubDate>Sun, 14 Oct 2012 16:35:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/150986.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2012/10/14/dddnorth2-bradford-13th-october-2012---async-patterns-presentation-and.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/150986.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/150986.aspx</trackback:ping>
        </item>
        <item>
            <title>DDDSouthWest 4.0 26th May 2012 - Async 20/20 presentation</title>
            <category>Development</category>
            <category>DDD</category>
            <category>Software</category>
            <category>Visual Studio Async</category>
            <category>Windows 8</category>
            <link>http://geekswithblogs.net/twickers/archive/2012/05/27/dddsouthwest-4.0-26th-may-2012---async-2020-presentation.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2012/05/27/dddsouthwest-4.0-26th-may-2012---async-2020-presentation.aspx'&gt;http://geekswithblogs.net/twickers/archive/2012/05/27/dddsouthwest-4.0-26th-may-2012---async-2020-presentation.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As I wasn’t voted in with my nominated sessions I presented a 20/20 talk on the new async functionality coming with the .Net Framework.  This was based on the &lt;a href="http://www.pecha-kucha.org/what"&gt;PechaKucha&lt;/a&gt; presentation format, where you have only 20 slides with only 20 seconds per slide, and it progresses automatically.&lt;/p&gt;  &lt;p&gt;It was the first I’d attempted, so thanks to the organisers for allowing me to have a go. Although creating the slide deck was definitely easier than a one hour presentation, it was much more stressful giving the talk by the end of the 6m 40s.&lt;/p&gt;  &lt;p&gt;I’m not going to upload the slide deck (it won’t make much sense) but I did record the audio and used the excellent &lt;a href="http://www.techsmith.com/camtasia.html"&gt;Camtasia&lt;/a&gt; to create a video of the slide deck with that audio which you can watch over here,&lt;/p&gt;  &lt;p&gt;&lt;a title="https://vimeo.com/42957952" href="https://vimeo.com/42957952"&gt;https://vimeo.com/42957952&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/149751.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2012/05/27/dddsouthwest-4.0-26th-may-2012---async-2020-presentation.aspx</guid>
            <pubDate>Mon, 28 May 2012 07:27:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/149751.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2012/05/27/dddsouthwest-4.0-26th-may-2012---async-2020-presentation.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/149751.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/149751.aspx</trackback:ping>
        </item>
        <item>
            <title>MSDN Magazine on your Kindle</title>
            <category>Software</category>
            <category>General</category>
            <category>Development</category>
            <link>http://geekswithblogs.net/twickers/archive/2012/05/08/msdn-magazine-on-your-kindle.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2012/05/08/msdn-magazine-on-your-kindle.aspx'&gt;http://geekswithblogs.net/twickers/archive/2012/05/08/msdn-magazine-on-your-kindle.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here in the UK we recently had a long weekend due to a public holiday. So what better time to sit back in a comfy chair with the laptop and read the latest MSDN Magazine online? Unless you have children, of course, keeping them trapped in the house for three whole days would be a nightmare. So that means heading out and about on buses, trains and heading off to the Isleworth Spring Fayre.&lt;/p&gt;  &lt;p&gt;Now you can read the MSDN Magazine web site on a smartphone but on a 9cm screen it’s not ideal, and I don’t really want to drag a notebook (even a netbook) with me on my travels. So wouldn’t it be great if I there was a Kindle edition of the MSDN magazine?&lt;/p&gt;  &lt;p&gt;Here in the UK we never received the print version of MSDN Magazine even as an MSDN Enterprise/Universal subscriber, so we relied on the compiled help file (CHM) version for offline reading. Recently this changed to PDF, which works on a Kindle, but isn’t the ideal format for the small screen and the PDF does take quite a while to appear on the MSDN site (currently April and May are not available).&lt;/p&gt;  &lt;p&gt;Coming the rescue is the the free and open source, eBook tool, Calibre (&lt;a href="http://calibre-ebook.com/"&gt;http://calibre-ebook.com/&lt;/a&gt;). I first discovered this application when I wished to download the Economist newspaper to my Kindle. Calibre includes a ‘Fetch News’ ability, which allows scheduled downloading of web site content, with ‘recipes’ that convert those screen scrapes into various formats including MOBI, EPUB or PDF. It even will update your Kindle over USB, loading any new titles into your documents folder.&lt;/p&gt;  &lt;p&gt;One of the recipes available is for the MSDN magazine. So the moment a new version appears on the MSDN web site, (&lt;a href="http://msdn.microsoft.com/en-us/magazine/default.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/default.aspx&lt;/a&gt;), you can just fire up Calibre and download the latest version to your Kindle. If you run Calibre on startup you can even schedule the MSDN magazine to be collected every month and automatically downloaded to your Kindle.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table border="2" cellpadding="2" cellspacing="0" width="701"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td align="center" valign="top" width="346"&gt;         &lt;h2&gt;Web  version&lt;/h2&gt;         &lt;img src="http://www.tigernews.co.uk/blog-twickers/msdnkindle/Web-DetailedContents.jpg" height="445" width="314" /&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td align="center" valign="top" width="351"&gt;         &lt;h2&gt;Kindle .mobi version&lt;/h2&gt;         &lt;img src="http://www.tigernews.co.uk/blog-twickers/msdnkindle/Kindle-DetailedContents.gif" height="442" width="332" /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td align="center" width="345"&gt;&lt;img src="http://www.tigernews.co.uk/blog-twickers/msdnkindle/Web-Images.jpg" height="292" width="315" /&gt;&lt;/td&gt;        &lt;td align="center" valign="top" width="352"&gt;&lt;img src="http://www.tigernews.co.uk/blog-twickers/msdnkindle/Kindle-Images.gif" height="419" width="314" /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td align="center" valign="top" width="345"&gt;&lt;img src="http://www.tigernews.co.uk/blog-twickers/msdnkindle/Web-CodeSample.jpg" height="158" width="321" /&gt;&lt;/td&gt;        &lt;td align="center" valign="top" width="352"&gt;&lt;img src="http://www.tigernews.co.uk/blog-twickers/msdnkindle/Kindle-CodeSample.gif" height="429" width="322" /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/149570.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2012/05/08/msdn-magazine-on-your-kindle.aspx</guid>
            <pubDate>Wed, 09 May 2012 07:54:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/149570.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2012/05/08/msdn-magazine-on-your-kindle.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/149570.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/149570.aspx</trackback:ping>
        </item>
        <item>
            <title>Why I cancelled my Spotify Premium subscription - the tale of an atypical music consumer</title>
            <category>General</category>
            <category>Rants</category>
            <category>Software</category>
            <link>http://geekswithblogs.net/twickers/archive/2012/02/02/why-i-cancelled-my-spotify-premium-subscription---the-tale.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2012/02/02/why-i-cancelled-my-spotify-premium-subscription---the-tale.aspx'&gt;http://geekswithblogs.net/twickers/archive/2012/02/02/why-i-cancelled-my-spotify-premium-subscription---the-tale.aspx&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;font size="4"&gt;Disclaimer&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Firstly, I must come clean, I work for a digital music
company which is involved in digital music streaming and downloads.  In no way are the views expressed are the
views of the company for which I work. 
They are merely the subjective views of an atypical music consumer.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;I say atypical because despite being over 40, I seek out new
bands on the radio, using listen again on 6Music and BBC Introducing
programmes, such as Christian Carlisle’s excellent BBC Sheffield programme.  I make an effort to go to at least one gig
every month, including such gigs as the NME New Radar tour. 
Also, if I like a band, I will always try to buy their CDs, especially singles, my favourite
format.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;font size="4"&gt;My mobile use&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;In addition, my mobile phone use is also unusual, in that I
have a very old fashioned candy bar Windows Mobile 6.1 smartphone, a Benq E72.  This provides my voice and text service, and
also contains a 32Gb microSD card holding the 8000+ tracks that is my music
collection.  I listen to this using a
Sony MW600 Bluetooth headset, the combination of which is incredibly reliable. The E72 is a 2G
+ WiFi phone with no data plan, just calls and unlimited text messages for
£10 per month.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;I also own what is now termed a ‘smartphone’, an Orange San Francisco badged ZTE Blade flashed with a custom Android 2.2 ROM.  This contains a mobile broadband SIM
from Three, providing a monthly allowance of 5Gb of 3G data for £7.50, which
can be used directly or via tethering. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;font size="4"&gt;Spotify &lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Getting hooked&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;I first began using a the Spotify client at work; the free service
including advertising, and enjoyed the ability to tap into a music catalogue
that included many tracks which I did not own myself.   I liked the shared playlists, which were
sometimes used to create office playlists to which everyone could contribute.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;The only downside, apart from the appalling quality of the
advertising segments, was the lack of some of my favourite music.  I’m a big fan of Spacemen 3, nothing
there.  Spiritualized, later releases,
but not all.  Sugar, no there.  B-sides of older singles, not there.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;It did grate that I had these tracks on my phone’s tiny 32Gb
microSD card, and on my laptop, but this was a free service, so I don't think it is really fair to complain.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Becoming a premium
subscriber&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Eventually I decided to take the plunge and become a premium
subscriber.  Partly because of where I work and wanting to
see a rival music delivery system, but also due to a desire to remove the annoying advertisements
and allow me to access the mobile client on my Android phone and
download offline content that I didn’t own.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;For the first 3 or 4 months, it all seemed fine, I learnt the
quirks of the mobile client and accepted that there were a few faults, but it
was new, so that was to be expected.  The
lack of content could be partly solved by loading some of my own music
collection onto a microSD card in the ZTE Blade smartphone.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Immediacy&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;There was a high point of being a premium Spotify
subscriber.   On the top of a 27 bus
heading to Koko to an NME New Radar gig last October I spotted a tweet from the Joy
Formidable that their new single, The Big More, had been released. I fired up
Spotify and started downloading the tracks to listen to for the remainder of the journey.  This even included a live version of Whirring,
which was recorded at Koko in March, where I had been part of the audience
swept along by the beauty of the introduction played on a harp.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;This immediacy was quite intoxicating.  I heard that one of my favourite new bands had
released a new single, and downloaded it within minutes.  However, having an offline copy didn’t
prevent me buying the original, which as a CD only sold at gigs I couldn't attend, meant paying a premium for a copy sold on eBay.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;This is one of my key reasons for using Spotify; listening to a
new release, especially albums, and deciding whether it was worth buying the CD.
I will always prefer to own the CD, as it provides a high quality archive copy, with decent
artwork.  If I consider there are only a few tracks
worth having, I relent and buy digital downloads, but always burn
them to a CD for archive.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Disillusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;So this all sounds like it worked quite well.  I had music downloaded offline, which I would
have otherwise had to pay for, and I could access much more music than was
available from my own music collection, on my 32Gb microSD.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;However, it never did become my sole music player, and I
learnt that the offline files couldn’t replace the permanent access I had enjoyed
without the subscription.  The reasons
are a complex mix of poor application design, restrictive access and lack of breadth
of content outside mainstream music.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Poor user experience&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;I think the Android application is one of the more nasty
pieces of user interface design I have seen for some time.  I realise this is subjective but some really
poor design choices and I can only believe lack of any serious rival has
prevented these being addressed.  With no
real competition Spotify has no incentive to fix these issues.  There are some very obtuse menu options and idiocy such as the redundant ‘Are you sure you want to exit’ dialogs after you click
on the Exit menu. An important tenet of  interface design should be &lt;b&gt;Don't make the user feel stupid&lt;/b&gt;, which the Android client fails spectacularly;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;span style="text-indent: -18pt; "&gt;If you update the Spotify application via the
Marketplace, despite claiming that all user data will be preserved, you’ll be
shocked when you realise that all your offline content will have been
removed. &lt;/span&gt;&lt;span style="text-indent: -18pt; "&gt;U&lt;/span&gt;&lt;span style="text-indent: -18pt; "&gt;sed up valuable 3G data allowance
downloading offline content?  Let’s hope
not as you’ll need to re-download it all again. 
It can be over emphasised that there is &lt;/span&gt;&lt;b style="text-indent: -18pt; "&gt;absolutely no warning &lt;/b&gt;&lt;span style="text-indent: -18pt; "&gt;that this is about to happen.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -18pt; "&gt;On the Android client you cannot alter the order
of items within the playlist.  I believe
this is possble on the iOS application, and I had hoped this would be fixed
within a few months, but apparently not. 
Clearly I must be meant to edit my playlists using my Windows client, obviously
when I’m out and about I couldn’t possibly want to do this. &lt;/span&gt;&lt;span style="text-indent: -18pt; "&gt;The only visible update I’ve seen in the Android
app was the inclusion of a Facebook login option.  Clearly Facebook login is a higher priority
than a functioning playlist.  Spotify have
processes to update the functionality of their Android client, but only for
items they consider worthy of the effort.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -18pt; "&gt;If you do add items to a playlist, they are
added as the next item to be played.  
That makes creating a decent playlist virtually impossible as you have
to build it from the end to the beginning, so no linking similar songs together
in the order you think of them, and building it while the first tracks are
playing.  This is really basic
stuff.  I know it is, because it was in
my media player on Windows CE (and Windows Phone) &lt;/span&gt;&lt;b style="text-indent: -18pt; "&gt;TEN &lt;/b&gt;&lt;span style="text-indent: -18pt; "&gt;years ago.  It’s also
something I do a lot, while listening to one song, it jars my emotional memory,
and triggers a string of new tracks to add to the playlist&lt;/span&gt;&lt;span style="text-indent: -18pt; "&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -18pt; "&gt;And don’t get me started on Bluetooth support.  This may be the ZTE Blade to blame, but it is
massively not reliable, it stutters through songs, especially tracks not
already offline, and don’t alternate between using the Bluetooth and the screen
UI controls to change tracks.  It all
gets massively out of sync, with incorrect song titles and album art, so you
really have no idea what you are playing. &lt;/span&gt;And that poor Bluetooth support also means
that if you pause the music, and the device enters standby, you have to unlock
the phone to restart the music.  On my
Benq E72 the keypad may be locked but the pause, prev and next buttons on the Bluetooth
headset are still fully functional.&lt;/li&gt;&lt;/ol&gt;&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Even the Windows application has real issues.  The auto update functionality means every now
and then I start Spotify, see the playlist appear, only for it to vanish
without warning, or any message, to reappear a minute or so later, updated, and
with no explanation of what might have changed or if content requires to be
downloaded again.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Music – here today
and gone tomorrow, or never there at all&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;To some extent I can cope with the lack of some obscure music
being on Spotify, and I don’t resent artists such as Adele (and her label, XL
Recordings) for refusing to allow her latest album onto the system. If Adele doesn't want to cannibalise CD and digital downloads and doesn't need the exposure Spotify provides to smaller bands, then good on her.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;More of an issue is seeing albums you have downloaded
offline vanish without warning, as happened with The Burns Unit, ‘Side Show’.  Having got used to listening to this as part
of my subscription, with no advance warning, a message appeared one day saying it was being
removed as it was no longer available.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;As far as I am aware, no CD I have every bought has informed me
that the music was no longer available so that I opened the case to find the
silver disc strangely absent.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Value for money&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;The final nail in the coffin is the value for money.  For me it became obvious that it represented
poor value for money.  In the six months
I have had a subscription I have never really had more than 10 offline files
that I do not own on a physical CD or digital download.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;I could have happily downloaded every track for the price of
one month’s subscription, and even worse, I could happily buy every album
containing those tracks for the price of the six months of subscribing to the
premium service.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;It is sobering to consider that I pay just under £40 per
month for a satellite television subscription with BskyB and £10 of that is for
unlimited broadband. So in terms of content, Sky provide 100’s of television channels,
repeatedly update the EPG and Sky+ system and put a huge amount of effort into usability
of both of these applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;In comparison, Spotify, for a third of this amount provides a
poor user experience, especially on mobile, with much less valuable additional content to my own music collection&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;Should Spotify be worried?&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Here is the reality – I don’t think Spotify should be worried.  I know a much larger number of people who are
very satisfied with their subscription.  For
them, the issues I have raised don’t really affect them, and Spotify provides a
very useful means to instantly access a massive amount of music with the added
benefit of social interaction with friends.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Even so I think Spotify shouldn't be complacent.  They need to realise that selling subscriptions
does mean that they will have to care more about treating their customers
better.  That means all customers, even
if they have the temerity to use an Android handset.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;They will also have to deal with artists better, and pay them
properly, or more will decide to remove access to their content.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;And finally, I think they may need to reconsider removing
the reliance on Facebook logins for all new users.  I was an early user so I still have my original Spotify login. I know that if I needed to use Facebook just to access Spotify I would never have
used it in the first place.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;But then, as I've mentioned, I’m an atypical music consumer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/148573.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2012/02/02/why-i-cancelled-my-spotify-premium-subscription---the-tale.aspx</guid>
            <pubDate>Fri, 03 Feb 2012 00:21:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/148573.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2012/02/02/why-i-cancelled-my-spotify-premium-subscription---the-tale.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/148573.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/148573.aspx</trackback:ping>
        </item>
        <item>
            <title>DDD North, Sunderland  - Commercial Software Development slides and link to video</title>
            <category>Software</category>
            <category>Development</category>
            <category>DDD</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/10/09/ddd-north-sunderland----commercial-software-development-slides-and.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/10/09/ddd-north-sunderland----commercial-software-development-slides-and.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/10/09/ddd-north-sunderland----commercial-software-development-slides-and.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Many thanks to the audience in Sunderland for the great reaction to my talk on Commercial Software Development and getting into the spirit of the presentation.  &lt;/p&gt;
&lt;p&gt;It was great to ask an audience if they'd been to meetings in the past week, then ask them to put their hands down if those meetings had agendas, and still see most of the hands stay up. Clearly we all still have work to do on eliminating such an atrocious waste of developer resource.&lt;/p&gt;
&lt;p&gt;I've uploaded the Powerpoint as a PDF with speaker notes (2Mb), a low bandwidth version of the slideck (9.5Mb) and a higher bandwidth version with all the animations (17Mb).&lt;/p&gt;
&lt;p&gt;  &lt;a href="http://www.tigernews.co.uk/blog-twickers/dddnorth/CSD-DDDNorth.pdf"&gt;http://www.tigernews.co.uk/blog-twickers/dddnorth/CSD-DDDNorth.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;  &lt;a href="http://www.tigernews.co.uk/blog-twickers/dddnorth/CSD-DDDNorth-Low.zip"&gt;http://www.tigernews.co.uk/blog-twickers/dddnorth/CSD-DDDNorth-Low.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;  &lt;a href="http://www.tigernews.co.uk/blog-twickers/dddnorth/CSD-DDDNorth-Hi.zip"&gt;http://www.tigernews.co.uk/blog-twickers/dddnorth/CSD-DDDNorth-Hi.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also view a recording of the first time I gave the presentation at DDD8 in Reading on Vimeo, &lt;/p&gt;
&lt;p&gt;  &lt;a href="http://vimeo.com/9216563"&gt;http://vimeo.com/9216563&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And I have to say many thanks to Andy Westgarth, the guys from NEBytes and all the crew who made the first DDDNorth such a fantastic event, and for all the sponsors, including DevExpress who feed and watered over 100 geeks at The Stadium of Light. Roll on DDDNorth 2012.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/147230.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/10/09/ddd-north-sunderland----commercial-software-development-slides-and.aspx</guid>
            <pubDate>Sun, 09 Oct 2011 12:38:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/147230.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/10/09/ddd-north-sunderland----commercial-software-development-slides-and.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/147230.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/147230.aspx</trackback:ping>
        </item>
        <item>
            <title>Go Asynchronous with C# 5 - presentation, source code and links from NxtGenUG Birmingham - 13th September 2011</title>
            <category>Development</category>
            <category>Software</category>
            <category>Visual Studio Async</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/09/13/go-asynchronous-with-c-5---presentation-source-code-and-again.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/09/13/go-asynchronous-with-c-5---presentation-source-code-and-again.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/09/13/go-asynchronous-with-c-5---presentation-source-code-and-again.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A big thanks to my lively audience at the &lt;a href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=441"&gt;NxtGenUG Birmingham&lt;/a&gt; group tonight who provided excellent feedback. I enjoyed the live coding to try to explore the limits of the framework, even though it was interrupted by my PC turning itself off and leading me to thinking I'd trashed my SSD drive.&lt;/p&gt;
&lt;p&gt;You can find my presentation online at Prezi.com over &lt;a href="http://prezi.com/r9wibpsya_km"&gt;here&lt;/a&gt;, and the source code for the demos is available &lt;a href="http://www.tigernews.co.uk/blog-twickers/AsyncLDNUG.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During the presentation I mentioned there were some additional blogs and articles that are well worth having a look at;&lt;/p&gt;
&lt;p&gt;Lucian Wischik addresses the bugs being fixed within the Async library and what bugs were fixed in the Async CTP refresh in two articles, &lt;a href="http://blogs.msdn.com/b/lucian/archive/2011/04/16/async-ctp-refresh-compiler-bug-fixes.aspx"&gt;Async CTP Refresh - Compiler Bug fixes&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/lucian/archive/2011/04/17/async-ctp-refresh-what-bugs-remain-in-it.aspx"&gt;Async CTP Refresh - what bugs remain in it?&lt;/a&gt;. If you're thinking of using the go live licence in the Async CTP Refresh you need to read these two articles to understand which bugs remain and how you might mitigate against them.&lt;/p&gt;
&lt;p&gt;Also, Sacah Barber (a UK based C# MVP) provides a really good set of use cases for the Async CTP over at CodeProject, in a post &lt;a href="http://www.codeproject.com/KB/cs/Tasks6.aspx?fid=1626007&amp;amp;df=90&amp;amp;mpp=25&amp;amp;noise=3&amp;amp;prof=False&amp;amp;sort=Position&amp;amp;view=Quick&amp;amp;fr=1#xx0xx"&gt;Task Parallel Library: 6 of n&lt;/a&gt;, including an example of using a mocking framework for testing your Async code.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/146866.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/09/13/go-asynchronous-with-c-5---presentation-source-code-and-again.aspx</guid>
            <pubDate>Tue, 13 Sep 2011 21:22:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/146866.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/09/13/go-asynchronous-with-c-5---presentation-source-code-and-again.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/146866.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/146866.aspx</trackback:ping>
        </item>
        <item>
            <title>Go Asynchronous with C# 5 - presentation, source code and links from London .Net Users Group - 1st September 2011</title>
            <category>Visual Studio Async</category>
            <category>Software</category>
            <category>Development</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/09/02/go-asynchronous-with-c-5---presentation-source-code-and.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/09/02/go-asynchronous-with-c-5---presentation-source-code-and.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/09/02/go-asynchronous-with-c-5---presentation-source-code-and.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A big thanks to my lively audience at the &lt;a href="http://www.dnug.org.uk/"&gt;London .Net Users&lt;/a&gt; group last night who provided excellent feedback. They even led me to some live coding to discover how the TaskEx.WhenAny deals with the tasks which didn't complete first - apparently they are immeadiately disposed of and their results are lost. Let's hope the release documentation for the Async libraries makes this very clear.&lt;/p&gt;
&lt;p&gt;I also must thank &lt;a href="http://www.emc.com/services/index.htm"&gt;EMC Consulting&lt;/a&gt; for providing the facilities and beer, and &lt;a href="http://www.adgistics.com/"&gt;Adgistics&lt;/a&gt; for providing the pizza, and further beers at the post user group beers.&lt;/p&gt;
&lt;p&gt;You can find my presentation online at Prezi.com over &lt;a href="http://prezi.com/1rpkymfmkc55"&gt;here&lt;/a&gt;, and the source code for the demos is available &lt;a href="http://www.tigernews.co.uk/blog-twickers/AsyncLDNUG.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Durign the presentation I mentioned some blogs articles that are well worth having a look at;&lt;/p&gt;
&lt;p&gt;Lucian Wischik addresses the bugs being fixed within the Async library and what bugs were fixed in the Async CTP refresh in two articles, &lt;a href="http://blogs.msdn.com/b/lucian/archive/2011/04/16/async-ctp-refresh-compiler-bug-fixes.aspx"&gt;Async CTP Refresh - Compiler Bug fixes&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/lucian/archive/2011/04/17/async-ctp-refresh-what-bugs-remain-in-it.aspx"&gt;Async CTP Refresh - what bugs remain in it?&lt;/a&gt;. If you're thinking of using the go live licence in the Async CTP Refresh you need to read these two articles to understand which bugs remain and how you might mitigate against them.&lt;/p&gt;
&lt;p&gt;Also, Sacah Barber (a UK based C# MVP) provides a really good set of use cases for the Async CTP over at CodeProject, in a post &lt;a href="http://www.codeproject.com/KB/cs/Tasks6.aspx?fid=1626007&amp;amp;df=90&amp;amp;mpp=25&amp;amp;noise=3&amp;amp;prof=False&amp;amp;sort=Position&amp;amp;view=Quick&amp;amp;fr=1#xx0xx"&gt;Task Parallel Library: 6 of n&lt;/a&gt;, including an example of using a mocking framework for testing your Async code.&lt;/p&gt;
&lt;p&gt;If you missed the talk I'll also be giving it at &lt;a href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=441"&gt;NxtGenUG&lt;/a&gt; in Birmingham on 13th September.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/146747.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/09/02/go-asynchronous-with-c-5---presentation-source-code-and.aspx</guid>
            <pubDate>Fri, 02 Sep 2011 20:30:41 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/146747.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/09/02/go-asynchronous-with-c-5---presentation-source-code-and.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/146747.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/146747.aspx</trackback:ping>
        </item>
        <item>
            <title>Mounting VHD comes to Windows Explorer in Windows 8</title>
            <category>Windows 8</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/08/29/mounting-vhd-comes-to-windows-explorer-in-windows-8.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/08/29/mounting-vhd-comes-to-windows-explorer-in-windows-8.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/08/29/mounting-vhd-comes-to-windows-explorer-in-windows-8.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I'm glad to see that mounting a VHD file has escaped the Computer Management (Disk Management) administrator console in Windows 7, and made it to Windows Explorer in Windows 8.  That should make the feature much more discoverable, as well as making it much easier to use.  &lt;/p&gt;
&lt;p&gt;I think the ability to mount a VHD as a drive, read and write to it and then easily port that VHD to another machine is a great feature that's been hidden in Windows 7.&lt;/p&gt;
&lt;p&gt;More on the Windows 8 blog here, &lt;a href="http://blogs.msdn.com/b/b8/"&gt;http://blogs.msdn.com/b/b8/&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/146700.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/08/29/mounting-vhd-comes-to-windows-explorer-in-windows-8.aspx</guid>
            <pubDate>Tue, 30 Aug 2011 07:53:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/146700.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/08/29/mounting-vhd-comes-to-windows-explorer-in-windows-8.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/146700.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/146700.aspx</trackback:ping>
        </item>
        <item>
            <title>Jon Skeet is starting a new series on C# 5.0 Async</title>
            <category>Development</category>
            <category>Visual Studio Async</category>
            <category>Software</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/05/08/jon-skeet-is-starting-a-new-series-on-c-5.0.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/05/08/jon-skeet-is-starting-a-new-series-on-c-5.0.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/05/08/jon-skeet-is-starting-a-new-series-on-c-5.0.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Jon Skeet has started a new series of blogs on Async focussing on the underlying technology beneath the Async CTP and Async methods coming in C#5.0.&lt;/p&gt;
&lt;p&gt;  &lt;a href="http://msmvps.com/blogs/jon_skeet/archive/2011/05/08/eduasync-part-1-introduction.aspx"&gt;http://msmvps.com/blogs/jon_skeet/archive/2011/05/08/eduasync-part-1-introduction.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Jon's blogs have a clear and deceptively easy to read style that belies the complex topics being discussed and is perfect for demystifying the technology behind Async so they are well worth the investment, and I'm looking forward to them hugely.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/145247.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/05/08/jon-skeet-is-starting-a-new-series-on-c-5.0.aspx</guid>
            <pubDate>Mon, 09 May 2011 08:49:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/145247.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/05/08/jon-skeet-is-starting-a-new-series-on-c-5.0.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/145247.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/145247.aspx</trackback:ping>
        </item>
        <item>
            <title>New Visual Studio Async CTP refresh now works with VS2010 SP1</title>
            <category>Software</category>
            <category>Visual Studio Async</category>
            <category>Development</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;While I was away on a two week holiday in Morocco I notice that the Visual Studio team have dropped a very welcome SP1 refresh that means you can now play with the Async CTP with Visual Studio 2010 SP1.  It also means you can program against ASP.NET MVC 3.0 and use the Aysnc CTP at the same time.&lt;/p&gt;
&lt;p&gt;Visual Studio Blog - SP1 refresh announcement - &lt;a href="http://msdn.microsoft.com/en-US/vstudio/async"&gt;http://msdn.microsoft.com/en-US/vstudio/async&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lucian Wischik's Blog - design changes - &lt;a href="http://blogs.msdn.com/b/lucian/archive/2011/04/15/async-ctp-refresh-design-changes.aspx"&gt;http://blogs.msdn.com/b/lucian/archive/2011/04/15/async-ctp-refresh-design-changes.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Official download - &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4738205d-5682-47bf-b62e-641f6441735b"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4738205d-5682-47bf-b62e-641f6441735b&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have fun and remember to provide feedback to the Visual Studio team to make sure you get the Async features you want in C# 5.0.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/145024.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx</guid>
            <pubDate>Sun, 24 Apr 2011 23:02:41 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/145024.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/145024.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/145024.aspx</trackback:ping>
        </item>
        <item>
            <title>Misreporting of variable values when debugging x64 code with the Visual Studio 2010 debugger</title>
            <category>Development</category>
            <category>Software</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/03/31/misreporting-of-variable-values-when-debugging-x64-code-with-the.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/03/31/misreporting-of-variable-values-when-debugging-x64-code-with-the.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/03/31/misreporting-of-variable-values-when-debugging-x64-code-with-the.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;o:OfficeDocumentSettings&gt;
&lt;o:AllowPNG /&gt;
&lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:WordDocument&gt;
&lt;w:View&gt;Normal&lt;/w:View&gt;
&lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
&lt;w:TrackMoves /&gt;
&lt;w:TrackFormatting /&gt;
&lt;w:PunctuationKerning /&gt;
&lt;w:ValidateAgainstSchemas /&gt;
&lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
&lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
&lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
&lt;w:DoNotPromoteQF /&gt;
&lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
&lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
&lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
&lt;w:Compatibility&gt;
&lt;w:BreakWrappedTables /&gt;
&lt;w:SnapToGridInCell /&gt;
&lt;w:WrapTextWithPunct /&gt;
&lt;w:UseAsianBreakRules /&gt;
&lt;w:DontGrowAutofit /&gt;
&lt;w:SplitPgBreakAndParaMark /&gt;
&lt;w:EnableOpenTypeKerning /&gt;
&lt;w:DontFlipMirrorIndents /&gt;
&lt;w:OverrideTableStyleHps /&gt;
&lt;/w:Compatibility&gt;
&lt;m:mathPr&gt;
&lt;m:mathFont m:val="Cambria Math" /&gt;
&lt;m:brkBin m:val="before" /&gt;
&lt;m:brkBinSub m:val="&amp;#45;-" /&gt;
&lt;m:smallFrac m:val="off" /&gt;
&lt;m:dispDef /&gt;
&lt;m:lMargin m:val="0" /&gt;
&lt;m:rMargin m:val="0" /&gt;
&lt;m:defJc m:val="centerGroup" /&gt;
&lt;m:wrapIndent m:val="1440" /&gt;
&lt;m:intLim m:val="subSup" /&gt;
&lt;m:naryLim m:val="undOvr" /&gt;
&lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"&gt;
&lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" /&gt;
&lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 1" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 2" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 3" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 4" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 5" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 6" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 7" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 8" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 9" /&gt;
&lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /&gt;
&lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" /&gt;
&lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /&gt;
&lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /&gt;
&lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" /&gt;
&lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /&gt;
&lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /&gt;
&lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /&gt;
&lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" /&gt;
&lt;w:LsdException Locked="false" Priority="37" Name="Bibliography" /&gt;
&lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /&gt;
&lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b style=""&gt;How we came across the bug&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Today we were debugging some unit tests which passed on a local machine, but were failing on our build server.&lt;span style=""&gt;  &lt;/span&gt;We decided to step through the code using the Visual Studio 2010 debugger.&lt;span style=""&gt;  &lt;/span&gt;We had real trouble understanding how the test ever passed at all as the debugger was showing a variable having a value of 0 when, we knew it should have a value of 103.4, and the test should definitely fail if the value was 0.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;This resulted in a great deal of head scratching, and eventually resorting to writing to the Debug window, which proved the variable did hold the value of 103.4 even though the debugger repeatedly showed the variable holding the value of 0.&lt;span style=""&gt;  &lt;/span&gt;The initial tests used the ReSharper test runner, so we ran a check that debugging a standalone version of NUnit produced the same value of 0, and it did.&lt;span style=""&gt;  &lt;/span&gt;So it wasn’t a tooling issue, and unlikely to be specific to NUnit.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;As our code was part of a suite of unit tests, which in turn was part of a medium sized solution with many dependencies, we had to produce a repeatable test with the minimum number of lines of code.&lt;span style=""&gt;  &lt;/span&gt;We created a new console application and created the three lines of codes with two methods that were the bare minimum to mirror the code in our unit test project.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;However, we couldn’t make it reproduce the fault we’d seen.&lt;span style=""&gt;  &lt;/span&gt;We nearly gave up, but as I had Visual Studio 2010 Ultimate installed on my machine I thought it was a good chance to use IntelliTrace to see if that changed how variables were handled in the debugger.&lt;span style=""&gt;  &lt;/span&gt;However, we were surprised to see in the help files that IntelliTrace only worked when a project &lt;i style=""&gt;Platform Target&lt;/i&gt; is set to target a x86 CPU. This is when the penny dropped – our projects target &lt;i style=""&gt;Any CPU&lt;/i&gt; which on our systems means &lt;i style=""&gt;x64&lt;/i&gt;.&lt;span style=""&gt;  &lt;/span&gt;The moment I set the &lt;i style=""&gt;Platform Target&lt;/i&gt; to &lt;i style=""&gt;x64&lt;/i&gt; the error was reproduced.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b style=""&gt;Show me the code!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Here is how to reproduce the issue. In Visual Studio 2010, create a Visual C#, Windows application, using the Console Application template. In the code file &lt;i style=""&gt;Program.cs&lt;/i&gt; replace the code with the following code, &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt; System;&lt;/span&gt; &lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt; MisreportingValuesInNullableTypes&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-family: Consolas;"&gt;          &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Program&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;    {&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        {&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;Decimal&lt;/span&gt; result = GetNullableValue() ?? GetNonNullableValue(); &lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;Console&lt;/span&gt;.Write(result);&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        } &lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;decimal&lt;/span&gt;? GetNullableValue()&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        {&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: blue;"&gt;decimal&lt;/span&gt;)200.22;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        } &lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;decimal&lt;/span&gt; GetNonNullableValue()&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;        {&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-family: Consolas;"&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: blue;"&gt;decimal&lt;/span&gt;)100.11;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: larger;"&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Consolas;"&gt;              }        &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Consolas;"&gt;         }&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Consolas;"&gt;} &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; margin-left: 40px;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b style=""&gt;What does the code do?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The code has two methods. &lt;i style=""&gt;GetNullableValue&lt;/i&gt;, may return &lt;b style=""&gt;null&lt;/b&gt; or a &lt;b style=""&gt;decimal &lt;/b&gt;&lt;span style=""&gt; &lt;/span&gt;value. A second method, &lt;i style=""&gt;GetNonNullableValue,&lt;/i&gt; is guaranteed to return a &lt;b style=""&gt;decimal &lt;/b&gt;value every time.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The &lt;i style=""&gt;result&lt;/i&gt; variable in the &lt;i style=""&gt;Main&lt;/i&gt; method is assigned using the &lt;i style=""&gt;null-coalescing &lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;operator&lt;/span&gt;&lt;/em&gt;&lt;/i&gt;&lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-style: normal;"&gt;, &lt;b style=""&gt;??&lt;/b&gt;, which will assign the return value of the first method call &lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;unless&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-style: normal;"&gt; it has a null value, in which case it will assign the return value of the second method.&lt;span style=""&gt;  &lt;/span&gt;This guarantees that there will always be a decimal value assigned to the variable &lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;result&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-style: normal;"&gt;.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b style=""&gt;Reproducing the problem&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;To view the variable &lt;i style=""&gt;result&lt;/i&gt; with the debugger set a breakpoint on the line containing Console.Write. If you left the project with the default settings, the &lt;i style=""&gt;Platform Target&lt;/i&gt; should be set to &lt;i style=""&gt;x86&lt;/i&gt;.&lt;span style=""&gt;  &lt;/span&gt;When you run the program, it will reach the breakpoint, and if you hover over the &lt;i style=""&gt;result&lt;/i&gt; variable it will show the value 200.22.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Now right click on the console project in the Solution Explorer and configure the &lt;i style=""&gt;Platform Target&lt;/i&gt; to &lt;i style=""&gt;x64&lt;/i&gt;.&lt;span style=""&gt;  &lt;/span&gt;Now when you run the program, it will reach the breakpoint, and if you hover over the &lt;i style=""&gt;result &lt;/i&gt;variable it will show the value 0.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;In either case the &lt;i style=""&gt;actual&lt;/i&gt; value held in the variable is 200.22.&lt;span style=""&gt;  &lt;/span&gt;You can see this when the &lt;i style=""&gt;Platform Target&lt;/i&gt; is set to &lt;i style=""&gt;x64&lt;/i&gt; by reaching the breakpoint and pressing F10 to step one line further in the code. If you switch to the console application window, there is the correct value of 200.22 even though the debugger showed the variable holding the value 0 when you hover over it in the code window.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img width="550px" border="1" align="absMiddle" src="http://www.tigernews.co.uk/blog-twickers/VS2010debugger/DontDebugx64Apps.png" alt="Incorrect variable value displayed in x64 debugger" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b style=""&gt;Even weirder behaviour ...&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;During trying to reproduce the problem, we edited our original code to see if I could ‘fix’ the problem by using a different method of assigning the variable.&lt;span style=""&gt;  &lt;/span&gt;This is when we discovered that if you add an additional variable assignment after the line making the assignment to &lt;i style=""&gt;result&lt;/i&gt;,&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 12pt; font-family: Consolas;"&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: larger;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;bool&lt;/span&gt; AnyOldVariableWeDontActuallUse = &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Consolas;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;this resolved the issue and the debugger displayed the correct value.&lt;span style=""&gt;  &lt;/span&gt;This is true even if the variable is not actually used by any other code. This additional variable can be of any type but it &lt;i style=""&gt;must&lt;/i&gt; be initialised if it is to work. If you leave this additional variable with a default value it won’t resolve the issue with the debugger.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b style=""&gt;Conclusion&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Our tests were performed in Windows 7 64-bit, with Visual Studio 2010 Professional RTM, Visual Studio 2010 Ultimate RTM and Visual Studio 2010 Ultimate SP1, and all exhibited the same fault in the debugger when the &lt;i style=""&gt;Platform Target&lt;/i&gt; was set to &lt;i style=""&gt;x64.&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I haven’t delved into the IL code generated, as clearly the actual code and .Net Framework is functioning as expected.&lt;span style=""&gt;  &lt;/span&gt;The fault appears only to lie in the x64 implementation of the Visual Studio 2010 debugger.&lt;span style=""&gt;  &lt;/span&gt;As Visual Studio 2010 Professional doesn’t include IntelliTrace the x86 debugger is the standard debugger for Visual Studio, one would expect this to be identical to that in the x64 version.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So if you are debugging an &lt;i style=""&gt;Any CPU&lt;/i&gt; or &lt;i style=""&gt;x64&lt;/i&gt; don’t necessarily believe the value that the debugger might tell you is stored in a variable. Not a comforting thought.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I have placed this issue on Microsoft Connect if you wish to provide additional feedback to Microsoft on this issue,&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/655793/edit-this-entry-misreporting-of-variable-values-when-debugging-x64-code-with-the-visual-studio-2010-debugger"&gt;https://connect.microsoft.com/VisualStudio/feedback/details/655793/edit-this-entry-misreporting-of-variable-values-when-debugging-x64-code-with-the-visual-studio-2010-debugger&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/144624.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/03/31/misreporting-of-variable-values-when-debugging-x64-code-with-the.aspx</guid>
            <pubDate>Thu, 31 Mar 2011 21:30:03 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/144624.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/03/31/misreporting-of-variable-values-when-debugging-x64-code-with-the.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/144624.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/144624.aspx</trackback:ping>
        </item>
        <item>
            <title>A visit to #MEATEASY – the temporary home of The Meat Wagon</title>
            <category>General</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/03/29/a-visit-to-meateasy--the-temporary-home-of-the.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/03/29/a-visit-to-meateasy--the-temporary-home-of-the.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/03/29/a-visit-to-meateasy--the-temporary-home-of-the.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;o:OfficeDocumentSettings&gt;
&lt;o:AllowPNG /&gt;
&lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:WordDocument&gt;
&lt;w:View&gt;Normal&lt;/w:View&gt;
&lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
&lt;w:TrackMoves /&gt;
&lt;w:TrackFormatting /&gt;
&lt;w:PunctuationKerning /&gt;
&lt;w:ValidateAgainstSchemas /&gt;
&lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
&lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
&lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
&lt;w:DoNotPromoteQF /&gt;
&lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
&lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
&lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
&lt;w:Compatibility&gt;
&lt;w:BreakWrappedTables /&gt;
&lt;w:SnapToGridInCell /&gt;
&lt;w:WrapTextWithPunct /&gt;
&lt;w:UseAsianBreakRules /&gt;
&lt;w:DontGrowAutofit /&gt;
&lt;w:SplitPgBreakAndParaMark /&gt;
&lt;w:EnableOpenTypeKerning /&gt;
&lt;w:DontFlipMirrorIndents /&gt;
&lt;w:OverrideTableStyleHps /&gt;
&lt;/w:Compatibility&gt;
&lt;m:mathPr&gt;
&lt;m:mathFont m:val="Cambria Math" /&gt;
&lt;m:brkBin m:val="before" /&gt;
&lt;m:brkBinSub m:val="&amp;#45;-" /&gt;
&lt;m:smallFrac m:val="off" /&gt;
&lt;m:dispDef /&gt;
&lt;m:lMargin m:val="0" /&gt;
&lt;m:rMargin m:val="0" /&gt;
&lt;m:defJc m:val="centerGroup" /&gt;
&lt;m:wrapIndent m:val="1440" /&gt;
&lt;m:intLim m:val="subSup" /&gt;
&lt;m:naryLim m:val="undOvr" /&gt;
&lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"&gt;
&lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" /&gt;
&lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 1" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 2" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 3" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 4" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 5" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 6" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 7" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 8" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 9" /&gt;
&lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /&gt;
&lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" /&gt;
&lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /&gt;
&lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /&gt;
&lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" /&gt;
&lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /&gt;
&lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /&gt;
&lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /&gt;
&lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" /&gt;
&lt;w:LsdException Locked="false" Priority="37" Name="Bibliography" /&gt;
&lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /&gt;
&lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I normally stick to IT stuff on this blog .... but nice to have a change now and then.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I first heard about The Meat Wagon on BBC Radio 4’s Food Programme, &lt;a href="http://www.bbc.co.uk/programmes/b00shfqt"&gt;http://www.bbc.co.uk/programmes/b00shfqt&lt;/a&gt;, and have been following their web site at &lt;a href="http://www.themeatwagon.co.uk/"&gt;http://www.themeatwagon.co.uk/&lt;/a&gt; ever since.&lt;span style=""&gt;  &lt;/span&gt;They had a principle of just turning up in a London pub car park with very little notice so my chances of being nearby to enjoy the feast described here (&lt;a href="http://www.handtomouthblog.com/when-hand-to-mouth-met-the-meatwagon"&gt;http://www.handtomouthblog.com/when-hand-to-mouth-met-the-meatwagon&lt;/a&gt;) were slim.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Just before Christmas they suffered the theft of The Meatwagon itself, and located a temporary permanent location in New Cross called the #MEATEASY, &lt;a href="http://www.themeatwagon.co.uk/?p=491"&gt;http://www.themeatwagon.co.uk/?p=491&lt;/a&gt;, directly opposite The Venue where I remember stomping along to Carter The Unstoppable Sex Machine, rather a long time ago in my college days.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;With only a few weeks left to run in the venue, I just had to head over for my chance to taste allegedly some of the most authentic burgers and Philly Cheesesteak sandwich in the UK. I roped in a fellow foodie, Toby, to join the fun.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The New Cross venue is upstairs at the Goldsmiths Tavern, which is currently being renovated to reopen in April.&lt;span style=""&gt;  &lt;/span&gt;You walk through a side door, up a bare staircase with walls coated in fresh plaster and then enter a room with awesome levels of noise and energy.&lt;span style=""&gt;  &lt;/span&gt;It was absolutely rammed, and mostly with people about ten years younger than Toby and myself.&lt;span style=""&gt;  &lt;/span&gt;Fortunately no old fart filtering on the door.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;A couple of raffle tickets gave us our place in the queue for ordering, you can only order when your number gets called out and they won’t give you more tickets than the number of people present.&lt;span style=""&gt;  &lt;/span&gt;So if your friends are late, tough, and that helped us as another group swapped tickets, elevating us from 142/143 to 98/99, which meant food about 30 minutes earlier than expected.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Waiting for ordering was no chore, they serve very nice Meantime beers; the London Pale Ale and Union Amber Lager are very fine beers.&lt;span style=""&gt;  &lt;/span&gt;I was very impressed by the Union Amber Lager, a lager that really tastes of something.&lt;span style=""&gt;  &lt;/span&gt;It also gave us time to work out what we would order, a list which kept getting longer and longer as we gazed at the chalkboard menu.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;In the end we had a two Dead Hippy Burgers, a Philly Cheesesteak Sandwich, Mac and Cheese, Onion Rings, Chilli Cheese Fries and Buffalo wings with blue cheese sauce.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The Dead Hippy Burger was described as a ‘Big Mac on steroids’ and it fulfilled the billing wonderfully. A burger sliced in half, mustard inserted in the middle and then put back on the griddle, dressed with cheese and smothered in their own burger relish in a fantastic bun.&lt;span style=""&gt;  &lt;/span&gt;Soft and oozing, the only thing that could have made it better was a rasher of bacon.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The Philly Cheesesteak Sandwich was the star of the show for me, and I’m glad that as a first timer, I was given such a superb example of this delicacy. Chopped steak, soft peppers, and melted cheese overflowing the soft hot dog roll. The chilli cheese fries were an excellent companion with a good pickled chilli vinegar kick which I hadn’t expected, but which created a perfect balance.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The onion rings were crispy and light and Toby rated the Mac and Cheese (not my favourite item, school dinners to blame here). The only disappointing item was the buffalo wings, which had a very thin sauce which didn’t really give the spicy kick that I would have expected.&lt;span style=""&gt;  &lt;/span&gt;The blue cheese sauce helped but had too much work to do to lift them out of being, well, ordinary.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;This was definitely one of the best foodie experiences I’ve had for a long time, and a fantastic contrast to the standard restaurant or pub grub. A buzzing atmosphere, fine beers and the best Philly Cheesesteak Sandwich are only available for another two weeks (until April 16&lt;sup&gt;th&lt;/sup&gt;) so my advice is to get there now before it ends.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/144590.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/03/29/a-visit-to-meateasy--the-temporary-home-of-the.aspx</guid>
            <pubDate>Wed, 30 Mar 2011 07:32:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/144590.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/03/29/a-visit-to-meateasy--the-temporary-home-of-the.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/144590.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/144590.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Async CTP for DDD9 UK Developer Conference - slides and source code now available</title>
            <category>Development</category>
            <category>DDD</category>
            <category>Software</category>
            <category>Visual Studio Async</category>
            <link>http://geekswithblogs.net/twickers/archive/2011/01/30/microsoft-async-ctp-for-ddd9-uk-developer-conference.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2011/01/30/microsoft-async-ctp-for-ddd9-uk-developer-conference.aspx'&gt;http://geekswithblogs.net/twickers/archive/2011/01/30/microsoft-async-ctp-for-ddd9-uk-developer-conference.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;UPDATE 25th April 2011 - &lt;/strong&gt;Visual Studio Async CTP (SP1 refresh) now available.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx"&gt;http://geekswithblogs.net/twickers/archive/2011/04/24/new-visual-studio-async-ctp-refresh-now-works-with-vs2010.aspx&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Thanks to all the nice comments from people who attended my presentation at DDD9, and extra thanks to Jon Skeet, Mark Rendle and Mike Hadlow for coming on stage for the last ten minutes to help debate whether the Async CTP is the correct way to go to enhance C# 5.0.&lt;/p&gt;
&lt;p&gt;The presentation is available at Prezi.com &lt;a href="http://prezi.com/gysz5nohltye"&gt;http://prezi.com/gysz5nohltye&lt;/a&gt;, which I can recommend as a refreshing change to the more standard PowerPoint slidedecks.&lt;/p&gt;
&lt;p&gt;I've also uploaded all the code samples into a single ZIP file. You will need to install the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=18712f38-fcd2-4e9f-9028-8373dc5732b2&amp;amp;displaylang=en"&gt;Async CTP&lt;/a&gt; to be able to run them, and I would remind everyone that the current Async CTP is not compatible with either ASP.NET MVC 3 RTM or Visual Studio 2010 Service Pack 1 so you may need to use a test system of virtual machine to play with it!&lt;/p&gt;
&lt;p&gt;Source code - &lt;a href="http://www.tigernews.co.uk/blog-twickers/ddd9/AsyncSrc.zip"&gt;http://www.tigernews.co.uk/blog-twickers/ddd9/AsyncSrc.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again, thanks for all the positive feedback and the whole of the DDD team for putting on a fantastic conference for all the presenters and delegates.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/143703.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2011/01/30/microsoft-async-ctp-for-ddd9-uk-developer-conference.aspx</guid>
            <pubDate>Sun, 30 Jan 2011 21:25:31 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/143703.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2011/01/30/microsoft-async-ctp-for-ddd9-uk-developer-conference.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/143703.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/143703.aspx</trackback:ping>
        </item>
        <item>
            <title>Killer content for my Kindle - The Economist with no need for an iPad - yipeee!</title>
            <category>Software</category>
            <category>Hardware</category>
            <link>http://geekswithblogs.net/twickers/archive/2010/12/28/killer-content-for-my-kindle---no-need-for-ipad.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2010/12/28/killer-content-for-my-kindle---no-need-for-ipad.aspx'&gt;http://geekswithblogs.net/twickers/archive/2010/12/28/killer-content-for-my-kindle---no-need-for-ipad.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I admit it, I was jealous of someone's iPad. They were reading The Economist, for free, as they were a print subscriber.&lt;/p&gt;
&lt;p&gt;I'm a print subscriber too. However, I don't have an iPad or an iPhone, just an Android phone and a Kindle. As soon as I got the Kindle, I looked up how to get The Economist on it. £9.99 per month. Hmmm, twice as much again as my print subscription and I wanted to maintain the print subscription. No way Amazon.&lt;/p&gt;
&lt;p&gt;Fortunately some nice person wrote similar comments on The Economist subscription for Kindle, but added a very important additional nugget of information. There is no need for a Kindle subscription, as a print subscriber you can just use the free &lt;a href="http://calibre-ebook.com/"&gt;Calibre&lt;/a&gt; e-book creation tool.&lt;/p&gt;
&lt;p&gt;So I downloaded it, searched for The Economist online 'recipe', entered my login name and password (part of my print subscription) and off went Calibre to screen scrape every single article from the Christmas 2010 issue into a .mobi file, complete with front cover image and full indexing.&lt;/p&gt;
&lt;p&gt;It's wonderful. Truely wonderful. Every section individually indexed, with each article separated and all inline images preserved. It even feels wonderfully retro, back to the days when The Economist only used black and white images.&lt;/p&gt;
&lt;p&gt;So many thanks to the guys behind Calibre and The Economist recipe creators. Finally, I have the essential Kindle content that it's been crying out for.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 6 January 2011&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At first I thought I could only ever view the latest edition of The Economist that I had copied over.  Even though they were hand copied into differently named folders under documents only the latest edition appeared in the main list. Silly me, if you go to the end of the list of documents there is a &lt;em&gt;Periodicals&lt;/em&gt; folder, and in there are all the previous editions of The Economist. It just gets better.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/143251.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2010/12/28/killer-content-for-my-kindle---no-need-for-ipad.aspx</guid>
            <pubDate>Tue, 28 Dec 2010 14:16:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/143251.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2010/12/28/killer-content-for-my-kindle---no-need-for-ipad.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/143251.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/143251.aspx</trackback:ping>
        </item>
        <item>
            <title>Final ever Virtualisation for Developer slidedeck from NxtGenUG Cambridge</title>
            <category>DDD</category>
            <category>Development</category>
            <category>Software</category>
            <category>Virtualisation</category>
            <link>http://geekswithblogs.net/twickers/archive/2010/12/14/final-ever-virtualisation-for-developer-slidedeck-from-nxtgenug-cambridge.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/twickers/archive/2010/12/14/final-ever-virtualisation-for-developer-slidedeck-from-nxtgenug-cambridge.aspx'&gt;http://geekswithblogs.net/twickers/archive/2010/12/14/final-ever-virtualisation-for-developer-slidedeck-from-nxtgenug-cambridge.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks to Chris Hay, Allister Frost and the guys from NxtGenUG Cambridge for hosting an evening of virtualisation, and for their secretary Rachel Hawley for sorting out all the dates and details ;-).&lt;/p&gt;
&lt;p&gt;It was a good turnout so close to Christmas, obviously the bribe of home made mince pies got some people out on a cold wintery December evening.  Big thanks to Allister for driving me to the railway station to ensure I made the 22:29 train, made all the easier by quaffing a couple of very well kept pints of Adnams Broadside in The Punter after the presentation.&lt;/p&gt;
&lt;p&gt;For those who want the last ever slide decks, they're available here in PDF and PowerPoint format,&lt;/p&gt;
&lt;p&gt;  &lt;a href="http://www.tigernews.co.uk/blog-twickers/nxtgenugcambs/Virt4DevsPdf.zip"&gt;http://www.tigernews.co.uk/blog-twickers/nxtgenugcambs/Virt4DevsPdf.zip&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;  &lt;a href="http://www.tigernews.co.uk/blog-twickers/nxtgenugcambs/Virt4DevsPowerPoint.zip"&gt;http://www.tigernews.co.uk/blog-twickers/nxtgenugcambs/Virt4DevsPowerPoint.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And a final thanks to all the user groups who have hosted a Virtualisation or Hyper-V talk in the past two years, and gave me a chance to enthuse developers about virtualisation, &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Dot Net Developers Network, Bristol * (&lt;a href="http://www.dotnetdevnet.com/"&gt;http://www.dotnetdevnet.com/&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;DeveloperDeveloperDeveloper 7, Reading (&lt;a href="http://www.craigmurphy.com/blog/?p=1591"&gt;DDD7&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;NxtGenUG, Oxford * (&lt;a href="http://www.nxtgenug.net/Region.aspx?RegionID=3"&gt;http://www.nxtgenug.net/Region.aspx?RegionID=3&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;NxtGenUG, Birmingham (&lt;a href="http://www.nxtgenug.net/Region.aspx?RegionID=2"&gt;http://www.nxtgenug.net/Region.aspx?RegionID=2&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;DeveloperDeveloperDeveloper Scotland 2, Glasgow (&lt;a href="http://scottishdevelopers.com/category/events/developer-day-scotland-events/"&gt;2011 event details&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;DevEvening, Woking (&lt;a href="http://www.devevening.co.uk/"&gt;http://www.devevening.co.uk/&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;VistaSquad, London (R.I.P. 2010)&lt;/li&gt;
    &lt;li&gt;NxtGenUG, Southampton (&lt;a href="http://www.nxtgenug.net/Region.aspx?RegionID=9"&gt;http://www.nxtgenug.net/Region.aspx?RegionID=9&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;GL.Net, Gloucester (&lt;a href="http://www.gl-net.org.uk/"&gt;http://www.gl-net.org.uk/&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;NxtGenUG, Manchester (&lt;a href="http://www.nxtgenug.net/Region.aspx?RegionID=11"&gt;http://www.nxtgenug.net/Region.aspx?RegionID=11&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;London .NET User Group, London (&lt;a href="http://www.dnug.org.uk/"&gt;http://www.dnug.org.uk/&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;VBUG, Bracknell (&lt;a href="http://www.vbug.co.uk/events/default.aspx?region=Reading"&gt;http://www.vbug.co.uk/events/default.aspx?region=Reading&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;NEBytes, Newcastle Upon Tyne (&lt;a href="http://www.nebytes.net/"&gt;http://www.nebytes.net/&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;VBUG, London (&lt;a href="http://www.vbug.co.uk/events/default.aspx?region=London"&gt;http://www.vbug.co.uk/events/default.aspx?region=London&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;NxtGenUG, Hereford (&lt;a href="http://www.nxtgenug.net/Region.aspx?RegionID=10"&gt;http://www.nxtgenug.net/Region.aspx?RegionID=10&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;NxtGenUG, Cambridge (&lt;a href="http://www.nxtgenug.net/Region.aspx?RegionID=8"&gt;http://www.nxtgenug.net/Region.aspx?RegionID=8&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;* twice, for both Virtualisation for Developers and Hyper-V for Developers&lt;/p&gt;
&lt;hr /&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: larger;"&gt;&lt;strong&gt;Virtualisation for Developers  2008 - 2010 &lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: larger;"&gt;&lt;strong&gt;R.I.P.&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: larger;"&gt;&lt;strong&gt;Hyper-V for Developers 2009 - 2010 &lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: larger;"&gt;&lt;strong&gt;R.I.P.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt; &lt;img src="http://geekswithblogs.net/twickers/aggbug/143144.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2010/12/14/final-ever-virtualisation-for-developer-slidedeck-from-nxtgenug-cambridge.aspx</guid>
            <pubDate>Wed, 15 Dec 2010 09:40:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/143144.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2010/12/14/final-ever-virtualisation-for-developer-slidedeck-from-nxtgenug-cambridge.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/143144.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/143144.aspx</trackback:ping>
        </item>
    </channel>
</rss>