Updating webcast recordings…

I have received a few requests from folks about a bad webcast recording.  I’ve been told that there are some problems with the recording for:

Building Workflow Services (WF+WCF) with Visual Studio 2008

Additionally, I have received some requests for better quality recordings.  I have little control over the quality of the recordings for my live webcasts because I broadcast the Live Meeting desktop sharing at a low color depth in order to make sure all attendees have a good overall viewing experience.  You’d be amazed at the varying levels of bandwidth people connect with.  Although Live Meeting allows much higher video broadcast quality, I have not had success using it for a broad Internet audience.  Inevitably, someone lets us know that they are having issues with desktop sharing screen refresh rates.  This is almost always a bandwidth issue on their end.  The latest Live Meeting client may have gotten better at this, but I haven’t risked trying it.  I’ve stuck with the lowest common denominator approach to keep things simple/working.  If anyone out there has some tips/tricks to improve this, let me know!  Unfortunately, the side effect of my lowest common denominator approach is that the recording quality is low.  Apparently, the quality is so low that some people refuse to watch it:(.  I suspect this has to do with the post webcast video processing.  In the future, I will try the higher quality broadcast again. 

I just recorded my Adding Mapping Capabilities to your Applications with Virtual Earth and ASP.NET AJAX session again in preparation for a CD the Virtual Earth team is putting together.  The recording quality will be the same as my channel 9 screencasts since I used Camtasia Studio to for the new recording.  The recording is basically a refresh of my standard VE programming session updated to 6.1 & incorporating the Virtual Earth JavaScript Intellisense helper (see Updated Virtual Earth Map Control demo code for more details).  I am still trying to figure out how to replace the original recording on the Live Meeting servers with the new one.  Once I do, I will let everyone know it is available.

I cannot record every webcast again.  However, I plan on doing a few as my schedule permits.  Specifically, I will start with the one people have reported has issues.  From there, I will update the ones I know had some demo glitches.  So far, the webcasts I plan on recording again are:

Building Workflow Services (WF+WCF) with Visual Studio 2008

Overview of the Microsoft ASP.NET 3.5 Extensions Preview

Microsoft Synchronization Services for ADO.NET

You can find a complete list of my recorded webcasts in the My Recorded Webcasts list on my Windows Live Space.  While I am at it, I figured I would try out the idea of creating a survey and letting those who read my blog pick which ones I record again.  If you are interested, please click here to take the survey.  I will prioritize the time I have to record new versions based on the survey results.  The list of webcasts in the survey are only the webcasts I have personally presented.  Furthermore, I’ve only included the more recent ones since recording older content would take significantly more time and effort:(.

UPDATED WORKAROUND: Intellisense for page level map variables using the Virtual Earth JavaScript Intellisense Helper

UPDATE: AH FOOEY!  I feel like a goof:).  Turns out my workaround DOESN’T WORK!!!  If you look at the logic from the original post, it makes sense that it wouldn’t work because “var map = new VEMap();” is before “var map = null;” and therefore you get Intellisense for null.  I swear it worked (giving me Intellisense for page level map variable in multiple functions) the first time I tested it.  I think I may have been a victim of the JavaScript Intellisense cache not having updated :(.  Nonetheless, I was so excited about it working, I jumped the gun with my original post.  Yes, I realize the last picture in the original post didn’t actually convey what I was trying to accomplish.  I showed the wrong scenario in my haste to get a blog post up.  Maybe if I would have shown the right scenario, I would have recognized the err of my ways:).  This entire post has been rewritten with my "plan B" workaround.

So I have been playing around with other approaches to the workaround described here.  The first thing I tried was:

image 

On the surface, this seemed like a reasonable workaround.  However, there were still some scenarios where JavaScript errors would pop up.  For example, switching to 3D mode would cause the map control to raise an error:

image 

A similar error would happen when you close the browser.  One could argue this annoyance is a small price to pay for JavaScript Intellisense for the map control:).  However, it is still very annoying.  Good news!  There’s a better workaround.  After fiddling with a bunch of ideas, I stumbled upon the following approach:

image

Everything JUST WORKS!  You get JavaScript Intellisense at design time and the map is null at run time until it is actually instantiated in pageLoad().  This makes for a nicer experience since you don’t have to put up with the annoying error messages or constantly comment/uncomment code to get Intellisense where you need it.  Of course, in production, you should replace the conditional logic with var map = null for your page level variable.

Interestingly enough, this approach works well in another scenario:

image

In this scenario you won’t get Intellisense for x above the if statement because Visual Studio does not perform return type analysis.  However, using the same trick, you can see that you get Intellisense after the if statement.  This makes life better in a number of scenarios.  However, it does litter your code a bit.  Use it at your discretion:).  One could write a little utility that scans .js files and removes these entries based on a regular expression.  Maybe we’ll look at writing something such a utility for our next release.

None of this is in the current release of the Virtual Earth JavaScript Intellisense Helper, nor is it in the updated code I recently blogged about at Updated Virtual Earth Map Control demo code.  However, I will get both updated in the coming days.  For the sample code, I will update the original blog post when I publish the updated code.  I will make sure we release a new version of the Intellisense helper with these changes soon.

ASP.NET MVC “step by step”

Rob Conery  is "creating an ongoing series of webcasts and blog posts, documenting the building of an eCommerce storefront using ASP.NET MVC."  As of yesterday, there are 7 installments in the series.  I haven’t gotten around to reading/watching them yet, but they are definitely on my TODO list.  The latest post, MVC Storefront, Part 7: Helpers and Routing, has links to the previous posts as well.

Technorati Tags: ,

Updated Virtual Earth Map Control demo code

UPDATE: I’ve updated the code to use the workaround described here.  If you downloaded this code before May 2nd, 2008 @ 7:30 PM EST, then you might download it again.  The URL is the same.

I’ve update my primary Virtual Earth (VE) map control demos. If you aren’t familiar with my VE demos, they are essentially all the samples from the Virtual Earth Interactive SDK redone in a Visual Studio solution. My directory structure maps almost identically to the steps treeview in the Interactive SDK:

 image image

Then, I sprinkle in a little ASP.NET AJAX and Windows Communication Foundation (WCF) where these technologies can make building VE solutions easier. All you have to do is download the zip and you basically have the Interactive SDK code++.

Here’s what’s new in the updated code:

  • All pages use the 6.1 map control.
  • Cleaned up some AJAX code that still used really old previews from ASP.NET AJAX (Specifically Microsoft.Web.Preview.dll & Sys.Preview.UI scripts from the Microsoft AJAX Library).
  • Additional code cleanup.
  • All JavaScript files use the Virtual Earth JavaScript Intellisense Helper.
  • All JavaScript files have a reference to their corresponding .aspx page so we get full Intellisense for the Microsoft AJAX Library and any other additional .js files referenced in the ScriptManager.
  • 05 – Customize Shapes/CustomizeShapes.aspx.js has an example of how to restyle the VE InfoBox using Cascading Style Sheets (CSS).
  • 07 – Import Data/GeoRSS_Collections_KML.aspx.js shows how to import KML.
  • 08 – Custom Tile Layers/CustomTileLayers.aspx.js correctly shows the custom tiles. The web site is now configured to use a fixed port for the ASP.NET Development Server.
  • 10 – Route and directions/RouteDirections.aspx.js uses map.GetDirections() instead of map.GetRoute() since map.GetRoute() is deprecated. I also added a multipoint routing example.

You can grab the code here:

http://cid-1f72da7294089597.skydrive.live.com/self.aspx/Public/Virtual%20Earth/VEMapControlDemo_v6.1_VS2008.zip 

WEBCAST FOLLOW UP: Overview of the Microsoft ASP.NET 3.5 Extensions Preview

Thanks to everyone who attended!  Sorry about the demo hiccups / going over.  As I mentioned in the beginning, I had a hard time trying to get everything I wanted to cover into 90 minutes.  As you can see, there’s quite a bit in the ASP.NET 3.5 Extensions.  Normally, I make all of my code demos available for download.  However, I used a newer build for my demos that’s not publicly available.  Once we release the new bits, I will make my code available.  For now, you can download my ASP.NET 3.5 Extensions deck here.

UPDATE: I just created a list of links on my Windows Live Space called ASP.NET 3.5 Extensions.  This list has links to all the relevant landing pages & forums for the various technologies covered today.  Newer versions of MVC, Dynamic Data, and the Silverlight Controls have been released since the December 2007 release of the ASP.NET 3.5 Extension Preview.  Make sure you read the release notes of each newer package to understand how to get the newer bits working on top of the December 2007 preview.  The ADO.NET Entity Framework and ADO.NET Data Services in the December 2007 release of the ASP.NET 3.5 Extension Preview are the latest releases as of today (04/30/2008).  Stay tuned for a newer release that will reflect the updates you saw today.

Silverlight 2 WrapPanel and ViewBox

These are two controls I hear people ask for that aren’t currently shipping in Silverlight 2 (as of Beta 1).  However, since anyone can build a Silverlight control you have to think someone has built these right?  They have.  Here are the two I am aware of:

Viewbox for Silverlight2

WrapPanel for Silverlight 2

I am sure there are more floating around the web.

Technorati Tags: ,

What is this Live Mesh and why do I care as a developer?

Well, I am not going to try to answer that:).  No seriously, the best way to get this question answered is to watch a MUST SEE video on Channel 9 called Programming the Mesh.  One of the many scenarios I think you’ll find interesting is using Live Mesh to bring a web based Silverlight application into the Mesh and make it available out of browser and enable offline use of the app.  Let me say that again, OUT OF BROWSER AND OFFLINE!  The demo is about 27 minutes into the video, but I wouldn’t skip forward because then you’ll miss the fundamentals which help you understand how it and the other demos work.  The Mesh opens up many interesting scenarios.  Why are you still reading this?  Go check out the video!

Technorati Tags:

WEBCAST: Overview of the Microsoft ASP.NET 3.5 Extensions Preview

The ASP.NET 3.5 Extensions Preview is a new release that provides new functionality being added to ASP.NET 3.5 and ADO.NET in 2008. This release delivers a set of new features that target:

  • Enabling High Productivity Data Scenarios – including MVC, Entity Framework, ADO.NET Data Services and Dynamic Data
  • Supporting Test Driven Development – including a powerful and extensible MVC framework
  • Creating the best server for Rich Clients – including Ajax history support and Silverlight controls for ASP.NET

We will take a lap around all the great capabilities packed into this upcoming release including ASP.NET MVC, ASP.NET Dynamic Data, ASP.NET AJAX, ADO.NET Entity Framework, ADO.NET Data Services, and Silverlight Controls for ASP.NET.

When

Wednesday, April 30, 2008

2:00P-3:30P EST (11:00A-12:30P PST)

Register at this link:

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373610&Culture=en-US

FOLLOW UP: Developer Dinner on Silverlight 2

Thanks to everyone who attended!  Here are the download links I promised:

Deck: Building Rich Internet Applications Using Microsoft Silverlight 2

Code: My Digg Sample

The sample app is based on Scott Guthrie’s First Look at Silverlight 2 blog series.  I added some things here and there.  If you want to see the same basic demo again or you want to pass it on to someone you are in luck because I created a three part channel 9 screencast people can watch:

SCREENCAST: Silverlight 2 DIGG Sample

After the dinner, someone asked about using Silverlight with SharePoint.  If you are interested in this scenario, you will want to check out this post:

Silverlight Blueprint for SharePoint

UPDATE: After the DC dinner, I promised to link people to my post on Silverlight 2, Accessibility, Section 508, etc.

Technorati Tags: ,

SCREENCAST: Hosting a Workflow in a Local Executable using Workflow Services Part I

When the Windows Workflow Foundation (WF) was first introduced in the .NET Framework 3.0, the only way to host a workflow in a client application was to use the WorkflowRuntime class programmatically, start the runtime, and create/start an instance of a workflow.  Furthermore, if you wanted to communicate between the client code and the workflow logic, you needed to use a ExternalDataExchangeService.  This required a fair amount coding effort to get even the simplest of workflows up and running.  The .NET Framework 3.5 introduced Workflow Services which are Windows Communication Foundation (WCF) Services authored as workflows.  Workflow Services give you a new way to accomplish this scenario using a much simpler, cleaner, and arguably more elegant approach.  In this three part screencast, I show you how to improve on the more manual hosting + ExternalDataExchangeServices approach by hosting a workflow in a client executable using Workflow Service.

Part I – Reviewing the SimpleExpenseReport application from the Create a Sequential Workflow tutorial so we can compare the two approaches. The application explicitly hosts the WorkflowRuntime & uses ExternalDataExchangeService

Part II – Walking through the fundamentals of creating a Workflow Service and hosting the Workflow Service locally

Part III – Walking through my rewrite of the SimpleExpenseReport application using Workflow Services.

Source code for the Workflow Services version of SimpleExpenseReport is available at http://cid-1f72da7294089597.skydrive.live.com/self.aspx/Public/WCF_WF/SimpleExpenseReportWorkflowServices.zip.