One of the things that most excited me out the Google I/O event a couple weeks back was Google TV. It's a set top box that brings a lot of web content to the TV. But what really excites me about it is that it's an Android platform, that will have access to the market place. Having this announce come out a couple days after I pushed my first Android app out got me even more excited about the platform.
In my house I've got the following devices: a thermostat that's attached to my home network, with a web interface that lets me adjust the temperature and programs; a TED 5000 energy monitor which is on my home network; a set of weather station sensors that I'm collecting data from on my home server. Each of these have some web interfaces, non consolidated, to get data, and small little screens on the respective devices to go and see what's going on. And in my living room I've got a 42" TV, with brilliant color.
I want all these various home sensors and actuators to show up on my TV, and for me to be able to control them from there. I keep looking at my logitech harmony remote and really thinking that I should be able to use channel up / down to adjust the temperature in my house when we're hanging out on the couch watching TV. Not that many months ago, intrigued by how the Netflix Instant Bluray disc worked, I started looking into the Bluray Java spec, and realized that if I had to I could probably build a disc for my PS3 that would do most of this, but it would be pretty custom, and the dev / test cycle would burn through a lot of bluray media. I tried to download the Popbox SDK to see if they'd give me what I want, but they've made it impossible for me to actually do that.
Google TV is going to give me a set top box in my living room that will let me get access to a wide range of content, which will be great, but also let me publish my own code to it. As a creator of software, having that application channel, even for only my own use, is just incredible. The fact that it will share a lot of characteristics with my phone makes it all the better.
I really can't wait until Logitech gets it's box out there, and I've got something to experiment with. Having my livingroom TV be the nerve center of my home is a concept that seems so natural, and I'm surprised has taken this long to bring us this kind of tech.
While the magnets and why questions video tends to get more internet play, this one is short (4 minutes) and makes you realize something very important: plants don't come from the ground, they are built out of the air.
Where is Io 1.3 has been released, and is available for free on the Android Market. Most of this release was behind the scenes refactoring, as I tried to get this into a shape where I could do useful animations. Being a good little agile minion I made sure there were some user visible enhancements for the release. There are only 2, but they should be useful:
Time hash marks so you get a good idea of how far in the future I'm displaying
The main screen will actually update over time (before it was just drawn on start or rotate)
I learned a heck of a lot about the Android state model; threading in Android; when certain threads like to stop and start relative to the state model; how much the Java thread signaling model leaves to be desired; the fact that google knows that, and created this really nice Handler infrastructure to do async message passing; and that it's really important to have good utility functions when you are converting between 3 different time schemes.
I also broke down and learned how to use the Eclipse debugger on Android applications, as one of my bugs was just not finding its way to the surface (the afore mentioned time conversions). Holy crap. I am seriously impressed with how good and intuitive the integrated debugger is when it comes to Android apps. Nicely done folks.
The project has gotten me to appreciate Java again. Java was never my favorite environment, but with the support in eclipse, Google's quite tight API set for Android, and emacs keybinding support, I'm now about 1/2 as productive in Java as I am in Ruby. That's saying something, as previously that number would have been 10% or less.
Now that I've got the basic threading and signaling going in this application, I'm going to see about some animation on startup. Maybe I'll even get that done in time for Frank's Android talk on Wednesday.
What does an industry with almost no intellectual property protection look like? It looks like fashion, and this TED video gives you a lot to think about when it comes to IP protection of creative works. The low IP industries are much bigger markets than the high IP industries, and there is not a death of innovation in them.
Google has a different view. Android isn't summer camp for handset vendors and not everyone gets get a trophy for showing up. Google is treating partners equally, but will not slow the rate of innovation so weaker players can keep up. By constantly raising the bar, both in terms of reference devices and software, Google aims to keep innovating and drive that innovation as a differentiator. Google wasn't looking for volume sales with the Nexus One, it was looking to raise the hardware bar -- and arguably the best way to do that is to do it yourself.
I've now gotten the 2.1 update for my Sprint Hero. I'm very happy for the new browser and new google maps, those were things I was longing for. I've installed 3 applications that needed post 1.5 APIs... I haven't even run one of them. Everything I'm writing for Where is Io is 1.5 compatible, and it only needs that level because of the NDK code.
I'm all for Google continuing to beat the drum of innovation and put out 2 or 3 Android releases a year. Makes for great phone upgrade options come the holiday season.