November 4, 2012

The last week I was lucky to be attending the Microsoft Build conference in Redmond. In this post I’ll be sharing my experience. In essence it comes to this: Although I was a bit disappointed by the level of the sessions, I learned a lot about the Windows 8/ Windows Phone 8/ Windows Azure platform and I’m convinced that this ecosystems has great potential and that gives us all the tools we need to build some great apps. (Good job Mr. Ballmer, I already sound like you)

The first day it became really clear that Microsoft is all in when it comes down to Windows 8 and Windows Phone 8. Part of their success will depend on the quality and availability of apps. This is why they really need the developers to work on this. To emphasize this, they gave all the conference attendees a Surface RT tablet and a Nokia Lumia 920, which I think is a great marketing move.

Windows App Store Apps They have really set the bar low for developing Windows App Store Apps. During some of the sessions it became clear that the choice between JavaScript and C#/Xaml should primarily be based on the background and experience of the developers. There should not be a huge difference in performance, but there are some things that one does faster than the other. That the performance of the JavaScript version should not be a problem anymore became clear during an excellent session about writing high performance JavaScript code. It Is amazing what kind of performance optimizations Microsoft’s JavaScript engine (Chakra) does. Most of the modern browsers do these kind of optimizations, but at the moment Chakra seems to be state of the art. During his TypeScript talk Anders Hejlsberg really convinced me in the need for better tooling when it comes to JavaScript development. TypeScript primary goal is to support better tooling for developing in JavaScript, by providing a type system on top of it. This makes it possible to do a safe rename of a variable, instead of doing a global find and replace, at which the wheels come off, according to Anders. Some JavaScript best practices like using Modules, normally requires quite some boilerplate code. TypeScript supports modules as a simple construct in its syntax, which generates code based on these best practices, which is great for productivity.

Azure These days it is hard to imagine an app that doesn’t need connectivity. Azure provides a scalable solution for creating connected services. However, the learning curve for creating these was quite high. Especially for developers that normally work on apps and don’t have a whole lot of experience programming services. Also, when deploying a site to Azure, there is quite some stuff to configure. There are situations when you don’t care about all this and just simply want to deploy a service or site to Azure. With Azure Web Sites it is now possible to deploy a site with minimal friction. One of the supported features is deploying a site by using GIT, this is similar to deploying to App harbor or Heroku.

Azure Web Sites make it easy to deploy a website, but there is also the notion of Azure Mobile Services. This makes is really easy to add connected services to your Windows 8 or Windows Phone 8 app. By using the new Azure Management portal a service can easily be added, which is just an endpoint. Also using the editor, storage tables can then be configured, which can be used from your apps. So no physical services project is needed, it is all configured by using the management portal. On top of this it is possible to configure triggers based on JavaScript on the storage tables. This can be used for sending push notifications for example.

Another new feature is Azure Galleries, which can be used to add additional services to your app, like MySQL or even MongoLabs. Galleries can be accessed through the Management Portal and after activating a service, it can be accessed from the Azure project.

Windows Phone The previous version of Windows Phone was the first version and although they really did a great job, it had a couple of problems. Probably the biggest weakness was the slowness and poor quality of some of the apps. When it comes to mobile devices a step back is done in terms of technology. The .NET CLR runs great on modern desktops, but the Just In Time compiling proved to be a problem on mobile devices, because this adds a couple of seconds of extra startup time for the apps. They solved this by compiling the app when it gets uploaded to the app store. They call this compiling in the cloud, which is using a technique similar to using NGEN. However, there are special cases in which all the apps have to be recompiled. Because of a framework update for example. Obviously, this would be less than efficient on the mobile device and could take a really long time. To work around this, they have introduced a new intermediate language called MDIL, which is basically another intermediate language in the step between MSIL and machine code. The difference between MSIL and MDIL however is that MDIL is mostly machine dependent. The stable parts of the code are compiled to machine code, but the parts that could change are left open and remain being JITT-ed on the device. This greatly improves the startup of apps and this is really noticeable on the Lumia 920.

Also in Windows Phone 7 applications where restarted by default when the user opened a new instance. This wasn’t good for the users perception of the phones responsiveness. Especially with apps like Facebook and Whatsapp this could be annoying. They introduced a new setting called Fast App Resume, which can be configured by the application. If this is enabled, instead of restarting the app, the app is suspended in memory and later resumed when the user reopens the app.

Culture I also got the feeling that the Microsoft Culture has really gone through a big change the last years. They seem to embrace open source more every year. It is really good to see technologies like Node JS, Hadoop, Mongo DB, etc. being supported by Microsoft, which gives us even more options for selecting the best solution.

I think Microsoft has successfully reached their goal for Build 2012, because as a developer and end user I’m really excited about the new platform. The Surface RT and the Lumia 920 really offer a smooth and integrated user experience. As a developer the bar to developing new apps is really low and at the moment I’m already doing some prototyping for a Windows 8 shopping app that I would like to showcase to one of our customers.


comments powered by Disqus