I was lucky enough that my company paid for myself and a couple of my colleagues to fly all the way out to sunny Los Angeles and attend the Microsoft Professional Developer Conference last week. The idea of the conference is that Microsoft get a bunch of software people in one place and announce / explain all the cool new things they’ve been working on and what they’ll be releasing next.
Let me start by saying that while I’ve made a career out of building software on Microsoft’s platform with their tools, I’m not a die-hard fan who thinks the Microsoft way is the one true way. I like to think I’m relatively open minded and can see the benefits of one platform over another. As such I tend not to bother with Microsoft beta software and try not to listen to hype about not-yet-released products and technologies. I prefer to wait until things are released for real and then see what they’re like. I could cite many instances over the years where things haven’t lived up to the expectations but on the whole Microsoft get there in the end.
Anyway, having spent a few days listening to various sessions discussing what tools and technologies Microsoft will be releasing early next year I’ve come away very impressed. I’ve worked on all kinds of software over the years from small standalone applications to web apps that have had to scale across a few servers, so have found myself spending a lot of time writing similar code over and over again that can be quite tricky (such as multi-threaded code that can handle all the various exception cases that are easily missed). What came across loud and clear was that, aside from Azure which I’ll mention in a minute, a great deal of support is being added to the languages and tools to make multi-core software development a lot easier to write. There are tools to make multi-threaded debugging easier to visualise and understand, simplified ways to handle concurrent processing without really having to think about locking, blocking, race conditions and so forth (clever people than I at Microsoft have done that for you). One of the most interesting things I saw was AppFabric which makes scaling services across multiple servers a whole lot easier than it currently is handing a distributed cache and so forth.
Azure – which is Microsoft’s cloud computing platform – was the big thing Microsoft were talking about at the PDC. It just so happens that my company have been working with Microsoft to spread out some of the calculations that one of our products performs to the cloud and are hoping to eventually run it across 10,000 nodes in time, so my colleague who’s been lucky enough to work on the project knows all about Azure. While Microsoft are somewhat behind the curve in terms of cloud computing for the masses, I’m very confident from what I’ve seen and heard from the inside and out that Azure is going to be a real game changer. Anybody who’s used development tools across platforms knows that Microsoft produces the best ones and Azure nicely plugs into these tools to the point where a Visual Basic programmer will be able – without having to be an expert in writing and deploying highly scalable software – to write an application like Facebook that can scale to incredible proportions at the click of a button. You’ll be able to take a standard web application and without a great deal of work deploy it to Azure and suddenly you don’t have to worry about the cost and maintenance of servers.
And if you’re not a Microsoft person that’s fine, you can run LAMP on Azure and I was rather surprised to see Matt Mullenweg appear during the keynote speech and talk about how you can run WordPress on Azure (in fact Oddly Specific, from the people behind LolCats, runs on Azure in that configuration). I found this the most surprising thing of all – that Microsoft isn’t doing its usual platform lock-in trick. Clearly under Ray Ozzie’s guidance Microsoft’s moving in new directions.
Of course Azure isn’t for everyone. Most of the companies I’ve worked at wouldn’t be at all happy letting their data live out in the cloud on Microsoft’s servers and don’t have the complex calculation requirements that the cloud can help with (i.e. being able to pay for the processing that you use rather than buying a load of servers you only use a tiny percentage of the time). But I can see people like the next Facebook, financial institutions, research institutes, NASA and so forth will lap it up. I just think of when my colleagues formed their start-up the first thing they had to do was buy a load of kit and that cost money. If they were starting next year instead all they’d need would cheap computers to develop on, no office or server room, deploy to the cloud, only pay for what they use, and they’d be able to do it with all the knowledge of developing on the Microsoft platform already. Like I say, I think it’s going to be a game changer. And as an added bonus I’ll finally be able to build John’s Dead Man’s Switch and know that in the incredibly unlikely event it becomes popular, it’ll be able to handle it!