| Comments

Seesmic logoToday, Seesmic more broadly launched Seesmic Desktop, a refreshed platform for interacting with various social media outlets like Twitter, Facebook, Google Buzz, etc.  Seesmic has been one of the leaders in this space providing client applications on various platforms across web, desktop and mobile and providing us with unified views of our interaction with others online.

You may have remembered seeing Loic on stage at MIX last year demonstrating their first preview of this updated platform and inviting developers to be a part of extending the shell.  That’s right…their platform is extensible!  A great application that I can also modify to my needs?  Double rainbow…what does it mean!?

I went to the evening social session at MIX to hear about how they would be enabling developers to extend the platform.  In introducing the concept of plugins, it was made clear that the Seesmic Desktop Platform (SDP) would be leveraging the Managed Extensibility Framework (MEF) that was to be included as a part of Silverlight.  Seesmic would define MEF contracts that as long as developers adhered to them (and of course implemented any required interfaces for actual functionality) then the plugin would be able to extend the platform.  The most grandiose idea can be simply stated as if you don’t like how Twitter is represented in Seesmic, fine…change it.  Of course, I suspect most people will be just fine with their implementation and choose to extend in other areas as I’ve done.

Seesmic Desktop 2

Admittedly I’ve got a vested interest in being excited about SDP…after all it is built using Silverlight.  However, I’m also very much into being a part of my online connected network via Twitter.  Prior to SDP I did not use Tweetdeck or some of the other popular multi-column ones…but was a user of Twhirl.  I loved the simplicity that it provided but did desire for slightly more.  I never got into Tweetdeck and honestly I don’t know why…it just never stuck to me in how I interacted online.  The thought of customizing my own experience, however, is what intrigued me to SDP.

I immediately got started writing some plugins, starting with something that I use often, a translator for reading messages incoming that aren’t in my native English.  Some may scoff, but when you monitor a lot of different things online, this becomes important as I don’t want to ignore things that might be interesting.  I chose to use Microsoft Translator services and in a few hours had my first rough draft plugin completed.  It was very rough (mostly because I desired a lot of things from Seesmic).  I showed Marco my warez and started to give feedback on what I think the platform needed for this specific use case as well as to make my life easier. 

Since then the platform has significantly evolved to accommodate most developers needs.  Seesmic has been very responsive on the developer forums for the platform to needs and questions.  Getting started writing a plugin couldn’t be easier for a Silverlight developer, but I’ve tried to make it even simpler (as I was sick of doing the same tasks myself).  I created some templates that you can download from the Visual Studio gallery that will help get you started.  Once installed you’ll see a nice new project template in Visual Studio:

Seesmic project template

This will stub out the initial shell you will need (you’ll still need to add the correct references to the SDP SDK).  From there you can add item templates for the base plugin type or other types: posting actions, timeline items, etc.  Here’s what my templates provide:

Seesmic item templates

These should give you some good jumpstart code to provide some of the necessary plumbing that would be required.  This is NOT a substitute from understanding the platform!  You need to read the docs and understand the interaction of the API with the platform to be successful.

TIP: When you add references to the Seesmic SDK assemblies, change their Copy Local attribute (in properties) to false so you don’t end up shipping them with your plugin.  Since they are already a part of the platform there is no reason to ship them with your plugin (and this makes your plugin size smaller).

To me, I think the easiest plugins to create are those that implement a URL shortener, posting action or a timeline processor.  These are the areas which would allow for very fast customization.  The account providers is likely the most time consuming as you could imagine as you are interacting with authentication schemes, etc. 

I’ve created a few initial plugins that you might be interested in and you can download them here.  I’m really excited about this platform and the fact that I can extend it to make my interaction with things I care about uniquely my own.  Install Seesmic Desktop today and start developing using the SDK!

| Comments

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!

| Comments

MSDN Radio imageThis morning I was on a weekly (new) radio show from MSDN, hosted by Mike Benkovich.  The show, MSDN Radio, features live call-in questions that you can ask.  It was a better format than the typical live meeting text-based QA I thought.  I think hearing questions gives you a better chance of articulating your inquiry more.  Thanks to all those who listened and asked questions.  I know it seemed short and there were a few more questions in the queue – feel free to send me questions you may have.

UPDATE: The audio from the show was just posted here.

There were a few that I wanted to follow-up on and get some more answers from other team members.  Here are 3 items I wanted to provide a bit more follow-up to (I’m paraphrasing the questions).

Vince asked a question around Prism and part of that was what are the plans for Prism moving forward?  I didn’t know a concrete answer, so I quickly asked around.  Take a look at the team’s post on Prism, A Look Ahead.  The team talks about the next release (v4) to be around the September 2010 timeframe.  They also comment on using Prism today with Silverlight 4.  As to what will be in Prism 4?  They offer some insight:

  • Managed Extensibility Framework (MEF)“In particular, we’ll be looking at leveraging MEF for Component Composition (for hooking up Views and ViewModels, and other types of components), for Modularity (for the discovery, download, and instantiation of functionality packaged in a module), and for UI Composition (for mapping Views to Regions).”
  • Model-View-ViewModel (MVVM) Pattern – “…we’re looking to expand our current guidance and to include more re-usable code assets to support various MVVM scenarios. In particular, we’re looking to support common patterns for View/ViewModel interaction, hierarchical ViewModel composition, and ViewModel-based navigation. In addition, we’re also looking to provide more support for application-level structural patterns, layout management, the use of Ribbon/Popup/Dialog controls, and user state management.”
  • Data Access and Application Services (i.e., WCF RIA Services) – “…we are looking to provide guidance on using these technologies in the context of MVVM, and on patterns for data validation and caching. This area also includes the use of other services for user preferences, authentication and authorization. This latter aspect brings in the possibility of providing guidance for role-driven (or claims-driven) applications and user experience.”

I’d encourage you to subscribe to their blog and be a part of their conversation over there as well.

Scott asked a question about how to best define DomainServices (contexts) in your application – is it better to have 1:1 for entity:DomainService or other methods.  I asked the RIA Services team for some additional input to my answer. 

DomainService should be based on a set of related tasks that you expect the end-user to perform in [your application]. Typically such tasks involve a small group of closely related entities; e.g. in an Expense reporting app, Expense Report, Line Items and Details would be a good set of entities to cover in a single DomainService while covering accounts and payments in a separate DomainService type.

Additionally Jane asked about many-to-many relationships with regard to RIA Services.

Currently RIA Services require the “class in the middle” containing FK values in a many-to-many. In  a POCO model, you can add it yourself while in an EF-generated model, you would have to change the model (edmx) to add such a class in the middle.

Hopefully these provide some additional clarity on top of my opinions.  There sure seems to be a lot of interest in the RIA Services space!

Hope this helps!

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

| Comments

At PDC09, Glenn Block delivered a great presentation on building extensible RIAs using the Managed Extensibility Framework (FT24 from the PDC09 sessions).  Glenn is one of the PMs and face-man for MEF.  He’s been traveling all around singing the praises of MEF for .NET developers and gathering feedback along the way.  You may remember Glenn from his work with the Prism framework as well.  I snagged Glenn at the end of PDC to grab a sound-byte:

Glenn has already started a series on MEF in Silverlight starting with the basics and then continuing along deeper.

These two initial posts are helpful to anyone who hasn’t started at all with MEF and understanding the value of implementing an extensible Silverlight application.  I know Glenn has more up his sleeves and I’ve been thinking on ideas with him as well (trying to learn MEF myself) so be sure to stay tuned for more excellent posts by Glenn on MEF and Silverlight!

| Comments

It’s that time of year my friends in Arizona.  No, I’m not talking about when the air conditioners start get turned on, nor how the golf green fee rates are reduced or the snowbirds fly away…although those are good things as well.

I’m talking geek fest time.  Mark your calendars:

26 May 2009 – 8:00 AM

The community leaders in the area have organized another big event for your benefit.  So who is coming?  Here’s the rundown:

Glenn Block – come see why you should get addicted to MEF.  Don’t know what it is?  That’s an even better reason to come.  If you haven’t learned about MEF, you’ll want to see what Glenn has to show and talk about…it’s quite cool.

Jaime Rodriguez – from the WPF side of the house, Jaime is coming to talk about WPF development and the continuum of reusing skills (and some code) from Silverlight and WPF development.  Want to know what is going on in the WPF world?  Come and ask Jaime. 

NOTE: Also don’t forget to register for the Phoenix WPF training event for free as well! Info here and Register here for the WPF LOB Tour.

And last but not least…

Scott Guthrie – he returns to brave the early heat of the desert!  Scott is ready to talk about Silverlight and ASP.NET MVC frameworks and what his teams are up to.  Bring your questions and take advantage of this opportunity to talk with the one responsible for building the web platform for Microsoft.

This truly sounds like a great event and one NOT TO MISS!  Tell your co-workers and friends.  This is a free event!  You can register for this event here.  Please come and spread the word to support this community event.  Your community leaders will thank you (and be able to do more things like this for the community).

Spread the word! REGISTER