This week, Seesmic announced a new Seesmic Desktop platform.  They finally revealed more details to the public and released developer previews of their shell, SDK and some sample plugins.  You can get them on the Seesmic Developer Wiki.

Seesmic Developer Platform

The best part?  It’s built on Silverlight 4 and the Managed Extensibility Framework (MEF)!  This is awesome news for those of us who have been using various clients that have been locked down to specific use scenarios.  There always is a few things I want/need/etc in software and it’s great now that (at least in this space) I can change things I don’t like.

That’s right, Seesmic Desktop is moving more toward a “shell” concept (my words, not theirs) where they provide some defaults but also extensibility points for anyone to replace and/or extend.  Don’t like the way they implemented Twitter?  Fine, change it (or search for a better plugin).

This is a great way to get started with MEF as well.  Seesmic Desktop 2 gives you an implementation of extensibility points and you just have to implement them, mark as the right Export/Imports and watch how ‘it just works.’  There were two plugins that I wanted to create right away, so here they are in my own personal ‘works on my machine’ release band.

Translator Plugin

One of the things I’ve found in using Twitter and Facebook is that when you start searching for things you notice that you find interesting information but it might not be in your native language.  Recently I’ve been playing around with Microsoft Translator, which had an updated release at MIX10.  As a frequenter of Twitter, I often just ignored the non-English information as I simply couldn’t read it and didn’t have a ready way at my fingertips to translate it.

My first plugin is my Translator for Seesmic powered by the Microsoft Translator engine.  Simply drop this XAP in the plugins directory for Seesmic Desktop 2 and you’ll see new action options in the menu area of any timeline item:

Translator for Seesmic screenshot

Click this and it will translate the text to the current culture setting of your desktop (i.e., the intention is that your desktop is likely set to your preferred language).  Here’s a video of it in action:

Get Microsoft Silverlight

This is an example of a TimelineItemAction plugin that is global combined with a dynamic adding of a TimelineAttachment (the translation control).

Foursquare Venues

I’ve been using Foursquare a lot lately.  Why?  I have no idea.  Fun I suppose.  If my political ambitions don’t work out in real life, I always know that I can be Mayor of Yogurt Jungle.  Anyway, when in Twitter, Facebook, whatever people can ‘check-in’ to Foursquare and announce their location.  This posts a note like I’m at Yogurt Jungle http://4sq.com/XXXX where the short URL points to the venue where you can get details.  I wanted to be able in my app to see the venue details without having to visit the site.  Luckily Foursquare has a public API.  With that I can integrate ‘expanding’ their short URLs into Seesmic Desktop 2. 

Seesmic Foursquare Plugin

See the plugin notices when a Foursquare venue was mentioned (based on the short URL) and gives you the option to view more details (this is called an attachment in Seesmic Desktop Platform).  Once clicking on it, it will expand to show the details (with a clickable title to the further venue details if you want) and an embedded map showing the location.  Pretty cool?  Maybe not to you, but I’m having fun finishing it.  This is an example of a timeline Processor plugin with an attachment in the plaform.

Summary and test my plugins

As a Microsoft/.NET/Silverlight developer, extending the Seesmic Desktop Platform is easy.  I’m familiar with everything I need to do, and just needed to familiarize myself with the extension points of the platform.  MEF makes it easy to focus on what I want to do in my plugin and let the platform worry about loading things up, managing lifecycle, etc.  I look forward to extending the platform for my needs more (and sharing what I’ve created for others).  I’ve always extended things for my own use (creating 3 plugin extensions for Live Writer to meet my needs) and this is not different.  I hope others can share their extensions as well!

The Foursquare plugin has a bunch of bugs I’m trying to work out right now so I don’t consider it stable to share just yet.  The translator one is ready for testing.  I’ve listed them on a page I’ll maintain my other contributions until Seesmic has a better distribution method.  Visit my Seesmic Desktop Plugins page for more info.  Be sure to subscribe to my feed for updates on Silverlight and my contributions!

I use Seesmic for my social media stuff (Twitter, Facebook, etc.).  Recently they created the Seesmic Desktop Platform which enables software developers to enhance, change or extend their Seesmic Desktop application.  This platform is built upon Silverlight 4 and is quite simple to extend.  To learn more about the Seesmic Desktop Platform, view the developer wiki.

I’ve created some plugins for my use and post them here to share with you.  Use them as you’d like, they imply no warranties :-).  For installation of the XAP files, see the developer wiki above.  In the future I’ll provide easy installers for these (or I think Seesmic may enable easier consumption as well).  Here are the ones I have:

How to develop plugins for Seesmic Desktop 2

Interested in developing plugins? You can start by installing my helpful Visual Studio Seesmic Templates and then visit http://devwiki.seesmic.com for details on how to write plugins!

How to Install plugins for Seesmic Desktop 2

While I firmly believe this process will improve, here is the simply way to install these (or other plugins) for Seesmic Desktop 2.  It’s as simple as copy/paste.

  • Windows: "My Documents\Seesmic\Seesmic Desktop 2\Plugins" (or Documents if you are on Windows 7)
  • Mac: "$HOME\Documents\Seesmic\Seesmic Desktop 2\Plugins"

Translate Plugin

This attaches a Translate this item action menu to any timeline item.  It takes the contents of the timeline item and attempts to translate it to the user’s chosen machine language using Microsoft Translator.

Seesmic Translate Plugin

This will also allow you to translate text from your current language to a supported language BEFORE you post the message to the service like Facebook, Twitter, whatever.

Seesmic Translate Plugin

Download: TimHeuer.Seesmic.Translate.xap (06-SEP-2010)

Foursquare Venue Plugin

This looks in your timeline items for Foursquare URLs and attaches an adorner for you to be able to expand the Foursquare short URL format into the details of the venue and see them presented in the timeline view.

Seesmic Foursquare Plugin

Download: TimHeuer.Seesmic.Foursquare.VenueFilter.xap (06-SEP-2010)

Image Previewer Plugin for Twitpic, yFrog, Twitgoo, Flickr, Instagram and Tweetphoto

This looks in your timeline items for Twitpic, yFrog, Instagram or Tweetphoto URLs and attaches a preview of the image with a link to the direct image again (per the terms of the APIs).

Seesmic Picture Previewer

Download: TimHeuer.Seesmic.PicturePreviewer.xap (06-SEP-2010)

Migre.me URL Shortener

Per a user suggestion on the desktop platform plugins forum, I created this Migre.me URL shortener add-in.  These are perhaps the easiest to create.  No screenshot but it adds the Migre.me option to the URL shortening toolbar.

Download: TimHeuer.Seesmic.Migre.xap (06-SEP-2010)

Twitlonger

While not a service that I frequent, it is handy to have.  Twitlonger was developed to shrink longer messages to the standard Twitter 140-character limit and provide a link to the full text.  This plugin puts a button Shorten with Twitlonger in the posting area and shrinks the content for you automatically.

Download: TimHeuer.Seesmic.Twitlonger.xap (06-SEP-2010)

img.ly Image Posting Provider

This plugin lets you choose the http://img.ly service to post and host your images in your messages.  Use this in conjunction with my Image Previewer plugin to get posting *and* previewing of images from img.ly!

Download: TimHeuer.Seesmic.ImglyProvider.xap (21-SEP-2010)

Goo.gl URL Shortener

Enable Google as your URL shortening service within Seesmic Desktop.  No screenshot but it adds the goo.gl option to the URL shortening toolbar.

Download: TimHeuer.Seesmic.Googl.xap (11-JAN-2011)

UberFilter

Sick of seeing all the Foursquare, Gowalla or Paper.li postings flood your feed? Install this plugin to choose what to filter out (none by default). After installing, view the settings section of this plugin to choose what noise to turn off. Version 1 is limited to Foursquare, Gowalla and Paper.li but next version will add more known noise and allow for custom filters. Updates will come automatic after installing this one.

Download: TimHeuer.Seesmic.UberFilter.xap (16-JAN-2011)


This work is licensed under a Creative Commons Attribution By license.

Each release of Silverlight it is the goal to make sure existing Silverlight applications continue to work.  Since I think what this means causes some confusion I’m going to do my best to explain what we mean by this.

Silverlight 3 application working with Silverlight 4

Okay, scenario 1 is I have a Silverlight 3 application (XAP), will that still work as-is in Silverlight 4? 

Yes, this is the situation we refer to as backward compatibility.  What this means is that existing compiled XAPs under previous versions should continue to work as-is even if your users have a later version of Silverlight installed on their machine. 

An example would be someone like Netflix.  If you are already a Netflix instant watch user with their Silverlight application, then you’ve been watching movies fine on your computer for a while.  If you go and download Silverlight 4 today, this should not change, even though their player is Silverlight 3.  From the docs:

The Silverlight team wanted to fix a number of Silverlight 3 bugs in Silverlight 4. However, by fixing some of these bugs, it is possible that some existing Silverlight 3 applications would break. In order to avoid this, the Silverlight team addressed these potentially problematic changes by creating a "quirks mode" for runtime behavior. A quirks mode change is a case where the Silverlight 4 runtime will branch its behavior if the runtime detects that the application is targeting Silverlight 3. In this way, Silverlight 4 is made "bug compatible" as a runtime. However, the noted quirks mode behavior may need to be revisited if you recompile your application for Silverlight 4.

The above scenario (previous version Silverlight apps running under their version mode) is often referred to as “quirks mode.”

Silverlight 3 CODE recompiled as Silverlight 4 app

Next scenario is I opened my Silverlight 3 code project and compiled as Silverlight 4 and now it doesn’t work!?  You said backward compatible!!!

This is where breaking changes come into play.  Breaking changes range from anything from security fixes to bug fixes to correcting behavior that we wanted to change.  We try at all costs to avoid breaking changes, but sometimes they are unavoidable to progress and make things right.  When we can’t avoid them, we do our best to ensure that quirks mode (described above) works as customers expect.

For Silverlight 4, there are some breaking changes from 3->4 that developers should be aware of.  These are all documented on MSDN here.  Here is a point list of a few of them:

  • XAML Parsing AmbiguousMatchException when application property conflicts with new Silverlight 4 property
  • Toggling full screen mode reruns hit testing
  • Shared BitmapImage resources
  • DRM on cients with FAT32

The document explains the scenarios as well as what to do, if applicable. 

Hopefully this helps understand a few things.  If you find that your compiled Silverlight 3 XAP is not running correctly when rendered in a Silverlight 4 plugin environment, please let us know on the forums with as much detail as possible (i.e., “it doesn’t work” isn’t enough).


Yet again, we’ve updated the Silverlight Client for Facebook for the Silverlight 4 release version.  In order to use the updated one, you must follow these instructions:

  • First, uninstall the previous version you have.  This can be done in Add/Remove Programs on Windows or by just deleting the app on Mac.
  • Ensure you have Silverlight 4 installed.  If you are using the development tools and have installed Silverlight 4 developer tools, that’s fine.  If you are not a developer, visit http://microsoft.com/getsilverlight to get the latest Silverlight 4 version (4.0.50401.0).
  • After you have Silverlight 4 installed, visit the app page and install it.

You should be good after this! 

So why so many uninstall/re-installs!?  I thought you had an auto-update mechanism!

We do!  With Silverlight 4 trusted applications, the update mechanism requires that your applications be signed in order to use the auto-update APIs.  We wanted to wait until SL4 released in order to provide a signed version (and our internal signing process didn’t allow signing the beta).  Now that we have a signed version, you’ll be prompted when an update has been installed for the app.  For more details on signing your Silverlight applications see:

Hope this helps!

Today’s the day!  Tuesday at DevConnections in Las Vegas, Scott Guthrie just announced the ‘launch’ of Silverlight 4.  We wanted to take the opportunity at DevConnections to let a large audience of our customers online/offline know that we’re done and shipped Silverlight 4.  As of today it’s now available for you to download/use.  Here’s some helpful quick update information for you:

What’s New in Silverlight 4?

Rather than cut/paste what I’ve already said here, I recommend the following reading:

These two posts are full of detailed information with links to tutorials and videos to help you get started.  Since the RC (which was released middle March), not much has changed from an API perspective so you should be good to go getting started using the above information.  One thing that has changed in the tools is that for XAP signing, there is a UI support for enabling the tool to help you select a certificate, etc.  You can still use my post-build method though.

Downloading Silverlight 4

The availability of Silverlight 4 will be approximately 10:00 AM PST on Thursday 15 April 2010.  I suggest you prep now by getting the Visual Studio 2010 release that was launched/available yesterday.

The goods:

That’s my own personal minimum list.  VS and SL4 tools are the minimum required to get started doing development.

Wait, what’s this RC stuff?

To be clear, Silverlight 4 has released.  This is RTW (release to web).  It is the version 4 of Silverlight.  Shipped.  Done.  Finished.

The tools (namely SL4 tools, RIA Services and Blend) are in their ‘release candidate’ mode.  I’ll spare you the gory details, but remember that these tools teams need SL4 to be *done* before they can be done.  SL4 is a dependency for them.  These tools are release quality though and I’d recommend using them.  Their final versions will come soon enough and will be a minor update.

What about RIA Services?!  You don’t consider that to be valuable?!

Actually I do.  But if you’ve installed the Silverlight 4 Tools, then you already have it!

This seems to be some confusion to many and perhaps because of how we present the information in an effort to be complete.  If you are a developer, install Silverlight 4 Tools.  After this installation completes you will have:

  • Silverlight 4 developer runtime
  • Silverlight 4 SDK
  • Visual Studio patch, debug tools and project templates
  • WCF RIA Services RC

installed.  No need to run the SDK or RIA Services installers separately.  Adding the Silverlight Toolkit to this provides you with more controls to leverage in your applications as well (charting, ContextMenu, etc.).

Hey, what about the Windows Phone 7 developer tools?

If you need to continue doing Windows Phone 7 development, stick with the Visual Studio 2010 Release Candidate for now!  The updated CTP of the Windows Phone developer tools is not quite done yet.  Information about updated tools availability will be forthcoming on these tools.  Stay tuned.

Can I keep VS2008 and VS2010 on the same machine?

Yes you can.  Visual Studio 2008 and 2010 can co-exist on the same machine.  Obviously there are some differences to what the tools can do with regard to Silverlight.  There are two distinct differences I like to call out:

  • VS2008 cannot be used for Silverlight 4 development.
  • You can only have one version of WCF RIA Services installed on the machine.

For the latter, you may be asking “huh?”  There is a version of RIA Services for VS2008.  There is also a version for VS2010.  Unfortunately RIA Services cannot co-exist in two versions.  You have to pick one.  And the VS2008 one is only for SL3 and only supported until December this year.  I recommend moving on from that…it’s not going to be developed any more…essentially the PDC09 version was the last revision there.

Other resources

If you need other resources, be sure to check the Silverlight Community Site for details on things like the stand-alone documentation file, Mac platform developer build (for debugging if needed) and other resources.  Be sure to check out the Silverlight 4 videos if you haven’t yet as well!  I’ve gotten a few questions so I’ll emit some resources here:

Hope this helps find things easier.

What about the future versions…

Man, give us a break!!!  But seriously make your opinion known on http://silverlight.mswish.net for features.  Be specifically broad ;-).  What I mean is “Fix Printing” doesn’t help, but “Enable automatic paging in printing” is better.

Hope this helps!