Sunday, December 14, 2008

Getting your cable TV Syndicted to You IPod (Legally!)


I use a Comcast DVR to record the TV shows I watch. What
I have always wanted to be able to do is have my DVR
record what I want to watch in h.264 format and then
syndicate it as a podcast to my IPod and Apple TV. Well I
just got my wish. A product called Snapstream (http://www.snapstream.com/)
let me take an old PC I was no longer using with an ATI
video capture card in it and convert it into a DVR.

Open source solutions like this that I have looked into in the past
that allow you to turn a PC into a DVR have been rather complex
to setup and maintain but SnapStream, a .NET based product,
has a drop dead simple setup and install and a 21 day free
eval to try out (Its is not very expensive to purchase either
at around $60). Anyway, the product exposes an very nice,
web based, TV guide that allows you to pick shows to record.
If the ITunes compatibility feature is turned on, any recordings
made will be converted to h.264/mp4 as soon as the recording is
complete. They are then automatically added to a podcast
named after the series they are part of. Any metadata the
program can get from its TVGuide is also integrated into the
podcast as well. You can then use the product's web based interface
to subscribe to either the "All shows podcast" or just the one named
after the series you are recording. I may now be able to get rid of
my rented DVR!

Tuesday, September 30, 2008

All Good Things...


As many of you may have already heard, My current employer, Ringside Networks is closing its doors on September 25th. On thinking back on the last eight months I find I can relate my experiences to a Star Trek Episode. As disturbing as this might sound, the episode in question was from Star Trek the Next Generation, the series finale episode called "All Good Things". In this episode you know that this is the cast's last performance, that a great team is saying goodbye. They might work together again in the future (because lord knows, there were sequels) but at this point, from their point of view, it was the end.

Ringside had an epic team of developers and a great mission: The creation of a social networking platform that could interconnect communities across the internet. In the short time we were around we fought great battles to gain the attention of the social networking community. We produced a product in just a few months capable of integrating private social communities with giants like Facebook and Myspace but in the end, the people we thought were our greatest allies walked away from the deal. All the stuff of any classic episode.

In the last days the team produced a final, innovative product which would allow any web page to become a social experience. SocialPass was a product that would enable any website owner to allow their users to "Ask their Friends" what they though about a product or service, driving new traffic to the website. Watch the video demo on SocialPass and see for yourself. What a great user experience this could have been.

If I had the chance to go back in time and do things differently as they did in the Star Trek episode this entry is named after, I don't think I would. This was a magical experience, as small start-up companies always are, and I look forward to seeing all the cast members again in the sequel.

Yammer Me This


It is not often that a web service or a piece of software makes my work life better but I felt compelled to speak out about Yammer. My team at Ringside Networks would always hang in an IRC channel because we were spread out across the US. This worked great and made us feel like a co-located team but it had its drawbacks. You had to be logged in all the time or have a bot collect what was being said when you were not around.

Then came Yammer. I was already a Twitter micro blogging fan. I already use Twitter to stay involved in my friends lives and share mine with them but Yammer allowed my software development team to coordinate like never before. While Twitter asks you to answer the questions, "What are you doing?", Yammer wants you to ask the question, "What are you working on?". As my work day progresses, I would just Yammer on what I was working on and read what the rest of the team was up to. You would get more frequent, meaningful updates than I would ever see on IRC.

The big difference was, there was no pressure to respond right way or even be online all the time to do it. It just feels less stressful. Yammer also does not limit you to 140 characters or less which is handy when describing the details of what you are doing.

Another useful difference between Yammer and Twitter is that Yammer has an implicit group of people in its community. You must have a email address at a mail domain like ringsidenetworks.com to join Yammer. Joining and using the service is free and anyone from your company who has an email address can join. Yammer provides cross platform clients and clients for mobile devices as well so you can stay in touch with your team wherever you go.

You might wonder how they plan to make money. They charge for the ability to administrate your domain. If you want to administrate the community then a company representative must pay Yammer for this feature.

If you are looking for a team building tool for your remote development team you should give this a try. Follow this link to see the TechCrunch50 Video from the yammer team.

Saturday, July 5, 2008

Don't Open That Box!

Sometimes you get lucky and capture interesting things while playing WOW . I was playing with my wife in the Terokkar Forrest the other night and she opened a box (which is something she loves to do) and we suddenly became surrounded by a ring of zombies which started closing in on us. We got lucky because they were not that hard to kill, there were just a lot off them.

Tuesday, June 17, 2008

Time Machine Saves Another Mac... Thanks to WOW


Well, a member of my family has had their MacBook die again (twice this month) but I am not complaining. It had a hard life and it was covered under AppleCare. This time it's the hard disk but we were very lucky because I have a complete backup (for once). The family member in question was not really a fan of hooking the external drive up often... until ... I moved World of Warcraft onto the external drive to make room.

What a co-incidence this was because now, every time they played WOW, Time Machine would silently do a update of the backup image of the Macbook. When Apple replaces the hard disk I will be able to restore it 100% thanks to Time Machine and the best Time Machine enabling software on the market, World of Warcraft.

Wednesday, June 11, 2008

How Easy is it to Run an OpenSocial App on Ringside?


Well now I have gone and made a video and its on OpenSocial Application Deployment. This is actually my first screen capture video made with Screenflow and there will be more to come. The process is relatively easy as long as you can handle looking at yourself on camera.

People around here felt I should get the word out about just how easy it is to develop OpenSocial applications using the Ringside Social App Server. In this first video you can watch me deploy the LastFM gadget inside the local Ringside server on my Macbook. Its as simple as creating a new app using the developer tool and then specifying the Gadget Specification XML as your callback URL.

This is by no means a guarantee that all your off the shelf gadgets will run unmodified in our Shindig based container. I am finding such a wide variation in OS versions (0.5,0.6!) and server customizations (if server=='orcut') as I have been testing off the shelf components that I am beginning to think that many of them will need to be modified before they will run cleanly. If you are interested in OpenSocial development try it out and let me know what you think.

Thursday, May 29, 2008

The Sith Lords Back Ringside!

This charming picture of Emperor Palpatine and many other beloved Star Wars characters showed up on the Ringside cam and thought it was worth sharing. I guess they know a good thing when they see it. Go Ringside!

Wednesday, May 28, 2008

Surprise! Facebook's login.php has Changed

I just noticed that one of my deployed Facebook applications was no longer working properly when it was being accessed from outside Facebook. This application allows users to make comments on abstract artwork (Its is at www.FulcrumGalleries.com). It is also running on Facebook as an application called What is Art. It is built with the Ringside Newtwork's Social Application Server which allows this type of dual deployment though the use of a Javascript widget.

This application can use Facebook to log users in when they are using the What is Art application directly from the Fulcrum website. It does this by deferring to Facebook for authentication. This is achived by following Facebook's posted authentication rules for web and desktop apps located here.

What I started seeing is quite different than the posted procedure. Originally, an application could redirect to login.php with an api_key as a parameter with the intention of logging in to a specific application. Login.php would then redirect to the calling application's callback_url with an auth_token which could then be converted into a Facebook session by calling auth.getSession. You would then use that session for all future API calls.

Well now I am seeing a different behavior in login.php. It now returns a parameter called session when it calls the callback_url. Session looks like this:
{"session_key":"263101aaf6065b08763196df-558462736","uid":"558462736","expires":0,"secret":""}
As you can see, the session parameter has the actual session_key inside it already, completely allowing you to skip the call to auth.getSession! I guess this is a time saver but supporting this change took some re-coding to get my app working again. It might be a good idea to start running a functional test against login.php daily just in case it changes again.

Wednesday, May 21, 2008

Why I Love Javascript


You can't get errors like this anywhere else.

I Mock PHPUnit

I need to write PHPUnit tests for an OpenSocial class I am implementing in PHP and I am new to PHPUnit. The class required another class, a security token as input and I did not want to create a real token for my test. To my surprise, I discovered that PHPUnit has the ability to create Mock Objects built in. It was so easy to do I felt compelled to post this example which I dug up here.

If I want to create a Mock Object for the class RingsideGadgetToken for example and it has a default (No argument constructor) all I had to do was this:

public function createMockToken(){
$uid_='100000';
$api_key_='4333592132647f39255bb066151a2099';
$api_secret_='b37428ff3f4320a7af98b4eb84a4aa99';
$token=$this->getMock('RingsideGadgetToken');
$token->expects($this->any())->method('getAppId')->will($this->returnValue($api_key_));
$token->expects($this->any())->method('getOwnerId')->will($this->returnValue($uid_));
$token->expects($this->any())->method('getViewerId')->will($this->returnValue($uid_));
return $token;
}

And I had a fully functional mock RingsideGadgetToken. If I had wanted to I could have failed if a method was called more than once (expects($this->once())) or a specific number of times (expects($this->exactly(4))). Below is the complete example I found in Sebastian Bergmann's presentation referenced above which got me started:


require_once 'PHPUnit_Framework_TestCase';

class SubTest extends PHPUnit_Framework_TestCase
{
public function testStub()
{
$stub = $this->getMock('SomeClass'); $stub->expects($this->any())->method('doSomething')->will($this->returnValue('foo'));

// Calling $stub->doSomething() will now return
// 'foo'
}

}
?>

Anyway, I was so pleasantly surprised, I thought it worth talking about. There is a great guide to PHPUnit I came across as well at http://www.phpunit.de/pocket_guide/index.en.php

Tuesday, May 20, 2008

Facebook and OpenSocial Interoperability Ideas - Component Reuse



I have been looking at how OpenSocial can be integrated into the Ringside Social Application Server over the past few weeks and have come up with two different models for integration. Which model we should adopt first really turned out to be decided based on the maturity of the OpenSocial Platform but I will talk more about this in a future posting. Right now lets talk about the model I am working on now, The Component Reuse Model.

In this model, The Ringside server becomes an OpenSocial gadget server. Shindig (Apache's implementation of an OS gadget server) is embedded in our product and it servers up the Ringside Server's social graph using an OpenSocial Javascript container and data model. This opens up some interesting possibilities.
  1. Offline OS Development: Your Ringside server can now be used to develop OS apps offline, on your own box the same way that you can already do this for Facebook applications.
  2. Hosting OS Apps: OpenSocial applications could be run as peers to Facebook apps on the same system, sharing the same social graph, in essence providing a portable application format which would allow your app to run on Orcut or Ringside for example. Ringside servers now also could benefit from the reverse of this and gain the use of existing OS apps available today (though some minor changes might be required to run in our container).
  3. Running OS Apps in Facebook: If you can deploy a OS Gadget as a Ringside application it gains the ability to authenticate against Facebook (since the platform can already do this). Once this is set up you would be displaying Facebook's social graph inside your OS application. Since it was deployed to a Ringside server as an iframe app, it could be easily registered with Facebook as an application and the Ringside server would automatically handle conversion of Facebook's social context to an OS security token.
All of this can be accomplished just by integrating Shindig into our existing Social Application Server as it stands now. A first draft of this should ship this week in the Ringside Server beta3 release.

Monday, May 19, 2008

Standup Haiku

When I mentioned that our daily development stand-up meetings were to long, one of the developers where I work (Ringside Networks) told me that my status was usually the longest so why should I object to the overall length of the meeting?

I thought, good point, but how to sharpen my status comments to a fine point and yet keep them informative and though provoking? The answer came to my mind immediately: Haiku. A simple form of poetry consisting of three lines of text where the first and last lines have only five syllables and the middle one seven. I must say this worked. Not only does everyone seem to listen more keenly but they ask the questions when I am done. Below is a sample, my status for today.

Am working on trails.
Seven and eight are done now,
Gadget server, Ready.

I am no poet, but the Haiku form sure did the trick.

Followup: This became far more popular than I thought and I have been asked to do this daily for a while (I don't know how long I can keep it up). They can be read at http://wire.tumblr.com/.

Tuesday, February 12, 2008

A Paper Computer

My eight year old son has made it clear that he wants a computer of his own. He is no longer satisfied by borrowing mommies Macbook. He put it on his Christmas list. He put it on his birthday wish list as well. Unfortunately, we both felt he was to young to have his own by he obviously felt otherwise. My youngest has a talent for building things out of paper that actually work. He has built a functioning crossbow among many other projects. I often call him the "Paper McGiver." This time he has used his paper crafting skills to send us a clear message. Since we did not listen, he was going to build his own laptop. The keys really work. The knobs turn and it has a little working lever as well. The beauty of this laptop is that it will be really easy to re-cycle as well.

Monday, January 14, 2008

Well, lets get started...

I have been meaning to start blogging for a long time now but the most trivial things can hold you back. For example, what to call your blog? I know what I want to talk about but a name eluded me. Then this morning it came to me, Games Without Frontiers. It s song by Peter Gabriel of course but something resonated with me. It was apparently about the 1980 Olympics and how the US was going to boycott it for political reasons or more specifically about how adults can act like children.

I am looking at it from a different point of view. I am not very political. My interests revolve around technology, software and science fiction. The name appealed to me because of the idea that technologies future is unlimited and the childlike optimism I have for its future. Well, lets get started.