Monday, February 4, 2008

SharePoint in the Kitchen

Synopsis: This is about how I tried to use SharePoint in the home for simple calendaring -- in our kitchen.

Ok.  I'm a geek.  My kids will certainly come to appreciate that some day.  I love gadgets and such.  I guess that comes from the influence of Star Wars and the like.  What was so cool about those movies was that technology was so integrated into everyone's life.  The movies made the technology appear dependable, omnipresent and just down right cool.

My Grand Plan

So when it comes to my own life, I try to make technology just blend into the background and be helpful to our lives.  I had this old Sony VAIO laptop from 1998 that I was just itching to use somewhere in the house, because it was still cool to look at -- it was one of the super slim designs which is less than an inch think when folded up.  Unfortunately, it's dog slow these days, but ok for some simple browsing.  I'm running Windows 2000 on it.  I can't believe I used it as a dev machine (Classic ASP and VB). 

Anyway, I came up with the great idea of displaying the family calendar so my wife always knows what's going on with family events.  So I cleaned up the kitchen counter (just enough to place the laptop there) and plugged in an external wireless adapter and pointed it to a SharePoint site, which is running on a machine in the basement... I mean, my server room.  I used SharePoint Designer to create a custom page which showed just the family calendar and I dropped some JavaScript that refreshes the page.  Then I point my browser to it in full-screen mode and it looks something like this:


To update this calendar, I can use the SharePoint interface or I can use Outlook 2007.  From within SharePoint (WSS or MOSS), you can add two-way synchronization to an event calendar very easily (only with Outlook 2007, however).  Just navigate to the calendar within SharePoint and choose "Add to Outlook" from the Action menu of my SharePoint site.


After that, you can just go into SharePoint and edit the calendar data that is stored in SharePoint.  Very slick.  There are other client integration points with Office 2007, but I will have to talk about that in another post.

Ok.  My wife just loves this... NOT.  I thought about taping the laptop to the fridge to increase visibility, but that was quickly shot down for some reason.  For now she lets me keep it on the counter.  However, she doesn't use it.  Why not?  Doesn't this provide all the information one might need at a glance?  It's it cool. 

What's Really Cool?

Someone to use and truly love your software day in and day out -- that's cool (at least if you're a developer-type like me).  I've developed enough software to realize that just because you have something that looks cool and seems to address the needs of the user (and does exactly what they asked for), you're not always guaranteed a win.  If what you build doesn't get used, you're just wasting time (which means money -- mine or somebody else's).

"So what can I do to make this better?," I asked myself.  Well, when looking at the calendar, I don't always need to see the past history.  I really just need to see today and then a few days ahead.  The font is really too small.  I also think it would be helpful to see a short list of tasks.  And I'm not really saving the screen here.  I'm wearing it out since the page is always the same and the screen saver is turned off.

When I looked at the platform I was running on, I thought the use of a screen saver might be good here.  A screen saver would be pretty clean from a usability perspective.  And there's a sample project in Visual Studio just for that.  I know that I probably could have done something with dynamic HTML or Silverlight, but I was really curious to see how to make a screen saver for some reason.

You can actually do this with minimal work since the sample screen saver application allows you to point to an RSS feed.  Since any SharePoint list or document library can expose itself as an RSS feed, you're set.  Well that is until you decide to want to display things like tasks and calendar items on the same screen with nice fade-in and fade-out functionality.  Below is the starter project you can use.


So it might be nice to use this project to display SharePoint data.  Maybe I could tap into the SharePoint web services interfaces.  But for now I have a simple calendar view that displays full-screen in a browser.  It's OK, but I really think a screen saver would be more interesting.  That's for a future post.