On-ramp Ahead to the Windows Phone 7 Series Game and Application Development

So you want to get in the game, or even make the games?

Here’s a summary of what’s been announced and the impending activities which will come to a head (for the first phase at least) with major revelation sessions at Microsoft’s Mix10 conference starting March 15th 2010.

Microsoft came out of the gate about Windows Phone 7 Series (or WP7 for short) at MWC, for the first time publically showing off the new UI.

Since then Microsoft’s Joe gave a more intimate demo on Microsoft’s Channel9.

Charlie Kindel (a man leading the charge at Microsoft) has indicated that .NET, Silverlight & XNA are key technologies to WP7 development.  I’ve long been aware of the Silverlight angle on mobile device and had some preview access to mobile possibilities, so I can see that this is a great direction.  I hope Microsoft brings out the right caliber (and readiness) of tools that developers need – developer tools (and I don’t mean Blend) have been sorely lacking for Silverlight; it will be April 12th before the first of developer design tools for Silverlight are made available with Visual Studio 2010.

There’s been a video of the Platformer game running on Windows Phone 7, with the notion that someone can create a game with largely shared code which can run on Windows 7, WP7, Xbox & Zune.

At the Game Developer Conference this coming week, Microsoft may well be talking about XNA developer for WP7.

Microsoft has just announced the abstracts for the WP7-related sessions at Mix10 (starting the following week) and  Microsoft Canada’s Joey deVilla has a great summary of them.

It has been indicated that access to the keynote and sessions for Mix10 to not require attendance at Mix.

I’m aiming to live blog the MIX keynotes and follow up on what’s announced about WP7 from the sessions.

Be sure to follow the tweets and blog posts of these guys at Microsoft:

Andre Vrignaud: www.ozymandias.com / @ozymandias

Christian Schormann: electricbeach.org / @cschormann

Shawn Hargreaves: blogs.msdn.com/shawnhar / @shawnhargreaves

Todd Brix: windowsteamblog.com/blogs/windowsphone  / @toddbrix

Anand Iyer: www.artificialignorance.net/blog / @ai

Michael Klucher: klucher.com / @mklucher

In Canada keep an eye out here and on the Canadian Developer Connection blog.

Advertisement

Strike I for Microsoft-Developer Relations on Windows Phone 7 Series

I want a Windows Phone 7 Series OS Mobile Phone 7 Phone Windows phone thingy…

I’ll also be lined up to develop application for it too.

However, from the Mix10 blog for the Mix10 event where the development story is scheduled to be officially unveiled (with my highlighting):

Join us at MIX10 and be among the first to learn how to build applications and games for Windows Phone 7 Series. We’ll introduce you to the development platform, show you how to work with the Windows Phone 7 Series development tools, and give you a tour of the Windows Phone Marketplace. All MIX10 attendees will receive access to the Windows Phone 7 Series development tools and have access to a dedicated track on the Windows Phone 7 Series platform that runs throughout the event.
MIX10 attendees will get exclusive free developer support for the Windows Phone 7 Series development tools. Don’t miss this unique opportunity to be among the first to learn about Windows Phone 7 Series.

The first highlight shows a lose-lose statement.

Either:

Microsoft risks shunning the hordes of non-Mix-attendees (who didn’t go for many potentially important reasons), by delaying their access to the tools.

or

Microsoft risks shunning the Mix-attendees because everyone else will undoubtedly get the tools very quickly (if not immediately) if Microsoft is serious about gaining developer support in a short time.

 

So it really seems like an attempt to get Mix attendance up.  Given that the discount deadline has been extended many times, it seems that getting people to these events is increasingly difficult.

Microsoft has streamed the PDC and Mix keynotes for the last 3 or 4 events now and made session videos available in about 48 hours.  Unless this is about to change, the real benefit of going to these events is business networking.  I’d like Microsoft to publish the keynote and session access numbers.

I’ll be watching and blogging the keynote(s) live.  I’d love to go, but my priorities don’t lead me there this year. 

Update: I’m going!  I’m gonna squeeze it in – so may live tweet and blog later.

The second highlighted statement (about support) is fair enough, but again, if Microsoft is serious about getting developer output in less than 6 months, it will need to offer up something – I’d suggest additional mobile-specific support incidents for MSDN subscribers.

As I mentioned in January, I’m also expecting to see a free ‘Microsoft Visual Phone Developer 2010 Express Edition’, if Microsoft really wants to give this the ground swell it needs for a proper launch.

All I want for Mix-mas this March at Microsoft Mix10

So the seasonal gift giving has now passed, but I’m hoping for a few good prezzies for Microsoft’s Mix conference.

  • Windows Mobile 7 rocking a .NET ‘Mobile’ (not compact) Framework programmable Silverlight 3+ interface, Xbox mobile games (like Zune games programmable with the free XNA Game Studio), Zune Interface, Media Center extender abilities, and a marketplace with no publishing gauntlet for music, games and apps, and real devices available by Oct 2010.  A full marketplace in Canada is a must!
  • ‘Visual Mobile 2010 Express Edition’ – I don’t need this since I’ll have VS 2010 Premium/Ultimate, but Microsoft needs to release a free mobile development tool (with Silverlight designer support presumably) that will launch 100,000 apps
  • Decent replacement for the Live Framework (which was withdrawn) including free Bing Maps API usage up to a decent ceiling
  • Consistent mobile and desktop Live Services and Framework experience
  • Live Mesh Release (with better-than-hopeless user documentation)
  • Better free and on-ramp deal pricing for the Windows Azure Platform
  • Microformat & Live Clipboard SDK for IE 9.  Ray Ozzie blogged and tinkered (including a subsequent SDK and runtime) about ‘Wiring the Web’ with a ‘Live Clipboard’ using microformats back in 2006.  Skip to the present day and go to this Microsoft Canada blog post this week promoting my Mix session proposals (thanks Joey) and look at the Mix-powered Microformat tool that appears at the top left ;-)  Accelerators for IE8 just didn’t do it.
  • Oh, and of course for one or more of my Mix sessions (see below) to be selected by the public through the voting that ends tonight! 🙂

Not too much to ask for right?

 

Looking to learn more about the Windows Azure Platform, Silverlight, Windows Touch or Windows Identify Foundation?

If you’d like to see these sessions in person at Microsoft’s Mix 2010 conference or the recordings that will likely be made available for free later on, please vote for the sessions before January 15th 2010, by going to the site, adding the 3 sessions to you ballot and submitting it

Quick Tip to Retain ASP.NET dynamic Recompile Changes During Azure Debugging

One of the major benefits of the Windows Azure SDK and Windows Azure Tools for Microsoft Visual Studio is the ability to operate an Azure Development Fabric and Azure Development Storage emulation on your local machine.  Pressing F5 in a Visual Studio Azure project deploys and runs your application in an environment emulating the real Windows Azure.  This is somewhat similar to the ASP.NET Development Server that starts up and somewhat emulates IIS (or other ASP.NET hosting environment) when you debug an ASP.NET application.

This is great, but can also create an efficiency bottleneck during development.

If you are debugging a regular ASP.NET application and you need to make changes, in many cases you can stay in debug mode;  you can edit an ASPX page or other assets (including CSS) and simply refresh the already running web browser instance to see you changes.  In the case of the ASPX page having changed, it is dynamically recompiled when you next access it.  This works because the ASP.NET Development Server is pointing at your development files.  This efficient cycle is lost when you start debugging with the Windows Development Fabric…

When you debug (or run) an Azure project in Visual Studio, your application is built into a package that is ‘deployed’ to the local Azure emulation.  The emulation therefore uses its own copy of the files.  Making changes to the file in Visual Studio while debugging, only updates the copies under Visual Studio’s control – they are neither repackaged nor redeployed.  The Azure Development Fabric has no idea that they’ve changed.  So, you have to stop debugging, re-launch, wait for the new package to build and deploy, and then get back to the same place in the application.

Here’s what likely amount to a satisfactory workaround before you are ready for the emulation stage:  create a mock for the Data Access Layer that deals with Windows Azure Storage and debug your project outside of the Azure Development emulation.  You lose role instance configuration, but you can go back to using the ASP.NET Development Server.  You may also lose the Azure diagnostic logging – but you can mock that too.

Note:  If you are using SQL Azure, for the most part you can use a regular local SQL Server in place.

I’m not suggesting you mock the interfaces to the Azure APIs directly.  Your application may well have a Data Access Layer which (when following best practices), will likely have an interface.  I suggest you create an object to mock this using the same interface or perhaps use one of the available mocking frameworks.

To facilitate the selection of the polymorphic DAL objects (real or mock) in one code-base you’ll likely want to make your application smart enough to know if it’s running in the Azure environment (Microsoft or local emulation) or not.  My previous post on the topic explains this idea.

You’ll need an interface that suits the operations of your DAL such as this example (where WallMessage is defined elsewhere)…

image

a mock object (such as the example shown below) and a real object (not shown) that both implement the interface…

image

and then calling code that first selects the mock or real object to use based on environment detection……

image

after which you go on to use properties and methods on the selected interface oblivious to the implementation being used.

This is just a basic example and as mentioned, there are some very good Mocking frameworks as well as Dependency Injection frameworks available that ease this kind of setup in large or complex solutions.

The code shown is from the sample Silverlight application I provide (including source code) in my Azure Deployment Guide, already used by 100s of people to successfully deploy their first Azure application.

I hope you found this tip useful 🙂 If so, and you’re reading this on January 15th 2010 then please vote for my Mix 2010 conference submissions today! :)  Thank you.

Looking to learn more about the Windows Azure Platform, Silverlight, Windows Touch or Windows Identify Foundation?

If you’d like to see these sessions in person at Microsoft’s Mix 2010 conference or the recordings that will likely be made available for free later on, please vote for the sessions before January 15th 2010, by going to the site, adding the 3 sessions to you ballot and submitting it

Quick Tip for Scaling a Silverlight Canvas On Browser Resizing

UPDATE: For the easy route, consider placing your canvas in a ViewBox control which is in the Control Toolkit for Silverlight 3 and is included in the Silverlight 4 runtime.

In December I produced an an easy-to-follow Azure Deployment Guide which has so far been successfully used by hundreds of people to deploy an application to Windows Azure.  It also came with a sample Silverlight application.

That application includes the capability to scale an inner canvas (while maintaining aspect ratio) in response to the outer grid and control being resized as a result of the browser window being resized by the user.

In the following screenshots you’ll notice that the header/footer text stays the same size but the green canvas area scales to fit.  You’ll also notice that it centres horizontally and aligns to the top.

image

image 

image

To achieve this we need to do a few things…

image

In the Silverlight UserControl’s XAML, make sure no Width and Height are set on the UserControl element (note that the d:DesignWidth/Height are there for design-time sizing only).

Note the name of “LayoutRoot” give to the top-most element.

 

image

Give the canvas a starting size which represents 100%.

Note the name “Wall” given to the canvas we want to scale.

Note the Scale and Translate transforms added to this canvas.

 

image

In the HTML page, the Silverlight control needs to be sized to 100% of the available width and height (and this needs to suitably apply all the way to the root of the HTML page).  You may do this with CSS styling or some other means.

 

image

In the Silverlight UserControl’s code-behind find, register for the resize event on the LayoutRoot object (which is a Grid in this case).

 

image

React to the resizing of the Silverlight control.

This code figures out whether there is more space to scale horizontally or vertically, and applies the lower of the two in both the X and Y direction (preserving aspect ratio) using the named transforms.

The calculations make use of ActualHeight and ActualWidth from the containing space.

The code also horizontally centres the canvas in the containing space.

I say ‘containing space’ in this case, because the Canvas to be scaled is in the middle of 3 rows and the single column in the parent Grid.

For the full code, check out the sample application with the Azure Deployment Guide.

I hope you found this tip useful 🙂 If so, and you’re reading this on January 15th 2010 then please vote for my Mix 2010 conference submissions today! :)  Thank you.

Looking to learn more about the Windows Azure Platform, Silverlight, Windows Touch or Windows Identify Foundation?

If you’d like to see these sessions in person at Microsoft’s Mix 2010 conference or the recordings that will likely be made available for free later on, please vote for the sessions before January 15th 2010, by going to the site, adding the 3 sessions to you ballot and submitting it.

Quick Tip for Detecting Azure Environment During Your Development Cycle

Given the Azure tools and portal for Visual Studio 2008, there are 4 likely modes of execution during your development cycle:

  1. Testing in Visual Studio (with no Azure environment)
  2. Testing in Visual Studio using the local Azure Development Fabric/Storage
  3. Staged on the Azure portal
  4. Deployed on the Azure portal

#1 mostly applies when you have an application that you are porting, or you are development components that may become part of the application.

At times you may find it useful to know if you are running inside or outside of the Azure environment (i.e. 1 vs. 2/3/4).

image

Providing you have included the appropriate assembly reference, you can use this API to detect your environment and take appropriate action while developing and testing your components at the stages above.

Looking to learn more about the Windows Azure Platform, Silverlight, Windows Touch or Windows Identify Foundation?

If you’d like to see these sessions in person at Microsoft’s Mix 2010 conference or the recordings that will likely be made available for free later on, please vote for the sessions before January 15th 2010, by going to the site, adding the 3 sessions to you ballot and submitting it

Just 2 days Left to Vote for Mix 2010 sessions on Azure, Silverlight, Windows Touch and WIF

Voting ends on Friday for sessions at Microsoft’s Mix 2010 conference.

I’ve submitted 3 session proposals – see the details – around Windows Touch, Azure & Silverlight which were all accepted into the voting list.  My session on Windows Identity Foundation has already been scheduled for the renowned high-level DevTeach 2010 conference at Microsoft’s Canadian HQ this March.

If you’d like to see my sessions in person at Mix or the recordings that will likely be made available for free then please vote for them.

You can find a list of all sessions available for voting  (a list that periodically shuffles its order), or go directly to my sessions here.  You can pick a total of 5 sessions to vote for.

Quick Tip for Hosting Services for Silverlight on Windows Azure

The Silverlight and Azure Tools for Visual Studio 2008 SP1 both provide convenient means to get going with these respective technologies.

Windows Azure is a good place to host services that your Silverlight application may call, as well as the web application that contains the Silverlight application itself.

However, if you’ve tried to get this to work, then you may have encountered as issue.

Let’s say you’ve added a Web Role to your Azure application to host the Silverlight application, and you want to add a Silverlight-enabled WCF Service to the website.  You may have tried using the Add New Item dialog to select the “Silverlight-enabled WCF Service” like this…

image

Unfortunately (for reasons I may go into in the future), the Azure platform isn’t going to correctly publish this WCF service in the web role, and your Silverlight app may be able to talk to the service just fine in your development environment, but not when you deploy to Azure proper.

The easiest workaround for this is to create a WCF Role, instead of a Web Role and then add your website files and Silverlight application to that.  The WCF Role exposes a service that is compatible with Silverlight on Azure.

If you check out my Guest Wall application (including source code), you’ll see this in action as well as the code :).

Looking to learn more about the Windows Azure Platform, Silverlight, Windows Touch or Windows Identify Foundation?

If you’d like to see these sessions in person at Microsoft’s Mix 2010 conference or the recordings that will likely be made available for free later on, please vote for the sessions before January 15th 2010, by going to the site, adding the 3 sessions to you ballot and submitting it

Microsoft Announcements at Steve Ballmer’s CES 2010 Keynote

This post was updated live during the keynote on Wed Jan 6th 2010.

All the juicy information on the keynote is below, but first, I’d appreciate 30 seconds of your time to support my session submissions for the Microsoft Mix 2010 conference by voting (follow the link, select a session, add to ballot, back up to repeat for other sessions, then submit the ballot)…

Looking to learn more about the Windows Azure Platform, Silverlight, Windows Touch or Windows Identify Foundation?

If you’d like to see these sessions in person at Microsoft’s Mix 2010 conference or the recordings that will likely be made available for free later on, please vote for the sessions before January 15th 2010, by going to the site, adding the 3 sessions to you ballot and submitting it

Background

Microsoft’s focus for the event

  • Screens woven into the fabric of our lives, specifically the PC and TV experience
  • Cloud – approach that combines power of client and cloud
  • Natural User Interface

Product/Service Announcements

  • Bing will be default search engine and MSN default homepage for HP PCs in 42 countries
  • HTC HD2 with Windows Mobile 6.5 exclusively through T-Mobile in the USA (more to say at phones at Mobile World Congress in Feb 2010)
  • Mediaroom 2.0 – IPTV solution for service providers such as AT&T U-verse (US) – live & on-demand content to the TV, Xbox, PCs (Windows 7 Media Center) & Windows Phones, enabled with Silverlight and IIS Smooth Streaming.
  • New slate form-factor PCs with Windows 7 coming in 2010 – will anyone notice once Apple releases their tablet?
  • Lots of cool games coming to Xbox in 2010 inc. Halo Reach (prequel to Halo 1), Crackdown 2, Fable III, COD MW2 content packs & Alan Wake (… a psychological action thriller delivered in episodes)
  • Xbox Game Room will have 1000+ old-style arcade games (with collaborative showdown) released over next 3 years starting in the spring.
  • Xbox Project Natal scheduled to be available for the 2010 holiday season – no new demos however

Demos/Information

  • Video of Seth Meyers from Saturday Night Live ‘thanking technology for everything is does for us’ (with comic sarcasm) – not sure there was a point to that…
  • There are 39 Million Xbox consoles around the world and 500M+ games sold ($20B+)
  • 11 Million users brought to Bing
  • Windows 7 had 3000 engineers, 50,000 partners and 8M beta testers
  • PC sales jumped nearly 50% the week Windows 7 launched
  • In 2009 33% more PCs sold at US ‘Black Friday’ (traditional retail sale day) than in 2008
  • Windows 7 All-in-ones shown: Lenovo A300 (thinnest on market), Medion Touch, Sony Vaio L
  • Windows 7 Laptops shown: Asus, MSI, Dell Adamo XPS (thinnest on market with very fast wake-up), Asus NX90
  • Windows 7 (‘full version’) Netbooks shown:  Lenovo, Acer, etc.
  • Windows 7 Gaming machines shown: HP NV15, Toshiba X505
  • Windows 7 3D Gaming machine shown: ASUS G51
  • Windows 7 on small-form-factor PCs shown: Acer Aspire Revo, Dell Xeno HD
  • Demo of digital reader with interaction and text to voice – Blio (1M+ books)
  • Demo of SkyDrive, Device Stage, Windows Live & Office 2010
  • Demo of Bing Maps zooming in with StreetSide
  • Demo of Ceton CableCard in Windows 7 Media Center – recording 4 HD channels at one time
  • Demo of what else you can do on the PC while watching TV on it (playing in background) – with horrible audio ‘stuck-record’ repeating glitch ;).
  • Demo of Windows 7 Media Center front-end to CBS (US TV Network)
  • Windows 7 slate form-factors coming in 2010 shown: Pegatron, Arcos & HP, with a video of the HP prototype specifically, with Kindle software running
  • Another Seth Meyes video on the ‘history of things that have happened in technology’… yawn…
  • Between Xmas and new year Xbox LIVE had 2.2M concurrent members online – busiest week ever
  • 20M+ Xbox Live users
  • A new member each second last week
  • A 1/3 of Xbox Live time is on non-gaming activities like buying extra songs, avatar clothing, etc.
  • 20M people have logged into Facebook, Twitter & last.fm, via Xbox Live
  • Demo of Xbox doing HD movie rental with instant streaming

Get further basic details from the MS press release, as well as a further press release about Natural User Interfaces (Voice, Touch and Beyond)

My Sessions at Mix 2010 on Azure, Silverlight, Touch and Windows Identity Foundation

I’ve submitted 3 session proposals for Microsoft’s Mix 2010 Conference in March 2010.

If you’d like to see these sessions in person or the recordings that will likely be made available for free, please vote for these sessions before January 15th 2010, by going to the site and submitting my 3 sessions in your ballot.  Please also get help from anyone else you know :).  Thanks!

Here’s information on the 3 sessions I proposed. 

Session Title

Everything You Touch Turns to Azure (aka the Azure-Touch)

Session Abstract

Feel the rush of power as you learn how to wave your hands and connect directly to your throne in the heavens – OK well you may have to settle for learning about Windows Touch in WPF/Silverlight and the Windows Azure Platform.  This is the future – make sure that everything you touch can turn to Azure.

Session Notes/Outcomes

The session shows how the building blocks of Windows Touch, WPF/Silverlight applications and the Windows Azure Platform can be brought together to create a small yet engaging end-to-end experience.  Attendees should gain insight into the benefits and design of Touch-aware applications on Windows 7 as well as the benefits of backing user experiences with the Windows Azure Platform.

 

Session Title

Get a WIF of this

Session Abstract

Writing services that understand multiple authentication systems is cumbersome and completely yesterday. Claims-based authentication and authorisation is the way to go. We’ll take a dive into how claims work and what Windows Identity Foundation provides by exploring the key components, but more importantly by building our own identify provider, a claims-based service and a Silverlight application that makes use of it.

Session Notes/Outcomes

WIF recently RTM’d but the identify framework it cements is one of the most overlooked components when it comes to Internet-based application design.  Attendees should leave with a sense of how to create WIF components or WIF-aware components, as well as knowledge of the necessary design considerations.

This session will also be presented at DevTeach 2010 in March at Microsoft Canada’s Head Quarters.

 

Session Title

The Cloud and the Silver lining

Session Abstract

You need a place to host you Silverlight applications as well as the WCF RIA Services and database that back them.  This session shows you not only that the Windows Azure Platform (featuring Windows Azure, SQL Azure and other services), is a great place to put them, but also how to create the connections between the pieces.

Session Notes/Outcomes

This session digs into the mechanics of a real-world application using Silverlight and the Windows Azure Platform.  Attendees should leave knowing how to easily test against and deploy to the Azure Platform, as well as how communication takes place between the component layers. 

Thanks for your support :).