Interview with Roku’s Nowhere Man
If you have a Roku, you've surely heard of Nowhere Man. He's created numerous Roku channels and is generally considered "the guy" in Roku app circles. In the past year I've bought an AppleTV and a Roku, and I must say, I enjoy the Roku much more; a big reason for that being Nowhere Man's apps. I was lucky enough to grab his attention and ask him a few questions about Roku development and where he stands on the AppleTV vs. Roku debate.
Chris Hagedorn works for Roku; opinions are all his own and don't reflect his employer.
Introduce yourself; where you're from and your development background.
I'm a desert rat. I grew up in Yuma, AZ, the sunniest place on earth and lettuce capital of the world. My father taught computers and owned a software retail business when I was young, so I was exposed to technology early on and pretty much always knew I wanted to make a career out of it.
I have a BS in Computer Science and Engineering from Northern Arizona University where most of my formal training was in C++ and Java.
I spent several years after college working for big corporations doing both development and configuration management. I like to think that combination gave me an uncommon opportunity to see the development process from two different perspectives and the work I do today is better because of it.
When I got tired of big companies, I went to work for a small aerial photography and mapping company where I got to do lots of cool stuff with GIS and related technologies. And after a few years of that, I went to work for Roku.
You're known as a master Roku app developer, having developed around a dozen Roku apps. How did you start developing Roku apps?
It's a long story, but I love telling it. In 2005, before I'd ever heard of Roku, I bought a Roku SoundBridge and fell in love with it both for the hack-friendliness and the industrial design, it was a beautiful device. Later in 2005 there was a small house fire and my SoundBridge was melted and mangled, but kept working. When I emailed Roku support to ask about purchasing a new enclosure for it, they almost immediately offered to send me everything I needed for free. So I was a fan.
In 2008 when I saw the original Roku Netflix Player advertised on a Netflix mailer, I decided to buy one in large part because I knew the Roku brand and had such a good past experience with the company. At that point it played Netflix and nothing else, there was no public SDK or developer program. But when they did release an SDK, I couldn't help but start tinkering with it, that's what I do with pretty much every device I buy.
I started building channels for my own use, to get the content I wanted onto the box. It was mostly podcasts at first. I had a bit of a history with podcasting and consuming that content with the Roku seemed like a natural fit. I shared those early channels with the Roku user community just for fun and with their help and guidance, the project eventually morphed into Nowhere TV.
Could you give a brief overview of the process of developing a Roku app? What tools do you use and how can you design and test your app?
There is an official Eclipse plugin, but all you really need is a text editor, a zip utility, a telnet client, and a web browser. And a Roku, of course. Personally, I use TextWrangler and make.
Once you've written a piece of BrightScript, you zip your channel into a bundle with a particular directory structure and side-load it onto the Roku through a development console accessed by pointing a web browser at the box's IP address. Once a channel is side-loaded, you can telnet into the box to see the debug console, that's where you'll see any debug output from your channel and a stack trace if the channel happens to crash.
After you've done the side-loading and debugging cycle a few dozen times or more and you're happy with your channel, you go thorough a packaging process in the browser that encrypts and signs your side-loaded channel.
Once you have a packaged channel you can deploy it as a private channel immediately or submit it to Roku's approval process for inclusion in the Channel Store.
What's the most difficult part of creating a Roku app?
How difficult is it to manage stream connection, reconnection, and quality control?
There are some attributes of playback logic that can be tweaked in BrightScript, but for the most part those things are handled by the Roku firmware and developers generally don't have to worry much about them.
Nowhere TV boasts loads of pre-recorded content from many popular cable and network channels. How difficult is it to maintain this channel and how difficult is adding new streams?
Much if not most of the content in Nowhere TV is podcasts, which makes it fairly low maintenance. Adding a new podcast can be done in a matter of minutes. In fact users can add podcasts to their own Nowhere TV favorites pretty easily using a web based tool. I recently noticed a whole lot of new feeds being added by users of a German cloud DVR service that has apparently started telling their users how to add their DVR'd content to Nowhere TV so they can watch it on their Rokus.
The non-podcast content in the channel is more work to maintain. Those items are more like channels within a channel and each one has its own custom logic for communicating with its respective API. But overall I spend less than an hour a day maintaining Nowhere TV.
What could Roku do to improve the experience for app developers?
The thing I hear most often from developers is a desire for more documentation. But I've also heard developers say that Roku is one of the most thoroughly documented platforms they've worked on. I'm in the latter camp and I think part of the discrepancy has to do with the need to learn a new language at the same time you're learning a new SDK.
There are also a fair number of content owners who aren't necessarily developers at all attempting to build channels because they don't have the resources to hire a developer to build a channel for them. If you come to the platform with no previous development experience, the learning curve will be steeper. But that's true of any platform and I'm not sure what the solution to that situation might be.
Your Twitter profile describes you as an Apple fanboy; what's your take on Roku vs. AppleTV? Does AppleTV's lack of App store and openness of development cripple the platform?
It might be more accurate to say I'm a Mac fanboy. I love my Macs and I love OS X, but I'm not quite as rabid about other Apple devices. I have an iPad, which I adore, but I also had a Nexus 7 for a while and I use an Android phone that I like very much.
I've never used an AppleTV, but it seems to be most compelling for people who live in the Apple ecosystem and get a lot of their content from iTunes. That's becoming less true as they add more third party services to their platform, but for anyone who isn't heavily invested in iTunes content, Roku is the better choice.
I do think lack of a public SDK is holding AppleTV back. Some people might try to make the quality vs quantity argument, but I don't buy it. Roku has both with big players like Netflix, Hulu Plus, and Amazon plus tons and tons of niche content. Something for everyone. I watch plenty of Netflix, but all that niche content makes for some great "channel surfing". It reminds me a little of the experience of using a short wave radio when I was a kid and being fascinated by the idea that the sounds coming out of that little box had traveled half way around the world. That seems quaint now days, but I feel that same fascination sometimes when exploring all the stuff available on Roku.
What apps do you have planned for the future?
I don't think too far ahead about channels I want to do. I did a Google Music client over Thanksgiving weekend, but it hadn't really occurred to me to attempt it until a few days earlier. Often the channels I do come about when someone asks me whether it would be possible to bring a given piece of content to Roku.
That said, I have been thinking off and on about doing some sort of replacement service for the MediaFly channel that was discontinued a while back. Whether I will find the time to actually sit down and do it is yet to be seen.