BUILD 2013 - Windows 8.1 and WinRT
- Chris Wallace
- Thu Jun 27 2013
So I'm partially through writing up my next post on where I'm at with the GameDex app, the past week has seen development go through leaps and bounds (there's no better feeling when one massive blocker gets stomped out and the development just accelerates again). So I was going to talk about those developments, but then a little conference happened and everything changed. I am of course talking about Microsoft's build conference.
Build is a massive developer conference and an exciting time for Microsoft developers, the amount of tech demos and showcases of the latest development products is so vast that you can't help but be inspired, and I for one couldn't help but stop coding and start writing down all the possibilities I could do with these announcements.
So, of course, Microsoft's first big emphasis at build has been Windows 8 and Windows Store apps, so this naturally was my first port of call (there's also a lot of ASP.net and Windows Azure talk but I'll save that for another day).
The initial talk by Mr. Ballmer himself went over the upcoming launch of Windows 8.1 (formerly named Windows Blue). The initial feedback from consumers has been good but not great, the main emphasis they wanted was their start button which Microsoft has taken into account and restored it back to the desktop (as well as being able to boot to the desktop). Now this isn't going to be a review of 8.1, frankly there's not enough on the surface to critique and all I've seen has made the experience better (and I understand the start button talk, but I'm fairly sure 99% of keyboards have had a start key for quite a while now).
I think Microsoft has missed a trick however by not emphasizing more on the developer possibilities with the new App APIs, it seems to boast about the UI which (if you're listening Microsoft) people seem to either like or despise. What about that golden school rule of "it may look pretty, but what does it do?", there's some seriously good stuff they've added to these apps and they really should make more noise about them. So today I'm going to talk about some of the API improvements Windows 8.1 Runtime has introduced and what excites me as a developer (and what I will be implementing myself!)
Media Element Control: Video support is something WinRT already had but the player framework was slightly finicky and could be too customized (it's great you can skin your own player but what about keeping it simple). Well as part of Tim Heuer's Xaml talk, he announced there's a new Media Element control which handles all the video playback functionality straight out the box.
The biggest complaint many developers had (myself included) was that WinRT doesn't have a date picker control (even though there was one with WinJS...). In the past 8 months, it's been a matter of having to build your own picker or invest in Telerik controls. Thankfully this has all come to an end as Heuer has announced the built-in date and time pickers for WinRT 8.1!
Search Box Control: Search is already available within RT, however, there's been a heavy emphasis on using the Windows search pane in Windows 8 to integrate with your apps. That's great on the surface but it's not exactly intuitive when you want immediate search within your Xaml views (for example filtering a List/Gridview), with 8.1 there will now be a built-in search control for XAML views to allow instant search within your apps.
Contact and Calendar API: The advantage of Windows 8 is that it ties heavily with a Microsoft account, which means it ties heavily to your Microsoft account's Calendar and Address Book, with 8.1 developers can now utilize these two additions within your apps. For me this is a fantastic opportunity to integrate with my own app and allows me to make the app a lot more social and link data with your calendar (after speaking to a friend she suggested having release dates for upcoming games stored in your calendar, 12 hours later I found out Windows 8.1 Runtime can talk to your calendar, W00tW00t!).
HttpClient: System.Net has had HttpClient for while now, and now it's come to the Windows.Web.Http namespace. So within WinRT apps we can now use getAsync() getStringAsync() and getBufferAsync() from remote Uris. And furthermore, it also supports caching! So apps can now cache data (including remote images) straight from the App. This will improve performance for so many Apps reliant on Web Content (including myself).
Bing: Stay with me here, yes there's a stigma with Bing vs Google, but it's expected that Microsoft embraces their own tech, and honestly, it's clever. Windows 8.1 will have tighter integration with Bing allowing apps to essentially speak to Bing to get more information. In some respects, you could really Bing as reincarnated Encarta than just a search engine, and it's free content. You don't need bespoke web services to get massive repositories of data, it's all reachable using one Bing API.
Local Webview Content: Xaml is great, but some things need Html, the Webview in WinRT was essentially IE in a box, but there was no way to show local HTML content. That's now changed with an update to Windows 8.1 which not only treats the Webview as a regular Xaml control (no longer does it poke its nose over the App bar or Windows pane) but can also load local Web Content. This is a fantastic opportunity for developers as Html5 based components can now be embedded within an app locally (I for one have a particular idea for this functionality which I will be prototyping imminently).
Now what... This is just a start of some of the new things 8.1 offers and only scrapes the surface (I'm still watching build videos right now and a million ideas are being jotted down on anything I can find). If you're unaware of build I implore you to checkout channel9 which has videos of all the keynotes for streaming and download.
So where does this leave the GameDex app? Well I'm at a crossroads as to where to go, I could continue per usual with WinRT 8 development, however the benefits of 8.1 are so vast that you can't help but jump in with the new stuff ready for public release, then again these features could be subject to change and it would be painful for the final release to arrive at only realise it's built on one Jenga block which has been removed from the final release. So although this process may fail horribly and in a few months I may look back in regret, but I've decided to work on the GameDex in parallel across 8 and 8.1 preview.
Sounds dumb right? Well, there's plenty of work to be done in 8 but along the way, there may be 8.1 features I need to implement (like the new date picker), and at the rate, I'm building it's more than likely this app will become an 8.1 release. So how is the thing going to work? With the wonders of Git.
Using Git you can create separate branches of changes. So it makes sense to use one branch for 8 development (per usual) and then a new separate branch for 8.1 development. Yes, there will be parts of the source code which will need to exist on both branches, which is where cherry picking comes into place, choosing which files from which branch needs to be merged across.
Of course, the idea is by the time the 8.1 final release that both branches become one again, but for the time being this means I can still work on the core components in 8, whilst also implementing some of the awesome new things added to 8.1.