Archive for June, 2008

The Vote Of No Confidence In The Entity Framework

Wednesday, June 25th, 2008

It appears as though the Microsoft M.V.P’s that were called upon to advise on the technicalities of the forthcoming Entity Framework hit a little bit of a roadblock.

When I say “a little bit”, it seems as though Microsoft just point blank disregarded their warnings and recommendations in regard to creating OR mappers. It’s probably the first time I’ve seen this kind of scenario end with the technical advisors posting a warning and a general vote of no confidence.

I’d be lying if I didn’t say I felt a little disappointed that after making steps in the right direction and asking domain specialists for advice, that Microsoft entirely disregarded the advice of the specialists they consulted resulting into what seems like an unusable shipping product.

I’ve not attempted to use the entity framework in and form, but the technical criticisms in the vote of no confidence are quite explicit, and as a developer who makes extensive use of OR/M, if those criticisms are accurate (which is very likely) I’d certainly treat the entity framework with the same unfortunate disregard.

At least nHibernate isn’t broken!

The Dangers Of Pushing The "Cloud" To Market

Saturday, June 21st, 2008

The word cloud has been thrown around for years to describe the internet, but there’s a growing trend at the moment to launch services that seem to embody actual “cloud / grid computing”.  This movement to some extent is just the logical extension of the rich web applications that have gained popularity as part of the “web 2.0″ epidemic of increasing bandwidth and remote server horsepower.

The two obviously notable solutions in this area are Microsoft’s Live Mesh, which was announced and put into a public beta / technical preview a few months ago (Ray Ozzie’s second attempt to solve the problem of distributed device synchronisation after the canned “.NET My Services”) and Apples Mobile Me.  I’m normally a somewhat critical Microsoft supporter (not an apologist), I’ll put that on the table now, however I suspect that Apples service is likely to get more traction due to iPhone 2.0 support and it’s forthcoming lower price point (at the very least in the UK, possibly elsewhere).

Both of these services effectively offer the same thing, centralised data storage and device synchronisation, Apple offer what they call the “ suite of web applications” and Microsoft offer the “Live Desktop” as the online interface to this storage pool, both offer mobile clients, both offer desktop clients for both computing platforms.  They’re effectively the same service, it’s Exchange Home Edition with Outlook Web Access enabled, for want of a better example.  It’s Microsoft and Apple desperately trying to get between the desktop and Google Apps.

But that’s really what I have a problem with.  The great benefit of grid computing is the utilisation of large amounts of CPU resource to accomplish large tasks very quickly, not data warehousing your users personal data.  It’s seemingly something that both of these “cloud computing” solutions have entirely missed and in reality, they’ve supplied Active Sync and Exchange for the home user combined with the three million iDrive, YourDrive, MyDrive, HisDrive services that became popular before the Web 2.0 bubble in about 2001-2002 and effectively managed to shut themselves down after being used solely for piracy.

I don’t actually believe that the world internet infrastructure is ready for these types of services yet because of the data ownership implications and I feel that these services have been designed almost inside out in nature.  Data synchronisation is nice, I’m sure everyone would agree with that, but by forcing these solutions to market before we’re in an ecosystem where users can host their own file-identity-synchronisation services out of the home in a process as simple as signing up to something like Mobile Me or Live Mesh, we’re setting a precedent.  That precedent says that it’s ok to surrender your personal data to a giant third party data store in the sky, and honestly this is not ok

This is a choice the vendors are making, and in my single honest opinion, an exceptionally bad one.  Apple could just as easy focus their energy into making a Mac Mini derived small home device that provides the same functionality as Mobile Me, that plugs in to a home router.  I don’t mind them offering a Mobile Me like service for people that don’t want to be responsible for the keys to their home, but I sure as hell have a problem with both them and Microsoft forcing people to give up their homes in the name of data synchronisation.

This is another case of a good idea that people will enjoy, poorly implemented and pushed out to market, when the effort should be in enabling a permanently connected high speed internet for the masses, and the engineering of devices that allow the user to control their own resources.  I know I sure as hell don’t want to loose all of my data because of some sloppy code and an exploit or two.  I’m sure companies of the size of the big players in this market can secure data, but walking around with a target on your back is never a good idea.  Cloud computing should be about applications and not data, do not be told otherwise.  They bring the technology and knowledge and you bring your data to that party, not the other way around.

As a footnote, I think both implementations look pretty slick and offer good functionality, albeit nothing above and beyond synchronising to a mobile device with a HDSD card in it (my current solution involves a large memory card, a HTC Touch and ActiveSync to effectively reproduce this functionality).  Online identity, sharing and data stores are the future, lets just not let people lock us in to a poor aggressive implementation.  Vote with your wallet people.

Now Playing: Between The Buried And Me – The Decade Of Statues

C# Developers Toolbelt

Sunday, June 8th, 2008

There’s a very good argument for saying that the thing that makes or breaks a new programming language is actually the tools the work with and around it, rather than language features themselves.  If you ask the average programmer to guess the percentage of language features of their language of preference that they used on a daily basis, or even ever, I suspect many of them would respond somewhere in the 25-30% range. 

Programming languages these days are big.  By that I mean, programming frameworks these days are big.  Most people tend to not just use the language natively, but the selection of a preferred platform tends to be based on the features of the dominant framework available for that language.  As a simple statement this is neither here nor there, but it illustrates the point that the development environment, for a large proportion of its users, makes a language.  I’d argue that Visual Studio made Visual Basic popular, and that without it, it would probably haven’t stood a chance against Turbo Pascal and Delphi, even with all the clout of Microsoft.  So we rely on tools, and in honour of tools, here are a list of tools I find invaluable whilst developing in .NET.

JetBrains ReSharper

This is the king of all visual studio plug-ins.  Imagine it as a kind of, interactive FX cop while you work.  It offers background compilation, refactorings, stream lines existing visual studio functionality and basically makes you code better.  It teaches you things you didn’t know about the language and helps you improve your code quality proactively rather than retrospectively.  The biggest programming crutch known to man, and a descendant of the IntelliJ IDE for Java.  JetBrains have trials available and if you drop my name in you can get an improved trial period and a bit of a discount on purchases.  If I could take just one tool home, it’d be this.

Lutz Roeder’s Reflector

Ever thought that there was a bug in someone else’s compiled assembly?  Fancy a crawl around the internals of the .NET framework?  This is the tool for you.  Reflector translates the IL of a compiled assembly back in to C# and lets you poke around inside.  It’s very much read only, but if you ever think there’s a bug in something you’re not supposed to touch, you can prove it and code around it with the help of this excellent tool.

System Internals / Microsoft Debug View

I’ve written about the usefulness of this little application in the past.  Debug View lets you view the Windows Debug output stream in real time.  That’d be anything written using System.Diagnostics.Debug.WriteLine or the more traditional C / C++ equivalents.  Allows you to monitor an application built in a debug state in real time.  Perfect for debugging Windows services or other troublesome applications that you need to monitor whilst running during development.

Visual Studio Remote Debugger

If you have Visual Studio you actually already have this (the link above is to setup information).  It’s hidden away in C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger (replace the visual studio version as applicable) and it allows you to attach an instance of Visual Studio to an application running on another machine.  Again invaluable if you’re writing distributed services and deploying to test servers, this application allows you to run your service or application on another machine, then connect to it using the visual studio debugger and break and step through your code as though it were on your local machine.  Great for when you deploy something to an integration test server, it fails, and you just can’t work out why without digging through the code in real time.

MbUnit and Rhino Mocks

Two for one, an xUnit derived unit testing framework, and Ayende’s mocking framework.  Unit test with confidence and unit test often.

ANTS Profiler

ANTS profiles your .NET applications at a level I’ve not seen in any competing products, giving you a line by line, method my method breakdown of execution time and code bottlenecks along with all the stats you could ever want to generate on a piece of code.  You really can use this to find horrible hidden performance issues in your code and fix them.

Honourable Mentions


Everyone has their own favourite notepad replacement utility.  This is mine.  I used Context for years but this is just better in every way..

Pro C# and the .NET 3.5 Platform

The only “giant programming bible” I’ve ever been able to read like a book.  Grab an E-book so it’s searchable and you’ll probably get more information than you could Google for.

These are just my personal preferences, and applications that I use on a daily basis.  Give a few of them a try and you’ll see your productivity increase and hopefully, your code improve.

Selecting a mostly portable notebook

Thursday, June 5th, 2008

I commute to and from London very frequently and the trains, whilst high tech and reasonably pleasant, can lead to very long journeys (especially in times of maintenance).  Because of this frequent travelling I’m practically forced to carry a laptop around with me for the sake of my sanity.  I tend to enjoy watching DVDs, playing late 90s and early 2000s PC games, and spiking and prototyping software ideas to pass the time on these train rides (which can stretch up to 4 1/2 hours some Sunday evenings).

Now, my laptop is a Dell Inspiron 5160, picked up in 2004 when the phrase “desktop replacement” in a laptop made my mind think of good things.  It has a desktop Pentium 4 processor (with hyper threading, for all the good that did) clocked at 2.8Ghz, 1.25Gb RAM running XP Pro and a 15.4″ screen (to give a sense of scale).

At the time, those were very respectable (desktop replacing!) specs.  The downside is that it weighs as much as the desktop it pretends to replace.  9.7lbs to be precise, which if I recall is something like 5Kg give or take.  Add to that the power of a chunky laptop power supply and most weekends I feel as though I’m carrying a small child from the north to the south of London.  Not fun.

I came to the conclusion (prompted by back ache) that I should probably look into replacing my monolith with something designed to, dare say, be portable.  Anyone that watches PC hardware will be aware of the waves that the current range of sub-notebooks have been making in the IT press so I figured I’d take a closer look.

The options seemed to be the much publicised Asus EeePC, the forthcoming HP Mininote and the HTC Shift (and other similar large smart-devices) as far as ultra portables went.  These devices are really, really cool.  Eight to nine inch displays, 700Mhz to 1.2Ghz VIA processors and chipsets and weighing just over 1Kg.  They really are tiny little devices and perfect in the cheep connected device market, but unfortunately the ability to run Visual Studio and to watch DVDs that I’ve just bought (ripping isn’t really relevant as I tend to buy things at train stations) were deal breakers.  I toyed with the idea of buying an external DVDRW drive to keep alongside a tiny sub-notebook, but at that point the rice would be approaching about £400-£450 and it was starting to feel like I’d really be ending up at the wrong end of the price-performance curve.

I’d definitely recommend anyone that just needs a really portable Internet / office device to check out reviews of the HP Mininote, it should be out this month and I was very very tempted by it, it’ looks fantastic and seems exceptionally powerful for it’s form factor.

I abandoned the idea of picking up a sub-notebook and decided to take a look into the very small regular notebooks on the market.  I’d had a very positive experience with he 11″ T-Series Sony Vaios‘ in the past  Their build quality is second to none, specs are brilliant and they weigh just 1.25Kg.  Unfortunately you also pay £1500+ for the privilege of a tiny notebook of comparable spec to a £400 15″ notebook.  If you’ve got the budget then I’d recommend one in a second, but they’re a far cry from the £200 EeePCs.  I figured I could stretch up to 12″ and still manage to pick up a very light, fully featured laptop and to be honest was quite surprised at the lack of products on the market.  I suspect this could partly be due to the recently (as in yesterday) announced new reference designs for sub notebooks , or perhaps companies are waiting on the Intel Atom CPU announced late last month, but either way the range of notebooks on the market at that size and weight point is remarkably sparse.

That said, there are some options.  Acer have a 12″ offering in the shape of the Aspire 2929.  an Intel Core Duo based machine with 1-2Gb RAM, Vista and about 100-200Gb of disk space, depending, it seems, on who you buy it from.  It’s part of their clamshell range apparently co-designed with Ferrari.  I’m guessing that’s their excuse for the laptop looking like utter shit, but on paper, the specs read ok, for about £500-600, vendor dependant.

I was still unsure, so I’d decided to go to PC World to see if I could just get a feel for the notebooks available,  It’s pretty hard to get a handle on the weight and size of something from raw specifications and websites so I figured it’d be time well spent.  I walked in the door, and on the second display stand as I entered the store was a tiny 12″ notebook branded “Advent”, which the smart or unlucky amongst us recognise as one of PC Worlds own brand product lines.  Looked good though, visually.  The build quality is no Vaio, but the price tag isn’t either, at only £450.  Core 2 Due 1.83Ghz, 2Gb RAM, 160Gb Hdd.  On paper, the specs were actually excellent for the price point.  Figured I’d ask for a full spec and pulled out my phone to start googling.

Interestingly there were very few mentions of the machine online.  Meaning it’s either very very new, or that the people that buy PC World own brand laptops don’t have too much to say about them online, none the less the spec sheet was quite revealing.  It appears that this laptop, almost £200 cheaper than the Acer Aspire 2929, and light years better looking, is practically the same machine underneath.  It uses exactly the same Intel chipsets, exactly the same onboard graphics, has exactly the same set of features (3 Usb and a Firewire port, onboard card reader, identical audio chipsets) and is to all intents and purposes just a nicer looking and cheaper version of the 2929.  Oh, and it weighs only 1.8Kg

I still don’t trust PC World hardware, so I went home to do a bit of extensive googling and slept on it, returned the next day and picked up one of the notebooks with Vista Premium.  That was two days ago.  I’ve spent the following few evenings tuning up Vista and installing software, and in all honesty, the machine really seems to fly, and at this point I’d go as far as recommending it.

I guess the moral of the story is that you never know what you might find lying about PC World.  But moreover, if you’re looking for a nice portable notebook on a reasonable budget without sacrificing power, PC World appear to have them in stock in the form of the Avent 4401, filling a curious hole in the market that other manufacturers appear to not want to compete in.

As a quick tip, due to PC World being… somewhat strange, if you’re interested in buying one of these machines, purchace it online and select “Collect @ Store” and you’ll save about £50 on the store price of the notebook.

Do with this information what you will.