If you saw my tweet about porting Chrome to the Roku, I'm afraid it was, indeed, an April Fools joke. I didn't actually rewrite Chrome in a TV scripting language. However, I did build something cool.

When you build software you have to map between two things. First is the representation that you develop with: your code, your graphics in photoshop, your CSS.. whatever it is. It's the thing you actually manipulate. Then you have the actual visual representation of the thing you are building: the app running on a real device, the page in the browser, the executing game.. whatever it is you are actually making. I believe software improves if we can minimize the distance between those two representations.

I suggest you watch Bret Victor's amazing presentation on the topic. It's long (1hr) but completely worth it. I have been a believer in this philosophy of minimizing editing distance for some time, but Bret explains it better than I ever could.

But back to the Roku

The Roku is very easy to develop for, but it still requires writing some code, turning it into an app, and installing it into the device. While not hard, it can be annoying. It also increases the distance between the editing and viewing representations. So, I decided to build a Roku power-up in Leonardo Sketch.

If you are new to my blog: Leo Sketch is an open source vector drawing tool I've been working on for a while. It can export to SVG, PNG, PDF, and JavaScript. The Roku power-up will export your current drawing into a Roku app, then compile and launch it. It is just a static image on the screen at this point, but it's a good start. In the future you will be able to add behavior and animation to the graphics. The Chrome April Fools hack was just a screenshot of Mac Chrome I had lying around, exported to the Roku through this plugin.

Leo Sketch Power Ups

Now you might be wondering what a Leo Sketch 'power up' is. It's a new kind of plugin system I'm working on, currently only available in an experimental branch. (the 'powerup' branch, if you want to try it out). Powerups are like plugins except they only have an effect when you explicitly activate them. This solves a lot of problems with traditional plugins, plus it enables a few new interesting things. I'll cover powerups more in a future blog. For now, just know that they will be awesome, and Leo Sketch will soon be exporting to far more than static image files.

Stay tuned.

For Christmas Jen and I finally bought a TV after four years of distraction-less living. We finally decide it was time after countless evenings watching Hulu on my 15" laptop. We were adamant, however, that we would not buy cable. We just want a better way of watching Hulu, NetFlix, and a few other sites. To make that happen I bought the latest Roku device, Angry Birds edition.

If you aren't familiar with it, the Roku is a small box you attach to your TV with HDMI. It runs special apps that stream content over the internet and can display full HD content. The box itself is quite nice. It's super tiny, makes no noise, and uses a bluetooth remote instead of infra-red. You can also side load content from a USB stick.

For basic streaming of video from Hulu or music from Pandora the Roku works quite well. I wish the interface was a bit prettier and had smoother animation, but it yes the job done with minimal fuss. The apps is where the device has it's most potential but also it's greatest failure.

I have long been a fan of putting apps on a TV, especially when tied to an internet based store. The concept seems so obvious that I have to assume Apple is working on this (unless they decide to just stream everything through your iPad). Apps are a good way to view video because the content provider can customize the experience, but that is just the beginning.

For most people, the nicest display in their house is the TV. It is usually centrally located and has comfortable seating. And yet we only watch video on it. This seems like a waste. Such a beautiful high resolution screen should be used for much, much more. Dynamic artwork. Video calling. Interactive picture frames. Music visualization. And of course games. The potential is endless.

So why hasn't it happened? Honestly, I don't know. The technology has been ready for a couple of years. Roku and Apple can sell their devices at a profit (or at least break even) for under $100. I think the device makers are too focused on the lure of video. That's where the sexy business model is. They all dream of being the next cable company. The company that sits between you and the content, exacting a per-use toll. This is also the *hardest* part to do. And while they waste time dicking around with video streaming rights they ignore the potential of other uses for a beautiful large screen attached to the internet.

But I digress. Back to the Roku.

The Roku has it's own app catalog (called the Channel Store) where you can get both paid and free apps. Unfortunately the selection is meager and the interface is horrible. It's a table of rows, each showing a picture of the app. When you choose an app you see a details screen where you can purchase it. This interface simply won't scale. There is no searching and few categories. The details screen has no ratings or screenshots, just the 'cover art'. And the selection of non-video apps is horrible. A few bad games and radio apps.

I'm not sure why the Roku is like this. They've solved most of the hard parts: initial setup, in app payments, device navigation, OAuth association with online services. They just don't have the apps. App development itself is fairly easy. You must use their proprietary BrightScript, but it's easy to work with. The SDK is just some command line scripts that install right to your test device. They clearly took a few pointers from webOS on how to make development easy. My only suggestion would be switching to JavaScript (and making the native sdk public).

The other thing that makes me wonder is that the features of the device haven't changed much over the past few years, and their development process seems slow. They announced their 3.0 SDK about a year ago but it only just went final, with fewer features than expected. They have Angry Birds running but only allow native development access (C + OpenGL, I'm assuming) for special developers. They promised to open it up to everyone, but nine months later they still haven't. For a startup this seems slow.

There is also a few apps that I really expect to be present and aren't. You can stream photos from FaceBook and listen to Pandora, but there is no built in app to stream music, movies, or photos from your desktop computer. Given that their main competitor, Apple, did this from day one I'm not sure why it's absent. The few 3rd party apps which do this are horrible! This is especially surprising since I would think that streaming MP3s from a network drive would be the first thing people in the open source community would do. BTW: I did try Plex but it doesn't do music. The other MP3 apps I found were amazingly slow and ugly.

So, things brings me to three questions that I can't answer:

  1. Why is Roku the way it is? Are they focusing on other things (better content deals)? Are they understaffed? What's up?
  2. Is there any interest in an app to stream music from your iTunes lib on your desktop (it would require a single click server on the computer). I'd love some help on it to make it non-ugly.
  3. Am I wrong about using modern HDTVs for non-video purposes? Is there simply no interest in this?