<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>writerus drivelus</title>
        <link>http://blogs.ipona.com/davids/Default.aspx</link>
        <description>What in heavens name am I doing?</description>
        <language>en-GB</language>
        <copyright>Dave Sussman</copyright>
        <generator>Subtext Version 2.5.1.19</generator>
        <image>
            <title>writerus drivelus</title>
            <url>http://blogs.ipona.com/images/RSS2Image.gif</url>
            <link>http://blogs.ipona.com/davids/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Moving the Blog</title>
            <category>writing</category>
            <link>http://blogs.ipona.com/davids/archive/2012/04/08/moving-the-blog.aspx</link>
            <description>While I haven't posted much recently, I've decided the time has come to redesign my site and incorporate the blog into the main site using a CMS. I trialed WordPress, then Orchard, then moved back to Wordpress.&lt;br /&gt;
&lt;br /&gt;
Anyway, the new blog is at &lt;a href="http://ipona.com/"&gt;my main site&lt;/a&gt;, although I'll keep this on up until such time as I get rewriting in place, but no new content will appear here.&lt;br /&gt;
&lt;br /&gt;
[Edit: Corrected URL and the bit about me deciding on Orchard. Which I did, but then changed my mind.]&lt;img src="http://blogs.ipona.com/davids/aggbug/8601.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2012/04/08/moving-the-blog.aspx</guid>
            <pubDate>Sun, 08 Apr 2012 14:47:00 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2012/04/08/moving-the-blog.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8601.aspx</wfw:commentRss>
        </item>
        <item>
            <title>GiveCamp UK 2011</title>
            <category>Software</category>
            <category>life</category>
            <link>http://blogs.ipona.com/davids/archive/2011/10/24/givecamp-uk-2011-again.aspx</link>
            <description>&lt;p&gt;This weekend was &lt;a href="http://www.givecamp.org.uk/" target="_blank"&gt;GiveCamp&lt;/a&gt;, a global weekend of charitable software development, organised in the UK by &lt;a href="https://twitter.com/#!/rachelhawley" target="_blank"&gt;Rachel Hawley&lt;/a&gt; and &lt;a href="https://twitter.com/#!/stack72" target="_blank"&gt;Paul Stack&lt;/a&gt;. No one really knew what to expect, least of all Rachel and Paul, who’ve put in a monumental amount of effort of the last few weeks to pull this event off. It’s a simple concept; talk to some charities to find out what software they need, get a bunch of geeks together and code for 48 hours solid to produce that software. Easy in concept, right?&lt;/p&gt;  &lt;p&gt;It all started rather chaotically; &lt;a href="https://twitter.com/#!/apwestgarth" target="_blank"&gt;Andy&lt;/a&gt; &amp;amp; I turned up early at UCL to help Paul, but he was caught up in traffic after having to go collect the T-shirts after a delivery screw up. We managed to get a name for our local contact at &lt;a href="http://www.ucl.ac.uk/" target="_blank"&gt;UCL&lt;/a&gt;, who knew as much as us – almost nothing; she knew where we’d be and what time we were allowed into set rooms, but beyond that most of the information was stuck in Paul’s head. But things did start happening over the afternoon; people drifted in, the tea arrived and a fridge for the drinks. Then Paul arrived with a car full of soft drinks, and disappeared again for another cash and carry run and we had enough drinks for most of UCL. In the end we had stacks left over, much of which went to a local homeless shelter; yet more giving.&lt;/p&gt;  &lt;p&gt;The room gradually began to fill, and then everyone decamped to the lecture theatre for the opening, then came back and coalesced into working groups for the projects. It was interesting to see how well this worked – order from chaos – with people spreading fairly evenly between the projects; 115 people, 9 projects. Herding cats has always been a phrase associated with getting developers organised, but this self-assembling worked and within an hour the project teams were formed; the team leads had been set before hand and knew a bit about their projects, but it was only during Friday night that everyone really found out the requirements. And this is the hardest thing, working with the charity representatives and setting only those requirements that could be achieved in 48 hours.&lt;/p&gt;  &lt;p&gt;I was originally a roving agent, free to help out on anything, but was royally stitched up by &lt;a href="http://twitter.com/plip" target="_blank"&gt;Phil&lt;/a&gt; who introduced me the &lt;a href="http://www.lawadv.org.uk/en/" target="_blank"&gt;Latin American Women’s Aid&lt;/a&gt; team, whose project was going to be Microsoft Access based, trying to replicate their entirely manual process of filling in complex paper forms. And not only was it Access based, but the backend database was going to be MySQL, to ensure the data was safe in their one Linux server. My history of Access development had re-surfaced, like an ex-lover who you look on fondly, but then realise why you left them. Still, good cause so dig in I did. The technology choices proved to be a major hurdle in a project like this; Access is good at many things, but multi-user development isn’t one of them. To solved this, PDD was used – Plate Based Development – (s)he who holds the plate has control of the master database. It was particularly difficult going back to a product I hadn’t used in 10 years. It was frustrating trying to bend Access to do things it just isn’t really designed for. At 12am I gave in and headed back to the hotel - I’m too old to be kipping on floors – but despite the tiredness I couldn’t sleep, so got the laptop out and carried on, then realised how much I’d forgotten.&lt;/p&gt;  &lt;p&gt;Back at the venue at 8am a few hardy soles were still coding, but sausage and bacon butties along with tea and coffee fuelled an influx of devs back to work and coding continued. We continued to fight Access and MySQL; we laughed, banged our heads in frustration and carried on. I even ended up remoting into my home server and downloading the original chapters from my old Access book so I could read up on how to do things, that’s how desperate it got. I made it until 1am.&lt;/p&gt;  &lt;p&gt;Sunday started much as Saturday had; tiredness and an overwhelming feeling of despair that we wouldn’t get our project finished. The challenges were just too much, but we carried on so that at least we’d have a start of something and LAWA would have a way forward. We didn’t finish and didn’t deliver; the only team to do so; it hurt. Code freeze was at mid-day and we were nowhere near.&lt;/p&gt;  &lt;p&gt;After a great hog roast in the sunlit quad, we had the wrap-up presentations where the teams showed their projects; some had yet to show what they’d done to their charity representatives, so it was nervous time for both sides. I sat and watched these with awe – really, it was awesome – seeing how much had been achieved within so little time. One charity representative started crying; they have three people and the web application they were presented with will save them a day per week of time. A day per week. Think about how much time that is and how important it is for a small charity. All the other projects were equally impressive – one was even already live – and one is a starting point for an open source CRM designed for charities; they delivered the first part and there’s a plan for future features. &lt;a href="https://github.com/GiveCampUK/GiveCRM" target="_blank"&gt;Go contribute&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So what have we learned over this weekend, the first GiveCamp in the UK. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There are a large number of people willing to give their time and effort into helping others. &lt;/li&gt;    &lt;li&gt;It’s amazing what can be achieved in a short amount of time. None of these projects had much planning, features were defined quickly and coding started. No fuss, no arguments – well, none that really mattered – we just got on with it. &lt;/li&gt;    &lt;li&gt;Charities have little in the way of resources; money, hardware, skills. Every little bit we do can have a big impact. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Would I do it again? Hell, yes. It was tiring, hugely frustrating, but exhilarating and fun. And it’s going to change lives. I think Paul and Rachel deserve a huge amount of thanks (Rachel will probably settle for Haribo) for pulling this off; no one knew how it was going to work, or indeed, if it would work at all, but work it did and very successfully so. Well done all.&lt;/p&gt;  &lt;p&gt;My photos for the day are on &lt;a href="http://www.flickr.com/photos/writerusdrivelus/sets/72157627965438422/" target="_blank"&gt;Flickr&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8600.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/10/24/givecamp-uk-2011-again.aspx</guid>
            <pubDate>Mon, 24 Oct 2011 12:01:45 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/10/24/givecamp-uk-2011-again.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8600.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Xunit and Moles</title>
            <category>.net</category>
            <link>http://blogs.ipona.com/davids/archive/2011/10/21/xunit-and-moles.aspx</link>
            <description>&lt;p&gt;This is more a reminder to myself, but I hope it’s useful to others. If you’re using &lt;a href="http://xunit.codeplex.com/" target="_blank"&gt;xunit&lt;/a&gt; for unit testing and &lt;a href="http://research.microsoft.com/en-us/projects/moles/" target="_blank"&gt;Moles&lt;/a&gt; for isolation/mocking then you may run into a problem using the moles test runner, whereby you receive an error stating “error: missing filename”. &lt;/p&gt;  &lt;p&gt;For example, consider the following in the build file:&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;moles.runner /x86      &lt;br /&gt;  /runner:"d:\tools\xunit\xunit.console.clr4.x86.exe"       &lt;br /&gt;  "d:\project\foo.dll"       &lt;br /&gt;  /args:"xml d:\project\foo.xml"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;While a similar command works at the command line, in the runner it fails. The &lt;a href="http://xunit.codeplex.com/discussions/270098" target="_blank"&gt;answer, as supplied by Heather&lt;/a&gt;, is to supply the arguments separately:&lt;/p&gt; &lt;font face="Consolas"&gt;moles.runner /x86    &lt;br /&gt;/runner:"d:\tools\xunit\xunit.console.clr4.x86.exe"     &lt;br /&gt;"d:\project\foo.dll"     &lt;br /&gt;/args:"xml" /args:"d:\project\foo.xml"&lt;/font&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8598.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/10/21/xunit-and-moles.aspx</guid>
            <pubDate>Fri, 21 Oct 2011 06:56:13 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/10/21/xunit-and-moles.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8598.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Simple.Data is Simple; type conversion isn&amp;rsquo;t</title>
            <category>.net</category>
            <link>http://blogs.ipona.com/davids/archive/2011/09/29/simple-data-is-simple-type-conversion-isnrsquot.aspx</link>
            <description>&lt;p&gt;I’ve recently started using &lt;a href="http://blog.markrendle.net" target="_blank"&gt;Mark Rendle’s&lt;/a&gt; rather lovely data framework &lt;a href="https://github.com/markrendle/Simple.Data" target="_blank"&gt;Simple.Data&lt;/a&gt;. There’s a really big clue in the name; it’s very simple to use. Eg:&lt;/p&gt;  &lt;pre&gt;&lt;font color="#000000"&gt;var db = Database.OpenConnection(ConnectionString);&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;db.Zones.FindByZoneID(ZoneID);&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;That’s it; everything is dynamic and database columns are mapped to properties automatically. Searching by columns is easy as FindBy can be followed by any column (or multiple columns, just put And between them) or using lambdas. Dead easy.&lt;/p&gt;

&lt;p&gt;The one downside Simple.Data has is a lack of a way to define how the types are mapped; there is plenty of built-in intelligence, but what, for example, if you need a char column mapped to a byte array? As yet, Simple.Data doesn’t have a way of doing this (char columns are mapped to strings), although there’s an &lt;a href="https://github.com/markrendle/Simple.Data/issues/50" target="_blank"&gt;issue raised&lt;/a&gt; suggesting a way it could be done. For the moment though it can’t be done within Simple.Data.&lt;/p&gt;

&lt;p&gt;If you’re in this situation with POCOs that have types different from the underlying data store (or more accurately, different from the standard type conversion), then you could pick the solution I’ve chosen to get me over this, which is to create two POCOs: one with the Simple.Data types and one with the custom types. I then use &lt;a href="https://github.com/AutoMapper/AutoMapper" target="_blank"&gt;AutoMapper&lt;/a&gt; to map from one type to another, using a custom type converter to convert the appropriate columns. It’s a bit more work, but is fairly simple to achieve; first set up the mappings:&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;Mapper.CreateMap&amp;lt;string, byte[]&amp;gt;().ConvertUsing&amp;lt;StringToByteArrayTypeConverter&amp;gt;();
Mapper.CreateMap&amp;lt;byte[], string&amp;gt;().ConvertUsing&amp;lt;ByteArrayToStringTypeConverter&amp;gt;();
Mapper.CreateMap&amp;lt;PanelSD, Panel&amp;gt;();
Mapper.CreateMap&amp;lt;Panel, PanelSD&amp;gt;();&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The type converters are simple, as AutoMapper provides an interface to implement:&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;public class StringToByteArrayTypeConverter : ITypeConverter&amp;lt;string, byte[]&amp;gt;
{&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;     public byte[] Convert(ResolutionContext context)&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;     {&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;         return Encoding.ASCII.GetBytes((string)context.SourceValue);&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;     }
}&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;public class ByteArrayToStringTypeConverter : ITypeConverter&amp;lt;byte[], string&amp;gt;
{&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;     public string Convert(ResolutionContext context)&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;     {&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;         return Encoding.ASCII.GetString((byte[])context.SourceValue);&lt;/font&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;     }
}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;And yes, I’m aware I’m using ASCII encoding here; in my case I know my data is ASCII; your mileage may vary.&lt;/p&gt;

&lt;p&gt;Then fetch the data and map it:&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;List&amp;lt;PanelSD&amp;gt; panelssd = Database.Default.Panels.All().ToList&amp;lt;PanelSD&amp;gt;();
&amp;lt;Panel&amp;gt; panels = Mapper.Map&amp;lt;List&amp;lt;PanelSD&amp;gt;, List&amp;lt;Panel&amp;gt;&amp;gt;(panelssd);&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I’ll obviously map the other way around when writing to the database. In my case both the read write can easily be abstracted and there’s actually only one object where I need the mapping, so it’s of minimal impact.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8597.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/09/29/simple-data-is-simple-type-conversion-isnrsquot.aspx</guid>
            <pubDate>Thu, 29 Sep 2011 14:43:35 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/09/29/simple-data-is-simple-type-conversion-isnrsquot.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8597.aspx</wfw:commentRss>
        </item>
        <item>
            <title>I applaud the IE team</title>
            <category>Web</category>
            <category>Standards</category>
            <link>http://blogs.ipona.com/davids/archive/2011/09/16/i-applaud-the-ie-team.aspx</link>
            <description>&lt;p&gt;Yes, you read that right. &lt;/p&gt;  &lt;p&gt;The IE team have been doing good work over the last couple of years, bringing IE into the standards world, but I never thought I’d hear myself saying I applaud them. I always had this niggling feeling that something would get in the way; I’m a FireFox user, but that’s mainly because of Firebug, which I prefer to the IE Developer Tools; there’s not much in it, but it’s enough. The browser itself, well, I’m not that bothered which browser I use to be honest; sure there are small differences, but in most day-to-day browsing it makes no difference. Development is another matter, where all of the browsers are required, and IE still causes issues here; only minor ones for IE9, but more so for older versions, and that’s the big issue we have when creating sites – cross-browser and backward compatibility.&lt;/p&gt;  &lt;p&gt;With the previews of Windows 8 though, we have another issue – the Metro Browser, which as has been &lt;a href="http://blogs.msdn.com/b/b8/archive/2011/09/14/metro-style-browsing-and-plug-in-free-html5.aspx" target="_blank"&gt;discussed on the Building Windows 8&lt;/a&gt; blog, doesn’t support plugins. The Desktop Mode, which is also IE10, does support plugins, but not when used in Metro-Mode. It’s a brave move and one that I applaud. Too long have the IE team been the whipping boy of browsers, a situation they created themselves and one they’ve acknowledged, but this move is clever and astute; it places them firmly at the forefront of standards, where HTML5 and JavaScript rule. Admittedly they have Desktop Mode to fall back on, and not supporting plugins there would be suicide, but still, it’s a major leap for any browser not to support plugins at all; no Silverlight, not Flash, no PDF; that’s pretty ground-breaking.&lt;/p&gt;  &lt;p&gt;So what does this mean for your browsing experience? Any site using a plugin will just show the default content; in the case of Silverlight or Flash sites it’s a “download now” message, which actually does no good, since even if you download and install the plugin it won’t work in the Metro browser. You can however, just tap an icon and select “Use desktop view”, where the standard Desktop Mode browser is launched with the same URL. If the plugin is installed you’re good to go, otherwise you download and install as normal. Where this model falls down I think is that there’s no real notification; users won’t be aware that the plugin won’t work, even if installed, and the option to switch to the desktop view is a user choice, two clicks away. Personally I’d like to see more pro-active involvement, where if a plugin is detected an indicator makes it obvious that content isn’t being displayed and that desktop view can be used. This is going to be very common; you’d be surprised how ubiquitous Flash is.&lt;/p&gt;  &lt;p&gt;What does it mean for the developer experience? Simple: standards. You want a web site or application that works everywhere, then HTML and JavaScript are your choices. Look into client frameworks that make things easy: &lt;a href="http://www.google.co.uk/search?q=learn+html5" target="_blank"&gt;HTML 5&lt;/a&gt;, &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt;, &lt;a href="http://knockoutjs.com/" target="_blank"&gt;Knockout&lt;/a&gt;, &lt;a href="http://documentcloud.github.com/backbone/" target="_blank"&gt;Backbone&lt;/a&gt; and forget about proprietary plugs. Sensible web developers have been building these core skills for years, but if you haven’t, now is the time to start.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8596.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/09/16/i-applaud-the-ie-team.aspx</guid>
            <pubDate>Fri, 16 Sep 2011 11:40:12 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/09/16/i-applaud-the-ie-team.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8596.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Keep calm and carry on</title>
            <category>.net</category>
            <category>Software</category>
            <link>http://blogs.ipona.com/davids/archive/2011/09/15/keep-calm-and-carry-on.aspx</link>
            <description>&lt;p&gt;Since the first videos of Windows 8 showing a Javascript based UI, many .NET developers have been in a panic, fearing for their future. Is .NET dead, is Silverlight dead? To some degree this confusion still reigns, despite the &lt;a href="http://www.buildwindows.com/" target="_blank"&gt;BUILD&lt;/a&gt; conference; there’s a mixed message about the future of apps and I think we’re all glowing in the metro-light a little dazed and confused. The fact is that Windows 8 is Windows; it will still run everything that Windows 7 does and still supports .NET and your .NET apps, in Desktop Mode. &lt;a href="http://dougseven.com/2011/09/14/i-know-what-youre-thinking-and-youre-wrong/" target="_blank"&gt;Doug Seven has a good balanced comment on Windows 8 applications&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What this means that your existing skills are still viable; if you’re building desktop apps for your business then you can continue to build them; Windows 8 isn’t going to be here for a year or so and even then the uptake will follow a familiar pattern, especially in corporations: ignore, evaluate, wait for SP1, delay because of disruption &amp;amp; training, etc. Consumer uptake will be quicker, as will the enthusiast and developer market, and tablets may well fuel that; Windows 8 is now a viable OS for tablets; compelling even. The upshot is that it’ll be a while before any of your application skills are out-of-date and you’ve plenty of time to transition.&lt;/p&gt;  &lt;p&gt;And talking of transition, how do we see applications becoming metro-like? The fact is that most apps just aren’t suitable to be metro-style apps – full screen and touch enabled – and given that’s not the hardware your corporation has, that’s fine. For those that need the metro look, well, that depends; a WinForm app won’t transition, there’s no route here; it’s not a no-though road, just a never ending road without any exits. WPF and Silverlight will transition, although how much work is involved is app dependent; the keynote demos showed a Silverlight app with minor changes working as a metro-style one; your mileage may vary. Web apps? Well, they’re browser dependent; they won’t be metro-apps, but they’ll work just fine in IE10. Probably. Probably? Yes, if you’re using the full metro interface in Windows 8, IE doesn’t use plugins. Guess what Silverlight is? That’s right, a plugin (as is Flash), so Silverlight apps won’t work in the full metro browser (at the moment; that may change, this is a preview after all). This means that if you’re building web apps which rely on Silverlight, they won’t work in Windows 8 browser mode; they’ll work find in desktop mode – IE10 in desktop mode supports plugins – but your users may have a jarring experience and have to switch modes. I was hoping to see native XAML support in the browser, but then my technology predictions have never been very accurate.&lt;/p&gt;  &lt;p&gt;So what does this all mean if you want to write Windows 8 Metro Mode applications? Well, most .NET skills are transferable: VB/C#, XAML, ASP.NET, Javascript; these are all key. WinForms? Start thinking about your future; much of app development is the same, it’s just the UI framework you’ll need to learn. The big question is web applications, where clearly HTML5/JS is the future; while you can continue to write Silverlight applications and they’ll work fine in Windows 8, they won’t run in Metro Mode, so if you’re building a publicly available website that uses Silverlight (or Flash for that matter), you may need to think about how that’ll work. What the mix of application modes does show is that backend services become key; that’s your route to transitioning more easily, by providing a thin skin for your UI.&lt;/p&gt;  &lt;p&gt;I don’t see much of a panic and I like what I’ve seen so far. In fact I’m excited by what I’ve seen. I’ve at least one future application for a client that the Metro Mode interface is a perfect fit for.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8595.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/09/15/keep-calm-and-carry-on.aspx</guid>
            <pubDate>Thu, 15 Sep 2011 09:48:32 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/09/15/keep-calm-and-carry-on.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8595.aspx</wfw:commentRss>
        </item>
        <item>
            <title>RSS versus Twitter</title>
            <link>http://blogs.ipona.com/davids/archive/2011/06/22/rss-versus-twitter.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://twitter.com/helephant/" target="_blank"&gt;Helen&lt;/a&gt;feels her RSS feeds are stale, mentioning that many feeds have dropped off due to twitter. This is probably true, twitter has become a micro-blogging medium, although I suspect the general effort of blogging is a factor too. But it raises an interesting question: where do you get your learning from? How do you keep up-to-date? I still use blogs for this; it’s generally a morning thing, catching up on what people are doing, what’s been released, and so on. For me, twitter is the stream of consciousness, the office banter in the background; a place to join in the conversation and ask questions. While it does produce links to blogs, that tends to be a select few and really, if you want content it has to be a blog; twitter just isn’t designed for content, pointers to content yes, but not the content itself. But, the people I follow on twitter aren’t always the same as those whose blogs I follow; there’s a crossover, but it’s not a big one.&lt;/p&gt;  &lt;p&gt;So, what’s my list of reads? Here’s my &lt;a href="http://ipona.com/misc/google-reader-subscriptions.xml" target="_blank"&gt;OPML file&lt;/a&gt;. Not all of it is tech related; a few musicians, a few things I find funny, several that haven’t blogged in a long time, but I keep on the list, just in case. But it provides me with a few things to read each morning.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8592.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/06/22/rss-versus-twitter.aspx</guid>
            <pubDate>Wed, 22 Jun 2011 17:52:55 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/06/22/rss-versus-twitter.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8592.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The move to Windows Home Server 2011</title>
            <category>Software</category>
            <link>http://blogs.ipona.com/davids/archive/2011/05/20/the-move-to-windows-home-server-2011.aspx</link>
            <description>&lt;p&gt;Windows Home Server is a great product, if under-marketed and not that visible. When it was originally launched, the idea that you could just plug in any number of different sized drives and have all the storage pooled to one big space was highly attractive. Add that to a simplified interface and you’ve a perfect home / small business storage server.&lt;/p&gt;  &lt;p&gt;With the 2011 release however, Microsoft controversially remove the Drive Extender, the technology powering this drive aggregation. It caused a lot of angry comment and I’m one of those people that thing it’s a bad move; this was the one piece of WHS that made it viable for non-techies. However, given that from what I see, WHS isn’t really used outside of the enthusiast market, so maybe Microsoft’s stance is correct; is it really worth their effort maintaining a technology that wasn’t 100% working, when the target audience can get around it easily enough? Their stance was that large drives are cheap (in the UK a 2Tb drive is roughly £50) and that if you need more security then you buy a RAID system. This misses the point really; RAID systems are expensive, at least comparatively so compared to discs, plus complex for people to understand; a lot more complex than just plugging a new drive into your existing WHS box and having the space appear.&lt;/p&gt;  &lt;p&gt;I’d decided I wasn’t going to upgrade my WHS server, but after a power outage which left the boot drive dead – it wouldn’t even spin up – I decided to install WHS 2011. I’ve plenty of large discs and really don’t have that much data; excluding the DVDs I could fit it all on a 500Gb drive. As it happens, the existing disc controller I was using supports hardware RAID, but I’d decided to swap it out as I’d lost faith in it; discs randomly being disconnected and being fixed by a reboot had left me wondering what else it might do. I toyed with buying another RAID controller and using the RAID functionality on that, but decided that I’d need to spend more money than I wanted to.&lt;/p&gt;  &lt;p&gt;So on went WHS 2011 and many reboots later it’s up and running and the data is being restored. Am I going to miss the drive extender? Possibly; certainly the ability to just unplug a drive and replace it with a new one will be missed, but with 2 * 2Tb and 2 * 500gb that won’t happen for a while. Also, though the new admin interface is shinier, it’s a little more though provoking because you have to think about storage locations; with no single aggregated storage pool, you’re in charge of the data – more work, but more transparent, nothing is hidden; the drive is just a normal drive, so it does make it easier to move the drives to other machines.&lt;/p&gt;  &lt;p&gt;The biggest problem was during installation; early on in the process you’re asked for your location and keyboard layout, for which I selected UK. Later on you’re asked for the admin password, and mine contains sever special characters. After rebooting I couldn’t log in, until it occurred to me that the language bar had been visible during installation and still had US on it; so even though I’d been asked for my keyboard layout, the input layout isn’t changed until after you set the admin password; thus the special characters didn’t match those on my keyboard.&lt;/p&gt;  &lt;p&gt;I’m still not convinced that the move to remove the Drive Extender was s sensible idea, but I think I now come to accept it.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8591.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/05/20/the-move-to-windows-home-server-2011.aspx</guid>
            <pubDate>Fri, 20 May 2011 09:16:38 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/05/20/the-move-to-windows-home-server-2011.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8591.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SQLBase .NET Provider Problems</title>
            <category>.net</category>
            <category>Software</category>
            <link>http://blogs.ipona.com/davids/archive/2011/04/01/sqlbase-net-provider-problems.aspx</link>
            <description>&lt;p&gt;This post is on the off chance that someone else may find it useful; I doubt many people are using some of the old technology detailed, but you never know.&lt;/p&gt;  &lt;p&gt;My arch-nemesis, on and off, over the last few years has been SQLBase. A client I work with uses this as both the development platform and database for one of their products, a product I interface with. They have long term plans to rewrite their product, but time and money dictate it stays where it is; if it ain’t broke …&lt;/p&gt;  &lt;p&gt;The biggest issue is that we’re pegged to an old version of the drivers, version 8.5, which has a number of problems, one of which hit me recently when trying to extract blob data from their database. The code is pretty simple, something like this:&lt;/p&gt;  &lt;pre&gt;string sql = "SELECT Image FROM IMAGES WHERE ID=1";
 
using (SQLBaseConnection conn = new SQLBaseConnection(cs))
using (SQLBaseCommand cmd = new SQLBaseCommand(sql, conn))
{     conn.Open();     using (SQLBaseDataReader rdr = cmd.ExecuteReader())     {         if (rdr.Read())         {             return BytesToImage(rdr[0]);         }     }
}&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Fairly innocuous, yes? But, and this is a documented issue, you receive an exception and the closing brace of the using statement, indicated a “long operation has not finished” (or words to that effect). A string of tests indicated that version 9 of the drivers fixed this issue, but when implemented in my solution, the error re-surfaced. More tests and I found that with both versions of the drivers, you can get around the problem by changing the if to a while. Yep, this works:&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;while (rdr.Read())&lt;/font&gt; &lt;/p&gt;

&lt;p&gt;The if causes the exception, the while doesn’t. Weird, huh. There’s no side effect in my code, since the query will only return a single row. Hours and hours of testing, and yet a simple solution. It just goes to show that sometimes you have to try odd things, and sometimes you get lucky.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8589.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/04/01/sqlbase-net-provider-problems.aspx</guid>
            <pubDate>Fri, 01 Apr 2011 09:15:15 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/04/01/sqlbase-net-provider-problems.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8589.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Multiple Monitors</title>
            <link>http://blogs.ipona.com/davids/archive/2011/03/08/multiple-monitors.aspx</link>
            <description>&lt;iframe style="margin: 0px 0px 20px 20px; width: 120px; float: right; height: 240px" marginheight="0" src="http://rcm-uk.amazon.co.uk/e/cm?t=ipona-21&amp;amp;o=2&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B002RGCI32&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;The eternal quest for monitor space took a step forward today, as I took delivery of a Kensington Universal Multi-Display Adapter. I already have a couple of 20” monitors, the excellent &lt;a href="http://accessories.dell.com/sna/products/displays/productdetail.aspx?c=us&amp;amp;l=en&amp;amp;s=dhs&amp;amp;cs=19&amp;amp;sku=320-4687" target="_blank"&gt;Dell UltraSharps&lt;/a&gt;, running at 1600x1200; only one is a newish one, two are fairly old, but they are superb screens, and perfect for developers with their high vertical resolution. My PC is in a cupboard, a couple of metres behind me, to minimise noise, so the monitors are connected via 5 metre DVI cables, both from a single nVidia GT950 graphics card. I’ve long been wanting to plug in the third monitor, which occasionally gets used for the laptop, but the machine is old(ish) so I’d need to find older graphics cards to fit the older slots, then get another long DVI cable, and so on. &lt;/p&gt;  &lt;p&gt;Until now. &lt;a href="http://twitter.com/#!/CAMURPHY" target="_blank"&gt;Craig Murphy&lt;/a&gt; mentioned he’d just got one of the Kensington adapters and that it worked well for him, so given the price, I ordered one too and it arrived this morning. A simple, easily openable package (ie, not one you need industrial strength shears to open), with the adapter, a very short USB (mini USB for the adapter) cable, and a DVI to VGA converter; you need a DVI cable as the adapter itself has a female DVI socket. Plugged into Windows 7 the drivers were automatically loaded, windows recognised the monitor and set the default resolution; 1600x1200 again. That’s it, nothing else, it just works.&lt;/p&gt;  &lt;p&gt;I had been a bit worried about the cable length issues, given the PC is far away, but I plugged the new USB cable into the USB ports on the back of the old monitor, which is itself plugged into a powered USB hub, in turned on the end of a 5 metre USB cable to the back of the PC. I needn’t have worried, since everything works seamlessly. If you’re after a second monitor and don’t want the trouble or cost of upgrading graphics cards, then this is a very cost effective route. It has virtually no impact on the PC resources (this is a Core2 Duo 2.4 with 4Gb memory running Windows 7 23-bit), and I see three DisplayLink processes running, totalling 25Mb, and occasionally 1% CPU usage).&lt;/p&gt;  &lt;p&gt;Now &lt;a href="http://twitpic.com/47f1tl" target="_blank"&gt;I have a great three monitor setup&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.ipona.com/davids/aggbug/8586.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dave Sussman</dc:creator>
            <guid>http://blogs.ipona.com/davids/archive/2011/03/08/multiple-monitors.aspx</guid>
            <pubDate>Tue, 08 Mar 2011 11:49:48 GMT</pubDate>
            <comments>http://blogs.ipona.com/davids/archive/2011/03/08/multiple-monitors.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ipona.com/davids/comments/commentRss/8586.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
