Welcome to MSDN Blogs Sign in | Join | Help

I've had a number of people ask me for the deck I presented last week, at the TechEd EMEA 2008 Developers conference in Barcelona.

The session was titled: Distributed Embedded Systems - The Next Big Developer Opportunity!

I've uploaded it to Windows Live SkyDrive.

With less than a week to go before this year's TechEd EMEA Developers conference, you may have started thinking about your schedule. So many sessions to see, so little time!

Last week, I posted a complete list of the Windows Embedded track sessions (TechEd EMEA 2008 Developers - Introducing the Windows Embedded track), but sometimes a raw list can be a bit daunting. So here's some additional information to help you navigate your way through that list. (Note that sessions may appear under multiple headings.)

If you want to see really cool/unusual demos... here are some that really stand out: 

      to see this... go to this session...
  • a real-life Miele washing machine, controlled - live, on stage! - from a Windows Vista Media Center via web services
EMB208 Building Distributed Embedded Systems with Web Services on Devices
  • a "drowsy delegate detector", controlling Christmas lights, and other fun demos
EMB207 Put your Big Ideas onto Tiny Devices using .NET
  • using RFID to login to a customized Windows Embedded Standard image
EMB205 10 Reasons to Build Your Own Windows Embedded Standard Device!
  • a real working robot
EMB306 Windows Embedded CE and Robotics

If you're interested in feature-level introductory sessions... (and there's nothing like a solid feature-level overview to help you get a better understanding of a specific product), here are some sessions to consider:

      for a feature-level intro to... go to this session...
EMB204 Introduction to Windows Embedded Standard
EMB206 Introduction to Windows Embedded CE 6.0
EMB210 Introduction to Windows Embedded NavReady
EMB209 Developing Point of Service (POS) Applications with POS for .NET
EMB203 "Running on the Metal" with the .NET Micro Framework

If you're looking for hard-core embedded development topics... here are some sessions you can really sink your teeth into:

      to learn about ... go to this session...
  • all the details and best practices for building and optimizing Windows Embedded Standard images
EMB302 Building Custom Operating System Images Using Windows Embedded Standard
  • using write filters on Windows Embedded Standard
EMB06-IS Protect a Windows Embedded Standard Image Using Write Filters
  • techniques for shipping stable Windows Embedded CE 6.0-powered platforms
EMB01-IS Stabilizing the Window Embedded CE Platform
  • developing device drivers for Windows Embedded CE 6.0
EMB301 Windows Embedded CE Device Driver Development
  • deep-dive into the Windows Embedded CE 6.0 kernel
EMB305 Windows Embedded CE 6 Architecture and Memory Management
  • deep-dive into the Windows Embedded CE boot process
EMB401 Boot Time for Bonzo: A Swing Through the Windows Embedded CE Boot Process

If you want to understand web services on devices... now that more and more devices are becoming connected -consuming end exposing web services on devices is the next natural step. The Devices Profile for Web Services (DPWS) is an industry specification that defines a minimal set of implementation constraints to enable secure Web service messaging, discovery, description and eventing on resource-constrained devices.

These sessions will explain what's available, and show you what's involved: 

      to learn about... go to this session...
  • the DPWS spec or about Microsoft's Web Services on Devices API (WSDAPI) implementation
EMB208 Building Distributed Embedded Systems with Web Services on Devices
  • the .NET Micro Framework implementation of DPWS
EMB303 Talking Web Services to Microcontrollers

If you're not sure why you should care about embedded development, or how to approach it...

      to learn about... go to this session...
  • opportunities for embedded development 
EMB201 Distributed Embedded Systems - The Next Big Developer Opportunity!
  • what makes embedded development different
EMB202 Leverage Your Development Skills, Go Embedded!
  • why you might consider creating your own custom OS image
EMB205 10 Reasons to Build Your Own Windows Embedded Standard Device!

If you are a managed code developer...there are plenty of sessions for you. Did you know that the .NET Micro Framework is an embedded managed code bootable runtime? It even has a managed code device driver model! And POS for .NET - well, the name says it all.

You'll find lots of managed code in the following sessions:

  • EMB203 "Running on the Metal" with the .NET Micro Framework
  • EMB207 Put your Big Ideas onto Tiny Devices using .NET
  • EMB307 Creating a Gesture-Based UI for Embedded Devices
  • EMB303 Talking Web Services to Microcontrollers
  • EMB209 Developing Point of Service (POS) Applications with POS for .NET

If you're looking for sessions that focus on a specific embedded product offering...the session search tool doesn't distinguish between the different Windows Embedded products. So here's a list for you:

      for this product...       here are the available sessions...
  • Windows Embedded Standard 2009
  • EMB204 Introduction to Windows Embedded Standard
  • EMB205 10 Reasons to Build Your Own Windows Embedded Standard Device!
  • EMB302 Building Custom Operating System Images Using Windows Embedded Standard
  • EMB06-IS Protect a Windows Embedded Standard Image Using Write Filters
  • Windows Embedded CE 6.0
  • EMB206 Introduction to Windows Embedded CE 6.0
  • EMB304 Windows Embedded CE Application Development
  • EMB301 Windows Embedded CE Device Driver Development
  • EMB305 Windows Embedded CE 6 Architecture and Memory Management
  • EMB306 Windows Embedded CE and Robotics
    EMB401 Boot Time for Bonzo: A Swing Through the Windows Embedded CE Boot Process
  • EMB01-IS Stabilizing the Window Embedded CE Platform
  • Windows Embedded NavReady 2009
  • EMB210 Introduction to Windows Embedded NavReady
  • Windows Embedded for Point of Services
  • EMB209 Developing Point of Service (POS) Applications with POS for .NET
  • .NET Micro Framework 3.0
  • EMB203 "Running on the Metal" with the .NET Micro Framework
    EMB207 Put your Big Ideas onto Tiny Devices using .NET
    EMB303 Talking Web Services to Microcontrollers
    EMB307 Creating a Gesture-Based UI for Embedded Devices
  • Microsoft Robotics Developer Studio

 

  • EMB306 Windows Embedded CE and Robotics

      Sessions, in other tracks:

  • TLA316 CCR and DSS: A data-driven approach to distributed, concurrent software
  • ARC313 Decentralized Software Services in Action: Architecting Integration and Grid Patterns using the CCR & DSS Toolkit 2008

If you're looking for interactive sessions...we've got some of those too:

  • EMB01-IS Stabilizing the Window Embedded CE Platform
  • EMB03-IS Windows Embedded: Forget the OS
  • EMB05-IS Everything You Always Wanted to Know About Windows Embedded But Were Afraid to Ask
  • EMB06-IS Protect a Windows Embedded Standard Image Using Write Filters

And if you're looking to get specific questions answered about embedded development or a Windows Embedded product, be sure to attend the expert panel session:

  • EMB05-IS Everything You Always Wanted to Know About Windows Embedded But Were Afraid to Ask.

If you still haven't been able to find what you're looking for in the Windows Embedded track, please let me know! :-)

Back in September, I visited the European Microsoft Innovation Center (EMIC) in Aachen, Germany. It's quite an interesting place - the EMIC targets the creation of advanced technologies which could be in the market within three to six years. While I was there, I sat down with Matthias Neugebauer to discuss the work they're doing around sensor networks. You can watch the interview here, on Channel9.

The same facilities in Aachen also host the recently created Microsoft Embedded Systems Development Center (MESDC), which supports global product development and drives smart, connected, service-oriented device development. Given the work that both the EMIC and the MESDC are doing around distributed embedded systems, I'll be looking for an opportunity to return to Aachen in the near future.

TechEd_Developers_Signature_w 

This year, we're introducing a new track for embedded development technologies at TechEd EMEA. As owner of this track, I want to share some details about the track content, along with the thinking behind it.

Windows Embedded Track Overview

Finding the right balance between introductory and more advanced content can be a challenge. Given that it's a new track, and with no feedback from prior years to guide us, we're optimizing much of the content to attract new developers to embedded technologies. You'll find no other track at the conference with as many Level 200 sessions. We believe there's a huge opportunity for developers in this space, especially as solutions begin to span devices, the PC, and the Web. This is a great chance to get started!

We also want to provide opportunities for developers with expertise in embedded technologies to connect with product team members and well-known industry experts. We are providing a good number of Level 300 sessions (and even a Level 400 session), as well. 

Windows Embedded Track Product/Technology Coverage

The Windows Embedded track provides coverage of products within the Windows Embedded family, with plenty of sessions on Windows Embedded Standard, Windows Embedded CE, Windows Embedded NavReady, and Windows Embedded for Point of Services. It also covers other embedded development technologies, like the .NET Micro Framework, Microsoft implementations of the Devices Profile for Web Services (DPWS) industry spec, along with some tangential coverage of Microsoft Robotics Developer Studio (you'll find a couple more sessions related to MS Robotics Developer Studio in other tracks).

Windows Embedded Track Sessions

Below are the sessions we're providing in the Windows Embedded track. I'll be kicking off the track, aiming to set some context around the opportunities we see in this space (shameless plug for my session :-)

(Note: Please be sure to confirm scheduling on the TechEd EMEA 2008 Developer site, in case there are any last-minute changes).

Day 1 - Monday, November 10

Time Session Speaker
16:00-17:45 EMB201 Distributed Embedded Systems - The Next Big Developer Opportunity!
Recent forecasts predict over 16 billion embedded devices by 2010. With more of these devices providing connectivity, there's a huge opportunity for developers to extend their solutions to target embedded devices. Come get a glimpse of recent industry trends and technologies that are enabling the next wave of smart, connected, service-oriented devices, and learn how Microsoft's offerings can help you get started today.
Catherine Heller
17:45-19:00 EMB204 Introduction to Windows Embedded Standard
Do you want to know how to build a customized version of the Windows desktop OS that can be streamlined to run on systems with the smallest footprint? Would you like to mix and match Windows applications, services and drivers to suit your needs? Windows Embedded Standard, the successor to Windows XP Embedded, is used widely in thin clients, cash registers, bank ATMs, gaming consoles, medical equipment and numerous other device platforms; some being purely solid-state, flash-based devices. This session introduces you to the suite of tools that will allow you to build custom versions of Windows that meet your specialized needs.
Lynda Allen

 

Day 2 - Tuesday, November 11

Time Session Speaker
09:00-10:15 EMB202 Leverage Your Development Skills, Go Embedded!
Embedded systems are rocketing; each of us is transporting, using and depending on a variety of these devices - PDAs, smartphones, personal navigation devices, mobile Internet devices, gamepads etc. The Windows embedded platforms cover a very large scope of technologies with strange but impressive names, like "CE kernel", "WEPOS" and "NavReady". This session is targeted at non-embedded developers with experience in more traditional Windows technologies like Win32, COM or .NET. We will walk the bridge between these worlds, observing commonalities and differences through real-world case studies and technical dive-ins. Come and learn how your existing skills may already be very close to what is required for embedded development and what you can gain from future work in embedded projects.
Thierry Joubert
10:45-12:00 EMB205 10 Reasons to Build Your Own Windows Embedded Standard Device!
Have you ever dreamed of tailoring the OS platform to the needs of your application? Did you want the power of the desktop in a more secure, leaner and much more robust system? Well then, this session is for you! Alexander will take you through the most compelling features of Windows Embedded Standard (the successor to Windows XP Embedded) and show how to use them to generate a positive impact in your value chain.
Alexander Wechsler
13:30-14:45 EMB208 Building Distributed Embedded Systems with Web Services on Devices
The Devices Profile for Web Services (DPWS) is an industry specification that represents a lightweight subset of the overall Web services protocol suite targeted at network-connected devices. In this introductory session we discuss how to build loosely coupled, distributed embedded systems using the Web Services for Device API (Microsoft's implementation of DPWS) in Windows Embedded and Windows Vista. As practical demos, we’ll use WSD on Vista Media Center to control a lamp, and even a washing machine – live, on stage ! You won’t want to miss this session!
Frank Prengel;
Stefan Hoppe
15:15-16:30 EMB206 Introduction to Windows Embedded CE 6.0
Windows Embedded CE is a real-time embedded modular operating system, developed from the ground up to address the specific needs of embedded devices. The variety of devices running Windows Embedded CE is huge: everything from industrial automation systems, robots, digital picture frames, set-top boxes, personal navigation devices,… and the list goes on! This session will provide an overview of the operating system and tools. You’ll see how simple it is to design, build, deploy, and debug an image for a specific device. 
Dion Hutchings
17:00-18:15 EMB01-IS Stabilizing the Windows Embedded CE Platform
How many times has your Windows Embedded CE project got to the late alpha, early beta stage only to be hobbled by failures in testing or simply lockups in the field? This talk covers management strategies and coding techniques helpful for shipping stable Windows Embedded CE platforms. Learn how to minimize bugs while at the same time enhancing the ability to find problems quickly in this informative talk.
Douglas Boling
17:00-18:15 EMB210 Introduction to Windows Embedded NavReady
Have you ever used a GPS device? Did you ever wish it could give you the right info, at the right moment, in the right place? Come and discover Windows Embedded NavReady, the system that will run the next generation of Personal Navigation Devices and enable exciting new usage scenarios. During this session, you will learn about NavReady and the tools developers can leverage to implement Bluetooth scenarios, Live Search on Devices, MSN Direct…
Olivier Bloch,
Pierre Cauchois

Day 3 - Wednesday, November 12

Time Session Speaker
09:00-10:15 EMB203 "Running on the Metal" with the .NET Micro Framework
The .NET Micro Framework allows developers to quickly create smart connected embedded devices using Visual Studio 2008 and C#, without the added complexity of an underlying operating system. This session will introduce you to embedded development with version 3.0 of the .NET Micro Framework (.NET MF) and provide an overview of the features. You'll learn when .NET Micro Framework is appropriate and when Windows Embedded CE or Windows Embedded Standard might be a better choice; and you'll discover how to easily get started with .NET MF, whether you already have embedded experience or are a desktop developer looking to broaden your skills.
John Leier
10:45-12:00 EMB302 Building Custom Operating System Images Using Windows Embedded Standard
Although building a custom OS image using the Windows Embedded Standard suite of tools is a relatively easy task, ensuring that you build an image that fulfills the specific needs of your device may be more challenging. This session covers how to plan your custom image, from choosing boot media to footprint optimization, security and servicing. It also touches on the basics of creating custom components to use in your image, as well as takes a closer look at some of the Embedded Enabling Features that are designed to enable scenarios such as booting from UFD (USB Flash Drive), reducing wear on flash media or enhancing boot times.
Lynda Allen
13:00-14:15 EMB03-IS Windows Embedded: Forget the OS
Embedded devices are becoming increasingly common. Whether you realize it not, you use them every day (when you withdraw cash at an ATM, when you refuel your car, when you pay with your credit card, when you drive, when you listen to music, …). In a market evolving at an incredible speed, and in an era of connectivity, device manufacturers need tools to quickly develop smart, rich, connected and service-oriented devices. Windows Embedded is a family of products providing these manufacturers the tools they need to spend their time and efforts on their value, rather than on reinventing the wheel. This interactive session will show you, through concrete demos, what the developer experience is when developing a Windows Embedded device and what the tools have to offer.
Olivier Bloch
15:45-17:00 EMB305 Windows Embedded CE 6 Architecture and Memory Management
It's a whole new kernel! Let's check it out! The Windows Embedded CE 6 is the most radical redesign of the kernel since it was released 10 years ago. The new kernel removes the onerous 32 Meg virtual memory limit and the 32 process limit. That said, it's completely different from the Windows XP kernel. Both embedded developers and desktop developers interested in how Windows CE works under the covers will find this an interesting talk. Learn about the Windows Embedded CE memory model, it's new design and how interprocess communication changes with the new release in this detailed talk.
Douglas Boling
17:30-18:45 EMB303 Talking Web Services to Microcontrollers
The newest release of the .NET Micro Framework adds full support for Devices Profile for Web Services (DPWS). Not only can you leverage your .NET skills to develop for microcontrollers running the .NET Micro Framework, you can now use DPWS to create sophisticated distributed experiences between such connected devices. This session shows how to use this brand new technology to enable even the smallest devices to participate in the digital ecosystem.  Explore a complete new universe full of exciting gadgets!
Alexander Wechsler

Day 4 - Thursday, November 13

Time Session Speaker
09:00-10:15 EMB06-IS Protect a Windows Embedded Standard Image Using Write Filters
The Enhanced Write Filter (EWF) and the File Based Write Filter (FBWF) are two Windows Embedded Standard features which provide a means of protecting a volume from writes. This enables scenarios such as booting from read-only media such as CD-ROMs and eliminating wear on flash media from writes. The Enhanced Write Filter protects the volume at the sector level. The File Based Write Filter allows you to specify a list of files and folders to which writes should be persisted and, when combined with the Registry Filter, allows persistence of specific registry keys while protecting the rest of the OS. This talk will help you decide which Write Filter fits your scenario. Learn the benefits of each Write Filter and how to configure and effectively use them through interactive demonstrations. We also cover commonly encountered scenarios and tips for effectively using the Write Filters.
Lynda Allen
09:00-10:15 EMB207 Put your Big Ideas onto Tiny Devices using .NET
Ever wanted to control your Christmas tree lights with C# and .NET? Or create a tiny, connected data logger that integrates into your company network? Or anything in between? The demo-packed presentation will showcase .NET on both .NET Micro Framework and Windows Embedded CE-powered platforms in a variety of fun and useful scenarios. You will discover just how easy it is to create connected embedded solutions on a variety of devices using C# and Visual Studio. If you want to rediscover the joy of really making things happen with your code, then this session is for you.
Rob Miles
13:30-14:45 EMB304 Windows Embedded CE Application Development
Windows Embedded CE 6.0 supports a number of application programming models - including Win32, MFC, and .NET - and there are a number of factors you should consider when deciding which one to use.  In this Breakout Session, we’ll walk you through the process of writing a simple application for Windows Embedded CE 6.0, and compare each approach: Win32, MFC and C# (Managed). Before you begin to write code, learn which approach best suits your project and avoid costly rework.
Dion Hutchings
15:15-16:30 EMB401 Boot Time for Bonzo: A Swing Through the Windows Embedded CE Boot Process
Whether you are monkeying around with device drivers or going bananas over managed code, all software depends on a successful OS boot. This talk provides a step-by-step look at Windows CE startup, with critical insights to help in creating new BSPs, bringing up Windows CE on a new platform or developing device drivers. After this swing through the Windows CE boot process, you'll never look at OS startup in quite the same way.
Paul Yao
17:00-18:15 EMB301 Windows Embedded CE Device Driver Development
Need to attach some custom hardware to your Windows Embedded CE device? This is your chance. This talk will cover the basics of the stream driver model, the differences between user mode and kernel mode drivers, how to access hardware, how to support interrupts and how to marshal data from applications to drivers and back. Come to learn the ins and outs of writing Windows Embedded CE device drivers in this informative, example driven session. 
Douglas Boling
17:00-18:15 EMB05-IS Everything You Always Wanted to Know About Windows Embedded But Were Afraid to Ask
The title of this session speaks for itself! If you’re developing devices running Windows Embedded and/or have questions you’d like to ask the Microsoft Embedded experts, you won’t want to miss this session.
Lynda Allen,
Olivier Bloch,
Pierre Cauchois,
Dion Hutchings

Day 5 - Friday, November 14

Time Session Speaker
10:45-12:00 EMB209 Developing Point of Service (POS) Applications with POS for .NET
In this session, we will provide an overview of the Windows Embedded for Point Of Service (WEPOS) platform, from the developer perspective. After a general presentation of the WEPOS operating system, we will show how to build point of sale applications interfacing with barcode and credit card readers, line displays and other POS peripherals, using Visual Studio and the POS for .NET SDK. We will conclude with roadmap information about the future of Microsoft's POS platform.
Frank Prengel
13:30-14:45 EMB307 Creating a Gesture-Based UI for Embedded Devices
Gesturing and touch screens have quickly gained popularity as an intuitive interface for phones, but many general embedded devices have less obvious user interfaces. In this session you'll learn how to create a compelling UI for an embedded device using the .NET Micro Framework and C# managed code. This session focuses on the new features in .NET Micro Framework version 3.0, but the concepts can be applied to any embedded device, including those running Windows Embedded CE or Windows Embedded Standard.
Steve Maillet
15:15-16:30 EMB306 Windows Embedded CE and Robotics
Want to learn how to develop your own robot running Windows Embedded CE, using Visual Studio and the Microsoft Robotics Developer Studio? Or maybe you’d like to know how Windows Embedded CE, as a real time embedded operating system, addresses the needs of the industrial robotics domain? Then this session is for you! Come and see cool live demos with real robots!
Olivier Bloch

On my last trip to Redmond a couple of months ago, I sat down with the some folks from the .NET Micro Framework. We discussed some of the what, where, why and how's, saw some development kits, and got a peak at what's coming in the 3.0 release. And it's all recorded on Channel 9, here: A Look at the .NET Micro Framework.

A couple of recent news items, related to the .NET Micro Framework:

A lot of big changes have taken place in my "world" over the past 6 months, and I'm using this post to formally kick-off a new chapter in my life (and in this blog).

From Live to Embedded.

Once again, I've taken on a new focus. I'm working on an initiative around "distributed embedded systems". More about this in future posts. :-)

From Redmond to Madrid.

When I moved from Madrid to Redmond in 2003, it was my intention to stay for 3-5 years and then return to Madrid. I'm thrilled to have found an opportunity to work as a Technical Evangelist (still my dream job) from Madrid, while continuing to work closely with product teams and continuing to form part of our corporate Developer & Platform Evangelism organization in Redmond.

Big challenges ahead.

So what's the big deal? This isn't the first time I've made a change in my technology focus. Over the past 5 years, I've worked on a number of evangelism efforts, including: Visual Studio Tools for Office and Visual Studio 2005, Windows Vista, and more recently Windows Live platform.

This is the first time I'll be working on a geo-dispersed team. I now work from home in Madrid; my manager (Arvindra Sehmi) and other team members (like Yuriy Zaytsev) are dispersed around the planet. Working from home does have a number of benefits, but it also introduces some interesting challenges - especially combined with frequent travel and working with people across a wide range of time zones. The impact on my life, how I work ,and how I schedule my time is definitely proving to be "interesting". :-)

A new title for this blog: Connecting the dots.

I've always had a tendency to prefer depth over breadth - I've been known to pore over WS-* specs, analyze difference between managed and native binaries, and monitor network communications looking for DCOM MEOW packets, all just for fun. There's a certain sense of confidence that comes from knowing the gory details, and I believe that's what's always drawn me to this approach.  But somewhere along the line, I've found myself increasingly attracted to the idea of bridging silos of expertise and looking for new scenarios and opportunities for next-generation products/technologies. So here's to the joy of "connecting the dots"!

Right before the holidays, I saw down with Marc Mercuri to discuss the recently released Tafiti Windows Live Quick Application and how it evolved from one of Marc’s recent incubation projects. The interview just went live this morning on Channel9; you can find it here.

In the interview, Marc describes the journey from Tafiti, the incubation project, to the Tafiti Quick App. In case you're not familiar with Tafiti or the Quick Apps:

  • Tafiti is an experimental search front-end from Microsoft that uses Silverlight and Live Search to provide a rich specialized search experience on the Web. 
  • The Windows Live Quick Applications are a set of samples that illustrate how to combine multiple Windows Live platform offerings to implement specific Web scenarios. Each Quick App is offered as a source code download, and you can use the code as-is, you can re-purpose it, copy code snippets from it, or use it as a learning tool.

Big thanks to Angus Logan who drove this effort, working with Marc and others to convert the incubation project into a Quick App.  Angus announced the release of the Quick App in this blog entry. (In case you didn't already know, Angus's blog is one of the best sources of information for what's happening in the Windows Live space for developers).

If you're inspired by Tafiti, and have interesting ideas for other specialized search experiences, be sure to listen to the part of the interview where Marc announces a contest (00:26:44). (Or just read the last paragraph of the video description on Channel9 :-)

I'm really excited about participating in the upcoming ReMIX event in Boston. I'm especially fond of Boston, as I lived there during most of the '80s. (I first moved there to attend New England Conservatory as a violin major. I ended up quitting violin, but I moved next door - literally! - to Northeastern University, where I graduated with a double major in Computer Science and Math. Lots of great memories!)

Anyway, I'll be presenting two sessions on the Windows Live Platform. In the first session, Exploring User Experiences Built on the Windows Live Platform, I'll run through examples of sites that are built on Windows Live Platform offerings. In the second session, Lap Around the Windows Live Platform, I'll walk through the specific APIs and controls.

 

For more info on the conference, check out http://www.remix07boston.com. And be sure to check out the discount code posted by Bob in this blog entry. 

Hope to see you there!

image

Windows Live ID Web Authentication

By now, I hope you've heard about the recent release of Windows Live ID Web Authentication.

If you haven't, here are some links you should check out:

Test driving the ASP.NET sample

I finally got around to giving it a test drive myself, using the ASP.NET sample included in the Windows Live ID Web Authentication SDK, and wanted to share my experience with you.

Let me first share with you one of my pet peeves regarding web development: I DO NOT want to install a web server on my client machine. I don't have anything against web servers, it's just that I don't want the hassle of installing, running and managing a web server on my laptop when all I want to do is some straight-forward web app development. That's why I love the built-in ASP.NET Development Server that was introduced in VS 2005, and I actively advocate the need for our development scenarios to work in this environment.

The ASP.NET sample assumes you have IIS installed, so there were a couple of things I needed to do before I could run it from the ASP.NET Development Server.

Some background on Windows Live ID Web Authentication that is relevant to the steps I'll outline below:

  • Users will sign in/out of Windows Live ID on your site via a link you provide to the Windows Live ID Authentication service; you need to provide an AppID in the query string (see Displaying the Sign-In Link for details)
  • An AppID is obtained by registering your application and providing (among other things) a "Return URL" to which the service redirects users after they have successfully signed in/out (see Getting Your Application ID for Web Authentication). 
  • The Return URL points to a page on your web site that handles login/logout actions (see Handling the Response from the Service). I'll refer to this page as the "web-auth handler".
  • To change the URL of your web-auth handler, you need to update the registration values associated with the AppID (or create a new AppID, if you don't own the existing AppID - as is the case with the sample)

Creating a file system-based Web Site for the ASP.NET sample

Since I don't have IIS installed, the steps for setting up the sample differ than the ones described in the SDK docs.

Here's what I did to set up a file system-based web site for the sample:

  1. Ran the ASP.NET sample installation file (webauth.msi), which you'll find here
  2. Using Visual Studio, I created an Empty Web Site and named it WebAuth.
  3. Copied the contents of the C:\Program Files\Windows Live ID\WebAuth\Sample folder to the WebAuth folder created for the web site
  4. Copied the C:\Program Files\Windows Live ID\WebAuth\App_Code folder to the WebAuth folder
  5. Refreshed the web site project in VS (right click on the site in the Solution Explorer and select Refresh Folder)

Running the ASP.NET sample using the ASP.NET Development Server

The AppID used by the sample is configured to redirect the user to the following path: http://localhost/webauth/sample/webauth-handler.aspx. This path won't work if you're app is running under the ASP.NET Development Server, because it's not listening on port 80 - it uses a randomly selected port. So I created a new AppID and modified the sample to work with this new ID. I did this in three steps.

Step #1: Determined the port being used by the ASP.NET Development Server

I ran the web app from VS and noted the port number displayed by the ASP.NET Development Server icon in the system tray. [If you hover over the icon - the one pointed to by the arrow in the image below - you'll see the port number at the end of the description text]. 

 ASP.NET Dev Server System Tray Icon

(There's a doc that describes how to configure it to use a specific port - How to: Specify a Port for the ASP.NET Development Server - but I found that the server seems to use the same port for a given app).

Step #2: Created a new AppID

I followed the steps outlined in Getting Your Application ID for Web Authentication to create a new AppID. 

  • Application Name - you can use any value here; I used WebAuthSampleApp
  • Return URL - I included the port on which the ASP.NET Development Server was listening (as determined in Step #1). Since I created a file system-based Web Site called WebAuth, and the server was listening on port 61343, it looked like this: http://localhost:61343/WebAuth/webauth-handler.aspx
  • Secret Key - to minimize changes to the sample app, I specified the value used by the sample: ApplicationKey123

Step #3: Modified Web.config

The sample is reading the AppID and Secret Key values from the web.config file. I found the following line, and replaced the wll_appid key's value with my newly created AppID.

<add key="wll_appid" value="0016BFFD80002719"/>

That did it - from there, I just pressed F5 and ran the sample application under the ASP.NET Development Server.

I was out of the office last week on vacation (check out our awesome seaplane ride to Victoria!), and a number of things were released that I want to be sure and call out.

New release of the Windows Live Contacts control. You can read about the new incremental search and filtering features on Danny Thorpe's blog here.

Referencing Spaces Photos. Joe Healy posted a blog entry on how to reference Windows Live Spaces photos from HTML img tags, and John Bruno added some additional information in this post.

Note that there's yet another way to get the URL of a Spaces photo (although the URL is much uglier than the one returned by the RSS feeds): right click on a photo in the Photo Gadget, select Properties and copy the URL. But I must admit that I've recently switched over to Joe's approach of using the URL in the album RSS feed. 

Windows Live video segments On10. Before leaving for vacation, I worked with the On10 team on a series of end-user targeted videos on Windows Live. The first three were released last week:

And more were released this week:

Windows Live SkyDrive updates: new name (used to be Windows Live Folders), new features, and availability in new regions! You can read about it here, on the SkyDrive's team blog. 

With a recent update to the Silverlight Streaming service, it's now even easier to instantiate a hosted app on a web page: all you need is a single iframe element whose source attribute refers to a server-side invocation URL. You can now write something like this:

<html>
<body>
   <
iframe src=http://silverlight.services.live.com/invoke/AccountID/AppName/iframe.html

     scrolling="no" frameborder="0" width="500" height="400"></iframe>
</body>
</
html
>

(Note that AccountID and AppName need to be replaced with values specific to the hosted application)

Background

Silverlight Streaming is a new Windows Live Platform offering (currently in alpha) that provides scalability-on-demand for media-rich Silverlight applications. (You can find more information here)

Once you upload a Silverlight application to the Silverlight Streaming service, it's fairly trivial to instantiate the hosted app on a web page. You could previously do it in four easy steps that look something like this: 

<html>
<
head>

<!-- (1) add a script reference -->
   <script src="http://agappdom.net/g/silverlight.js" type="text/javascript"></script
>

<!-- (2) define a Javascript function to create the hosted object; usually in a separate .js file -->
   <script type="text/javascript">
      function CreateSilverlight() {
         Sys.Silverlight.createHostedObjectEx({ source: "streaming:/AccountID/AppName",

         parentElement: pe});
      }
   </script
>
</
head
>
<
body
>
<!-- (3) define a DIV to contain the hosted object -->
   <div id="myApp" class
="aghost">
<!-- (4) add a script element to call the create function -->
      <script type="text/javascript">

         var pe = document.getElementById("myApp");
         CreateSilverlight();
      </script
>   
   </div>
</
body
>
</
html
>

[Details on the individual steps can be found here, on the Windows Live Dev site. Note that the URL used in step (1) is for the Silverlight 1.0 Beta. For more information on how to reference Silverlight 1.0 RC, see the July 27th entry on the Silverlight Streaming News page]

Looks like I missed this announcement while I was away on my recent ReMIX Europe tour (more on that in a future post). I wanted to call it out anyway, just in case you, too, may have missed it.

11.5 terabytes of new data! Including...

  • Lots of new 3D imagery for many cities in the U.S. and Canada
  • New Bird's eye coverage for many European cities (including the following cities in Spain: Ávila, Burgos, Gijón, Lugo, Ourense, Salamanca, Segovia, Vigo, Ponferrada, Zamora, Palencia, Ciudad Real, Pontevedra, Santander, Girona, Torrelavega, Valladolid, Castellón de la Plana, Elda, Fuengirola, Granada, Mijas, Murcia, Vélez-Málaga - but still no imagery for Madrid or Barcelona :-( 

You can read the details on the VE team blog: Virtual Earth updated with new Birds Eye and Aerial Imagery.

Yesterday we released this Channel9 interview with Koji Kato and Danny Thorpe from the Windows Live platform team. Koji and Danny share their views on Internet software development and evolving Windows Live into a platform.

This was my first time behind the camera - I'm a video newbie, so it's a bit shaky at the beginning (I think I actually kicked the tripod at one point) and the microphone was a bit too close to me. Oh well, lessons learned for future interviews. :-)

I'm planning a whole series of interviews focusing on Windows Live technologies, so stay tuned!

Apologies for "going dark". I had to put everything on hold for about a month to deal with the aftermath of the big windstorm we had back on Dec. 14th (you can read about it here on my personal blog, if you're interested), and it's taken me another month to catch up at work.  

And now that Windows Vista has shipped, I've moved on to Windows Live services evangelism.

You can still expect more posts on Windows Vista; over time, the focus will be more on Windows Live services. Just so you know, I'm starting off with a "blank slate" and there's a lot I need to learn to get up to speed. I'll be describing my journey as I go along - so I hope you'll want to come along for the ride :-) 

ISearchQueryHelper is a COM interface that can be used to convert from Advanced Query Syntax (AQS) to a SQL query that can be passed to the OLE DB Provider for Windows Search. (For background, see my previous post: Advanced Query Syntax: What, Where, Why, and How)

Good news for managed code developers - there's a type library from which you can create an interop assembly (using the tlbimp.exe tool). You'll find the type library (it's called SearchAPI.tlb) in the Lib folder of the Windows SDK. 

Once you've generated an interop assembly and have added a reference to it from your managed code project, here are the necessary steps to convert from AQS to SQL syntax:

  1. Instantiate the Search Manager
  2. Get the catalog manager for the system index
  3. Query the catalog manager for its corresponding query helper
  4. Convert an AQS string to a SQL query string

Here's some C# code that shows how to convert an AQS string to a SQL query string (the code fragment assumes that aqsQuery is a string variable that contains an AQS query):

using SearchAPILib;

...

CSearchManager manager = new CSearchManagerClass();
CSearchCatalogManager catalogManager = manager.GetCatalog("SystemIndex");
CSearchQueryHelper queryHelper = catalogManager.GetQueryHelper();

string sqlQuery = queryHelper.GenerateSQLFromUserQuery(aqsQuery); 

More Posts Next page »
 
Page view tracker