| Comments

I’m an avid user of Twitter (join me on Twitter @timheuer) for things social, family and technical.  I use it to keep in touch with friends, learn things from technical sources, get news and otherwise interact with names I’ve never met in person.  My use of Twitter has changed much over the years and I’ve found myself just using the web site more and more while on the desktop where a full browser is available.  On my mobile I use native clients but presently not one of the ‘official’ Twitter mobile apps (I find them less full-featured than the 3rd party ones which also offer a better performing experience for me).  In my use of the web site I’ve noticed more and more links that say “view summary” in my feed. 

Twitter Summary Card sample

Sample Twitter Summary Card from dev.twitter.com

When expanding this, the twitter post (which is limited to 140 characters itself) basically provides more information about the post.  The most frequent I’ve seen is what Twitter calls a Summary Card, which reads metadata from the URL posted in the Tweet, effectively extending the 140 character limitation a bit (however summary descriptions are limited to 200 characters).  I post to Twitter most of my blog posts and thought it would be a great little enhancement to provide this summary data in the feed view (it isn’t expanded by default so users must explicitly click ‘view summary’ and thus there is no real risk of making your Twitter feed more noisy without you choosing to read more).

Learning about Twitter Cards

I recently learned more about these after a quick exchange with @JeffSand (former director at Channel 9, now at Twitter) about another implementation (more on that later) and thought I’d get into doing the Summary Card for my own personal use.  Twitter has some pretty decent documentation on this topic on their Dev center.  There are a few types of Cards available for content authors to leverage and the great thing is that you, the content author, really just have to add metadata to your content and that’s it.  Twitter feeds/apps do the rest by interpreting and displaying that data in a Card view in the feed.

Summary Cards seem to be the most popular to me but that could be just my own personal use.  The others that I could see add value are the App info/install and deep-linking ones.  These do presently, however, seem to add most value in the mobile space and not the desktop space.

  • App Cards – provide a link to mobile apps and product page information.  This is currently limited to iOS and Google Play store listings it seems.  There is also some documentation on App Install/Deep-linking techniques.
  • Photo Cards – provide a good representation of an image in-line.  You see this for images from Twitter, Flicker, SkyDrive, etc.  Sadly, Instagram chose not to pull this support for their usage last year (yay customers…grrr).
  • Player Card – seems great for podcast publishers!  You see YouTube usage of this most of the time as well.
  • Product Cards – I’ve not seen usage of this in my interactions but I would imagine we’ll see more of this in sponsored posts/ads as they become more prevalent

After reading about these, I set out to add this metadata to my own content on my site.

Modifying my blog engine

At present I use Subtext as my blogging engine of choice.  This is due to some choices made long ago using .Text and then migrating to Subtext when that transitioned the work.  Subtext has served me very well over the years but is showing its age more recently as I’ve been desiring to modernize some things and leverage the vast ecosystem of WordPress type themes and plugins.  Still, it is Open Source, written in ASP.NET and so I could modify things as I need.

I first went to the source of Subtext and thought I’d just upgrade.  The version I run is the latest stable/release build of Subtext and hasn’t really evolved since that version release a few years back.  The version on GitHub now is moving toward ASP.NET 4, which is good and I thought I’d just move to that.  I had an immensely painful time trying to do this upgrade and ultimately decided against it (blog post on my ASP.NET migration woes perhaps to come) as there wasn’t much return on my time investment at present to do that.

The first thing you have to do is set up your Twitter Card.  Twitter’s docs have a cool Cards validator tool (only works on Webkit browsers for some reason) to give you a display of your card so you can tweak settings.  Once you do this and have your metadata set up, you need to submit your URI to Twitter for validation.  This step is critical or they won’t show up.  This step is also not entirely clear in the process and you may think that just setting the META tags are sufficient…they are not.  Use the validator tool to see the second tab to “Validate & Apply” for your card view.  I did a basic Summary Card for my entire site to get through this process so I could test/validate my own logic for the per-post metadata later.

I wanted the data from each of my posts to be a unique Summary Card as I felt that has been the most valuable I’ve used in my feed.  Card data is implemented as META tags so your mileage may vary on how you need to implement this. 

If you are a WordPress user, there is an amazing ecosystem of plugin developers who have already done this for you and you just install a plugin.  It doesn’t seem that Twitter provides a directory of recommended plugins for popular CMS systems, so I can’t speak to which ones are reliable or not.  Twitter Cards for WordPress seems to have a lot of downloads so I’d check that one out first if you are a WordPress user.

Unfortunately the way Subtext is architected doesn’t easily let me jam new META tags into my site that are dynamic (there is a tool that allows me to easily add static ones without altering the page itself).  A few properties for my cards would indeed be static (creator, site, domain) so I just used the Subtext admin area to add those.  The title and description I wanted to be content-specific.  I didn’t modify the Subtext source, but rather created my own ASP.NET 3.5 control that did this.  I put the code on my GitHub repository for you to view…you’ll see it is a quick few lines of code.  My control basically gets the context of the request, pulls the title/body out and sets these META tags.  Now whenever I post a URL to Twitter, my Summary Card option will be there and provide some helpful information to the reader (hopefully).

Viewing the results on different platforms

Looking at the results, I’m happy with my quick hack.  Outside of the web site, the cards only show on Twitter official apps it seems.  Here are some examples based on my site content.  The red box is only there to illustrate what content is actually the card:

Twitter Summary Card web view

View on twitter.com when expanding ‘view summary’

Twitter Summary Card iOS

View on Twitter for iOS when viewing full Tweet detail

Twitter Summary Card on Windows

View on Twitter for Windows

Simple metadata additions providing some more content beyond the 140 characters Twitter allows in the post itself.  I chose to use my face in the image because my blog doesn’t associate a “poster” image per-post.  If yours does, you should use that if available and change the twitter:image value as needed.


This didn’t take me long to implement and adds some additional value on to the content I post on Twitter (I hope).  Again, this is optional for the user, they have to click “view summary” or view the Tweet in details view to see this, so there is no general feed noise here.  I have found that it appears to cache the results per URL so there may be an issue if you change title/description on a post.  I’ve found that my initial tests wouldn’t update the previous Cards I had which were just the blog summary data…that’s unfortunate, but now I know.

When I talked with @JeffSand he mentioned this would be nice to have the App cards for Windows Phone/Windows Store apps (ugh, we really have to do something about that name).  I think this is a great idea!  Unfortunately it looks like Twitter needs to do something to understand Windows apps as it only understands iOS/Google Play app stores.  I’ve started a conversation with Jeff’s team as of the date of this writing and hopefully we can understand what might be required and deliver some goodness here.

If you are a content publisher (hint: if you are a blogger you are) this is a subtle and helpful addition to your content in my opinion.  If you are podcaster, consider using the Player Card as well.  It was really easy to understand and implement and I like the results.

Hope this helps!

| 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

All your base are belong to us.

The year was nineteen ninety something.  A strapping young chap entered the world of technology.  With overpromises from tech leads, undertrained programmers, and caffeine, there was nothing we couldn’t conquer. 

Or something like that.

I’ve pretty much been in technology all my “professional” life…save it being a small sting of leadership consulting right out of college that a totaled car at Duquesne solved that decision for me….but that’s another story.  I’ve grown up around programming, I’ve programmed like the worst of them and I am a better person for ‘thinking aloud’ and learning what others are doing to make me better.

Over the past 2 years I, like many of you, have entered in the world of what seems to be called “social media” or “new media.”  No, I’m not about to claim I’m one of them (warning may be NSFW with language).  But I will say I’m a user, dare I say a power user.  I didn’t get on the MySpace train because at the time I just didn’t get it and it didn’t look tailored for me.  I gave up my Geocities account long ago and didn’t feel the need to start a new one with MySpace :-).  I joke, as I know it is valuable for some social circles, just not mine…some pages make my eyes bleed.

Enter Facebook.  I list my LinkedIn account in my contact information, but I’ll be honest with you – I don’t use it.  I also stopped using Plaxo as a result of company IT restraints.  So apologies to all you Plaxo Pulse invitations…I’m not responding to them.  All of these networks seem to share the currency of “friends” in their taxonomy.  It got out of control fast on Facebook for me with tons (well relatively speaking of course) started sending friend requests.  Are these really my friends? I had to ask myself this.  But being the people-pleaser I think I am and not wanting to offend most I just started accepting them all.  Thus, my Facebook friends have gotten out of control.

Enter Twitter.  This gave us all an outlet to strip down to “status” updates.  I signed up immediately and thought it was lame.  What possible use could this be for me?  Of course I was wrong and it has been the single-most useful social tool I leverage.  I use it daily and treat it just like what I think it is – a conversation I can enter/leave/comment on at any time.  There is a friend (follower) concept, but it is easier to deal with because people can choose to follow me if I’m public (more on that later).  And I can choose who I want to follow and there doesn’t have to be a mutual connection of permission between the two.  I like that.

Enter my wife.  She’s a wonderful woman.  She’s super smart and super talented.  For years she’s made fun of my geekiness.  For a while I was McGeeky to her friends.  She would mock me in her speak (she still does sometimes).  But then something changed.  A genuine interest in certain things.  It started with her retiring from her job.  She still wanted to be connected, so got a laptop.  I introduced her to GMail.  Later she started asking what’s this blog stuff?  Soon enough she started a blog – more for journaling our family life and her perspective on it with parenting, etc.  Her blogging has exploded.  She has more posts than me combined over the 6 years I’ve been blogging.  It’s frightening and fun at the same time.  I love to see her spunky personality come through in her writing.  Then came Facebook.  Then came Twitter.

Fast forward to a few weeks ago.  We were on date night and started talking about all this stuff.  It was a surreal moment that my wife would actually want to talk about tech stuff.  You see, she has become a power Twitter user among her friends.  Her Blackberry probably sparked a lot of this with text messaging with her friends and now she also uses Twitter via her mobile!  She signed up, they signed up and she’s really using it a lot.  For now for just fun stuff, but I see her use grow more…as does her followers.  She even took a web seminar about how to use Twitter effectively.  In this conversation she asked me what’s the point for Facebook if I have Twitter?  Good question.  It was good timing as well because on that day Seesmic released their Facebook desktop application which did one thing – essentially boil Facebook down to a status stream.  As we talked about this I realized that my use of Facebook was tiny.  Beyond looking at a friend you hadn’t seen in a while and then checking out their pictures, my use boiled down to the status stream.  It was an interesting conversation we had that night.  And weird.

Since then my wife has been opening my eyes to some things.  I kept seeing these tweets of I’ve listed myself in localtweeps.com under zip code XXXX.  So me being part of the nerd sheep, I added myself.  Then I got a lesson in privacy from my wife.  She convinced me in less than a minute that wasn’t a good idea.  Again, we had a good conversation about it.  She even pointed out that people who block their Twitter stream but post it to Facebook via the linking, aren’t really blocking anything.  I actually didn’t even make the obvious connection.

Now within the past week she’s asked me about tools and I believe she started using Twhirl.  Her latest tweet had a TwitPic URL in it. 


Seriously it is fun and bazaar at the same time.  I love to see my wife blogging, twittering, and bringing technology into her life.  Some of it concerns me, but I can’t judge…my thoughts are pretty much an open book on the web.  So why am I writing all this and wasting precious whitespace on the interwebs?  Who knows…but just thoughts I had as my worlds have converged a bit.  It reminds me of a Seinfeld episode where Jerry and Elaine contemplate inviting George’s girlfriend on an outing.  Kramer points out:

Jerry, don't you see? This world here, this is George's sanctuary. If Susan comes into contact with this world, his worlds collide. You know what happens then? (Kramer raises his hands into the air and slowly brings them together in an explosion.) – from “The Pool Guy” episode

It’s like Relationship George and Independent George.  Except for me it is Husband Tim and Geek Tim.  Worlds colliding my friend, worlds colliding.

| Comments

I was just thinking the other day that I have some decent subscriber numbers here, but the same volume isn’t matched on my Twitter account.  For those who don’t know about Twitter, it’s a great short message service that kind of works like a global messaging system.  The best description I’ve heard has been:

Twitter is like an ongoing conversation at a party.  Come in and listen/participate whenever you want with whomever you want.  Leave at your leisure.  Come back often if you’d like.

I use Twitter to communicate along with friends, family and mostly developers across the world.  Rather than blog every little cool thing I find interesting in Silverlight, for example, I often send out links to very innovative and helpful information via Twitter.  Sometimes when something isn’t long enough for a blog post in my mental benchmark, it ends up going out through Twitter.  I’ve given software and passes to conferences away on Twitter as well.

Sure, all these social networking things can get overwhelming, but I’ve found Twitter to be the most useful of them all for me on various levels.  So if you aren’t on Twitter, consider it.  It is extremely helpful when actually attending conferences (usually where you’ll see the most activity) in keeping up to where/what the happenings are.  That being said, I’ll be pointing to a lot of resources during these next weeks while at MIX09 and DevConnections Orlando.

If you are on Twitter, I’d love for you to follow me for these updates.  If you aren’t, then sign up and follow me and Silverlight updates on Twitter.