Get Ahead With In-Depth Developer Training & Early Device Access for Windows Phone 7

The current Windows Phone 7 rumour-mill currently has:

  • Sept 2010Oct 2010 Confirmed by Microsoft – Mobile Marketplace opens for Windows Phone 7 application submissions
  • Sep 16th 2010 Confirmed by Microsoft – Tools RTM
  • Oct 2010 – Windows Phone 7 devices retail in Europe
  • Nov 2010 – Windows Phone 7 devices retail in North America

Are you ready to ride this huge opportunity?

To be at the front of the line you’ll need these key things:

  • WP7 Developer Knowledge and beyond

    The developer tools for basic WP7 application are free and easy to start with.  That’s a great story for your fart application, but not for building fully cloud-integrated applications where you have to build cloud services and/or understand the cloud space, especially if you want to use notification services.  You’ll need in-depth knowledge for this and expertise extending all the way to developing for 3-screen & the cloud in some cases.  Plus, do you really have weeks to spend researching all this stuff?

  • Access to Windows Phone 7 devices to test your application(s)

    The developer tools for WP7 include an emulator which provides a great experience, far more useful that its predecessor for Windows Mobile 6.x, and even more graphically powerful that Virtual PC since it integrates with the host’s graphical hardware acceleration and multi-touch (if available).

    However, the tools will not allow you to get a good sense of performance, test under real network conditions, or get real data from built-in devices like the accelerometer, GPS, compass, and multi-touch (this last one would require a multi-touch capable developer machine).  If you are building a game (with XNA) for WP7, you definitely want to get your hands on some real hardware.

    Do you have access to a device before retail availability?

  • Assistance with getting your application into the marketplace and potential promotion

You can get help with these things by attending the Windows Phone 7 Boot Camp that I’m running Smile

Boot Camp participants get:

2 solid in-depth workshop days covering major topics in depth, samples, exercises and expertise in Microsoft technologies at Microsoft offices – see agenda below

50+ Demos/examples

40+ Samples

Priority invite to Microsoft Canada’s deployment clinics, for invaluable application testing on a real device.  Unless you have a relationship with Microsoft, this may be your only opportunity before retail device availability!!!

FREE go-to-marketplace support from Microsoft – you’ll be connected with a Microsoft evangelist to help you with getting your application(s) into the marketplace with potential for promotional assistance

Due to a shortage with devices, Microsoft Canada has withdrawn the loaner program (substituting the deployment clinics) and a device cannot be present in all bootcamp cities.

Want More?  How about, all this for less?  Use the promo code WP7BOOTCAMP to get $100 off.

 

A whole new market is approaching…  Register today.

If the package, location, timing or content does not suit you and/or you want a tailored training experience, go ahead and contact me.

Current Agenda

Day 1 Day 2

Getting Started

Tools

Hardware

Emulator

Architecture

Application Types

Services

 

Visual Basics

XAML

Controls

Layout

Drawing, Brushes, Styles, Resources, Media

 

Applications

Stack

Model

Projects

Navigation

Threading

 

Builds & Deployment

Debug

XAP Files

Deployment

Localisation

Porting, Compatibility & Re-use

 

Application Layouts

Orientation

Transforms

Hubs, Panorama & Pivot

 

Data Binding

Essentials, Hierarchies, Lists

Converters

LINQ

 

Data Services

Service Proxy

WebClient

HttpWebRequest

OData

Design

Guide

Theming

Blend

MVVM

Control Templates

 

Platform Integration

Launchers

Choosers

Application Bar

Settings

 

Device I/O

SIP

Touch

Accelerometer

Location Services

Network

Maps

 

Storage

Isolated Storage

Perst

Cloud

Syncing

 

Application Lifecycle

In-depth

 

Notification Services

In-depth

 

Performance

 

Web Integration

Browser Control

Integration

 

XNA

Basics

 

Marketplace

Registration

Requirements

Process

Live Meeting Presentation Today on Windows Phone 7 + OData + Silverlight + Azure

image

I’m doing a 1.5 hour Live Meeting presentation today at 16:00 ET on these hot topics for the Windows Azure User Group

The audience objectives include:

  • Learn key features of Silverlight, OData & the Windows Azure Platform
  • Learn about preparing an application for use with Windows Azure & SQL Azure
  • Learn stages and ways to deploy a full application to the Windows Azure Platform
  • Learn how Silverlight can interact with Windows Azure Platform technologies.

Register for this hot-topic event and participate remotely.

https://www.clicktoattend.com/invitation.aspx?code=147804

If you are looking for in-depth rapid training on developing for Windows Phone 7 development AND hands-on time with a device, then you should consider registering for the this major 2-day boot camp running across Canada.

Windows Phone 7 Boot Camp

Silverlight From The Client to The Cloud: Part 4 – OData

In this series blog entry I’ll show that data from an ADO.NET Data Services (the OData predecessor) can be retrieved and displayed in a sample application I created that was demonstrated across Canada in Microsoft’s EnergizeIT tour.

Silverlight 3 includes support for consuming ADO.NET Data Services which use a RESTful architecture to expose CRUD operations on data in the cloud.

OData is a Microsoft-published open protocol which builds on ADO.NET Data Services.  Full OData support is not included in Silverlight 3, though a CTP add-on was made available.  Silverlight 4 does include support for consuming OData.

WCF Data Services in .NET 4.0 includes the ability to publish OData-based data sets based on entity framework models, CLR objects or a custom-built publisher.

OData (and its predecessor) is typically used for publishing and consuming sets of data, but in the sample application, we published sample insurance policy, claim data and customer activities using ADO.NET Data Services, and allowed client software to query the data for a single customer as shown here…

20100514 home

20100514 claim

In this case, not only was basic text data loaded into the UI, but binary image data was loaded into the application and geo-coordinates used with a Bing Maps Silverlight control to show a location.

In Silverlight 3 there are LINQ to ADO.NET Data Services classes and in Silverlight 4 (or the 3 add-on CTP) there are LINQ to OData client classes.

Code like the following allows Silverlight to easily connection to an OData service (after an earlier Add Service Reference) and query deeply into the datasets.

image

All such requests must be handled asynchronously in Silverlight, though inline anonymous delegates in C# (shown above) are very handy for processing the asynchronous results with inline code (though typically with more exception handling code than shown here).

Binding or imperative code (or MVVM) is then typically used to show the results in the UI.

This sample application represents a fairly basic case.  Silverlight 4 + OData opens up some great possibilities and you can see more in my Dot Net Rocks TV episode on how to create an OData services in .NET 4 WCF Data Services and consume it in Silverlight 4.

Navigating Bus Stops with Open Data and Windows Phone 7

In a recent post I talked about Bringing Azure+OData+Silverlight Goodness to Open Data Apps in Ottawa.  To do this, I imported standardized transportation data (that I found for the city of Ottawa) into a SQL database and exposed it as OData using WCF Data Services on an Entity Framework model.  I subsequently published a sample database to Windows Azure to demonstrate use of the data in an adapted Silverlight application that uses the Open Data Application Framework.

The OData information is accessible through a RESTful interface.  Here are the root entities displayed in IE.

20100606 odata

Last Thursday evening, I did a presentation on building Silverlight applications for Windows Phone 7.  Given that there’s an OData client library CTP available for Windows Phone 7, I knocked up a Bus Stop ulity application to demonstrate to my audience.  To get started with Silverlight applications on WP7 you can download the free developer tools (vs. the designer tools which are extensions for Blend 4 RC currently) currently the April CTP version.  The developer tools also include the XNA Game Studio for creating XNA-based games.

Here’s are the two main features I set up…

20100606 menu

Do create my menu I went with the list-based project template and then replaced the listbox content with manual entries with tag values.  These tags are then used as the names of the XAML files to load.  Quick and dirty, but it works…

20100606 listcode

Selecting the first option brings up a screen that allows the user to enter a bus stop (by its number as displayed on bus stop signs in Ottawa) and then lookup the trip heading and time of the the next 10 buses stopping at that stop.

When declaring the text box to enter the number, the attribute settings InputScope="Number" is used to default the standard input panel to the number entry mode.  The "TelephoneNumber" value may have also been acceptable (to bring up the phone keypad keyboard with bigger numbers) since many people request this kind of information using their telephone and its keypad.

20100606 entry

The application then uses a proxy class derived from DataServiceContext (and created using the DataSvcUtil command line tool since the WP7 add-in for VS2010 Pro does not currently provide an Add Service Reference option on a project) to query the OData service (running locally or on Azure).

The results come back and use the very flexible ListViewItem control (with its Metro styling) to display the results, making use of Layout="TextAndDetails".

20100606 times

If the user had gone to the other main menu option, they’d be presented with this screen.

20100606 nearby

This shows their ‘current’ location and the bus stops nearby.  Again this calls the OData service using filter parameters to bring back only bus stops that are within a 1km block of the location.  The map shown is the Bing Maps Silverlight control set to Road mode – the same one as used for desktop Silverlight apps – and the bus stop icons are added as children to the map control with attached properties specifying their locations.  The navigation controls where turned off to maximise space, so I added two Windows Phone 7 Applicaiton Bar to allow the user to zoom in and out.  The user can pan around with their finger of course.  The bus stop icons could easily be made actionable in some way. 

Since the WP7 emulator has no GPS, the location was hard coded in.  One of the samples in the WP7 SDK shows how to use Reactive Extensions to simulate location information in a way that is easily switched later to real device data. 

While this kind of application needs fairly accurate location data, others don’t.  Perhaps just knowing the city would be enough if one had just landed in that city and wanted general information.  The location APIs for WP7 allow the developer to easily make a choice between slow and accurate (while the device GPS locks on to satellites) or quick and less accurate (by using available Wifi and mobile network information in conjunction with Microsoft’s cloud-based location services).

Once WP7 devices are released, and the city officially publishes this data set I’d expect a fleshed out and polished application of this kind to be quickly available ;-).

Silverlight from the Client to the Cloud: Part 1

This post is part 1 in one of several series.  The series gives you a glimpse into some of the experiences and capabilities available with Silverlight and gives pointers on how to get started with them.

From March 30th to April 22nd this year, the Developer & Platform Evangelism Team at Microsoft Canada delivered a combination of all-day From Client to the the Cloud tour  and evening Community Connection Series events in 19+ cities across Canada as part of EnergizeIT 2010.

The EnergizeIT events give an idea of what’s possible.  To compliment those events, the TechDays events by Microsoft Canada coming up again this year in the Autumn season, give attendees the opportunity to learn more about how they can use Microsoft products and technologies.  I’ll be speaking there again this year on topics that may include Silverlight, Azure, OData and Windows Phone 7. 

At each of the recent EnergizeIT events, a 2.5 hour demo showed the tip of the iceberg in terms of what’s possible with some of the latest Microsoft tools and technologies from the viewpoint of developers and IT professionals.  They covered technologies and products included .NET 4.0, Visual Studio 2010 (including Lab Manager), Hyper-V, Windows Mobile, Office 2010, SharePoint 2010, PowerShell, System Center, the Windows Azure Platform and Silverlight.

The demo covered the user, developer and IT pro experience for a new car insurance business.  It showed how a consumer could use software on a Windows Mobile device to capture critical information when a collision occurs as well as how they can review and connect with the insurance company back at home.  It continued to show the construction of the application on the backend, how the back office workflow can operate, and how the application can be deployed to the cloud to take advantage of various benefits.

About two months before EnergizeIT, the DPE team contacted me to produce the Silverlight portion of the demo.  I had the pleasure of working closely with Christian Beauclair and Rick Claus to integrate the Silverlight application into the demo experience.

The user experience starts when they use their Windows Mobile device to capture collision incident information and submit a claim to the insurance company which is stored it in a SQL Server database via WCF Web Services and ADO.NET Entity Framework.  You can read about the mobile application portion in Mark Artega’s blog post

The Silverlight experience begins when the user gets home and follows up with the insurance company on their home computer.

First the user logs into the application…

20100514 login 

To reflect the ‘electric energy’ style of the the Energize ‘brand’ and the logo, the UI reveals areas using a specific ‘energy bar’ animation.  This grows from a spot…

20100514 reveal 1

…to the full width of the element to be revealed…

20100514 reveal 2

… and ‘materializes’ the element as the energy bar sweeps down over the area…

20100514 reveal 3

… after which the energy bar then shrinks until it disappears.  We joked about putting a ‘vudgzzz’ sound with this, but the demo didn’t have sound up. 

20100514 reveal 4

The Silverlight application uses ADO.NET Data Services in Silverlight 3 (now WCF Data Service in Silverlight 4 including OData support), to pull down a series of connected entities including a customer record, policies, claims, related employees, pictures, etc.  You can see how the sections of this application UI could lend themselves to display on Windows Phone 7.  The policy type icons are XAML resources bulit into User Controls, built from vectors allowing for a great scaling experience.  Unfortunately the release of Silverlight 4 was too close to the tour launch for us to use Silverlight 4 features like global implied styling.

20100514 home

When the user select the Claim activity, an animation storyboard acts on the UI to fade it and tilt it away using the Perspective 3D capabilities in Silverlight 3…

20100514 fade back

… and the claim details are revealed.  This includes binary image data transfered from the backend database.  The geospatial data in the claim is used with the Bing Maps Silverlight control to show the location of the collision on a map (with full zoom and pan support aloing with road and aerial views).

20100514 claim

It would then be possible to store updated information back to the SQL Server database via the WCF Data Service wrapping around the ADO.NET Entity framework model wrapping the database.

The asynchronous nature of all network calling libraries in Silverlight ensures that the user interface does not freeze up when the application is talking to services in the cloud.

The demo goes on to demonstrate a chat session between the user and an insurance adjuster which results in an appointment being placed in the users pending activities list.

This demo application scratches the surface of what’s possible.  Features like mic/webcam capture, WCF RIA Services, Templating, Deep Zoom, DRM, Streaming A/V Support, Printing, Out-of-browser execution, etc. really empower developers to take Silverlight to the max.

In upcoming series posts, I’ll give you pointers on the Silverlight experiences and capabilities of this application and the technologies it uses.

Exploring OData with Silverlight

Silverlight 4 includes native support for accesing OData-compatible data service, but it can be hard to use the entities exposed by such services without being able to explore the data and confirm the range and semantics of the data.

Well, you can use the OData URL query syntax to dive through the XML in your browser (yum!), or you could create an application to more visually show the data. 

Both of those are less than optimal for initial exploration, and why bother, when there’s a tool that lets you start exploring.

The OData Explorer sample application provides a good way to explore a specific OData-compatible service and also provides a list of some of the public compatible services.

The tool can be found here: http://www.silverlight.net/content/samples/odataexplorer/

As an example, one can use it to explore the Netflix service at http://odata.netflix.com/Catalog/ and try out a query like this:

/Titles?$filter=ReleaseYear%20eq%202009&$orderby=AverageRating%20asc&$select=AverageRating,ReleaseYear,Rating,Name

This provides the lowest rated NetFlix titles in 2009… hmm… interesting results…

Give it a go 🙂

silveright od x 1

Quick Tip: Setting up OData Support In Silverlight 3

So the shiny new Visual Studio 2010 released yesterday and the final Silverlight 4 releases in 2 days.

What if you are still using Visual Studio 2008 and Silverlight 3 and you want to consume  all the latest OData goodness?

Background on OData

You know what OData is right?

Well first there was ADO.NET Data Services which provides production and consumption of data via a RESTful architecture using HTTP verbs to perform CRUD-like operations.  Client ‘consumer’ and server ‘producer’ classes where included in .NET 3.5 SP1 and client classes where included in Silverlight 3, under System.Data.Services.Client in both cases.

OData at http://odata.org is the evolution of that in the form of a full-on open protocol standard that Microsoft has ‘put out there’ for querying and updating data based on extensions to AtomPub.  Products such as SQL Azure, SharePoint 2010, SQL Server 2008 R2 Reporting Services and Windows Azure Table Storage will expose OData-accessible data and there a growing number of SDKs available on both ends of the communication channel.

For .NET 4.0, ADO.NET Data Services evolves into WCF Data Services (built on WCF) and the associated classes support the OData protocol.  Silverlight 4 will also have WCF Data Services supporting OData.

For .NET 3.5 SP1, the Data Services Update for .NET 3.5 SP1 was made available as a full release.  For Silverlight 3, only a CTP release is available – the ADO.NET Data Services for Silverlight 3 Update CTP3 (eat your heart out long-name marketing folks).

I installed VS2010 yesterday which installed the SL3 toolset (given that SL4 tools don’t come until this Thursday).  I thought it would be good to explain a few things for people that are still using Silverlight 3.

To do anything, you need some OData-accessible data.  Right now, you can go to the Netflix public catalog at http://odata.netflix.com/catalog and just start exploring the data by tinkering with the URL, following the examples at http://www.odata.org/developers/protocols/uri-conventions

OData repositories appear to have a version of 2 and cannot be accessed properly from “V1” ADO.NET Services Clients – you need the WCF Services (OData-compatible) client.

Getting OData Client support in your Silverlight 3 application in VS2008

So for those using Silverlight 3 in VS2008 you can give OData a fairly solid go by downloading that CTP.

To use the update OData friendly libraries, you need to:

  • Extract the System.Data.Services.Client.dll file to somewhere you remember.
  • Add System.Data.Services.Client as a normal reference to your application.
  • Go to the project properties, select the References tab, go into Reference Paths, add the directory that you put your extracted class in to.  As you come out of there, you should see your new path listed for System.Data.Services.Client.

You can now write OData-friendly client code for Silverlight 3 in VS 2008.

Using DataServiceCollection

One of the great new classes is DataServiceCollection.  It enables fully bound updateable observable collection behaviour so you can bind something like a DataGrid to an OData service (with it’s CRUD-like operations).  Think about that 🙂

Using DataServiceCollection requires that the objects you pass in, support INotifyPropertyChanged interface. 

In a Silverilght 3 app in VS2008 (and even VS2010), the Add Service Reference tool (which apparently runs DataSvcUtil.exe from the V3 framework) does not support adding this when it creates the service client proxy.

The .NET 4 version of this tool does do this work for you, so you may want to installed the 4.0 framework and use it like this to get fully-functional binding classes you can use with DataServiceCollection.

%windir%\Microsoft.NET\Framework\v4.0.30319\DataSvcUtil.exe /dataservicecollection /version:2.0 /language:CSharp /out:myproxyclass.vb /uri:http://odata
.netflix.com/catalog

Voila…

 odata in silverlight 3