BUILD 2012 – Day 1 (Part II)
In a previous post, I highlighted BUILD’s first day keynote main topics, and on this post I would like to focus on my highlights from the professional sessions of the day.
By the way – all BUILD sessions are available for free on Channel 9.
BUILD Session – Bringing Existing C++ Code to Windows Store Apps
Ever since the previous BUILD last year, along with the completion of C++ 11, C++ is having a kind of renaissance and is making a comeback to the center of the development stage. While Windows Store application developers have a variety of development languages to choose from, including JavaScript/HTML and C#, C++ is there along with all of its advantages including performance, cross-platform code and more. This session described the various restrictions C++ developers face when targeting the WinRT platform (which is required to participate in the Windows Store). My main takeaways from this session were:
- Not all Win32 and COM APIs are available when targeting WinRT, and usage of these APIs will bar your application from the Windows Store. There are several ways to check the usage of these APIs, but the best one would be using the Windows Application Certification Kit which issues a list of related warnings.
- Standard ISO C++ is fully supported in WinRT. This means that if you have an existing code-base which utilizes only the cross-platform ISO C++, it would work under WinRT.
- Bringing legacy C++ code into WinRT is definitely a viable path. While this code would usually not be driving the UI (view) of your application but only the background services, it is certainly possible to have a C++ UI with DirectX.
BUILD Session – Core Technologies for Games
Windows 8 has plenty of technological options for authoring games, and this session attempted to explain the various options and where they excel at:
- JavaScript/HTML – Windows 8 can natively host JavaScript/HTML applications on top of the Windows Web App (WWA) host, allowing for easy ports of existing HTML games which are usually suitable for social games, casual games, arcade games etc..
- XAML framework with C++ or C# code behind – While C++ targets WinRT directly, and C# (or VB.NET) targets a subset of .NET, both can use XAML as the view definition and drive its operation.
- CoreWindow with “Your app framework” on top – various game frameworks utilizing DirectX directly can be authored and used to develop performance hungry games such as First Person Shooters, Action games etc.. Examples of these 3rd party game engines include “Havoc”, “Unity” and more.
A nice pointer I got from this session is that while in classic development we would like to utilize our CPU to a maximum, power efficient CPUs change the picture. On power efficient CPUs, a thermometer monitors the CPU temperature and if it gets too hot (due to intense utilization) the thermometer would instruct the CPU to lower its clock frequency, resulting in slower performance… Think about it the next time you stress out your tablet’s CPU. 🙂
BUILD Session – Key Technologies for Shopping Apps
Authoring (good) shopping applications is not an easy task. There are a lot of issues to consider including the user experience, handling of large data sets, user authentication, payment, push notifications and much more. This session went over each and every one of these issues to consider and provided best practices for Windows Store shopping applications. Some of these practices include:
- Prefer using a native application UI over embedding an iFrame to your shopping site – integrating the application with the Windows 8 look & feel will provide much more value to the customer and much better integration with his other applications via sharing and so on. Users will come to expect a certain behavior from these apps, and embedding an iFrame to your site will provide a less than optimal experience. If your user wanted to browse your site, he would have used a browser…
- Windows 8 provides the Web Authentication Broker which handles all the User Authentication on your behalf against various identity providers including Microsoft accounts, Facebook, Google, Twitter and more. Leveraging the broker means that your application does not have to worry about identity. PayPal provides an SDK which utilized the Authentication Broker API to easily incorporate PayPal payments in your app.
- Sharing is a powerful way to achieve user engagement with your app. In Windows 8 with the Share charm, you don’t have to worry about how to share or with who. Instead, all you need to worry about is what to share and Windows will take care of the rest. The easiest thing to share is a URL, but shopping apps can also be share target which receives share items allowing them to analyze the content and maybe even offer a price for the same or substitute product.
- Printing directly from a tablet still feels weird (have you ever printed from Android or iOS?) however it is a key feature for some shopping sites (invoices, vouchers, etc.). Windows 8 allows easy print integration which enables some interesting business scenarios.
BUILD Session – Connecting C++ Apps to the Cloud via Casablanca
Project Casablanca is an incubation project for providing cross-platform C++ libraries which allow:
- Easy communication with support for HTTP, TCP, WebSockets and UDP.
- Serialization in JSON and binary formats.
- Azure storage access.
- Azure service bus access.
- Azure service hosting.
- On-premise service hosting.
- Visual-Studio integration.
And again – all of the above in C++! During the session, a cool demo composing a poker application was authored completely in C++ including a RESTful service, RESTful client, Azure storage and more. For those of you who have written C++, you know how hard this can be, but Casablanca enables achieving it relatively easily. Not to mention that one of its goals is to do this in a cross-platform manner…