Google Chromecast

I managed to get my hands on a Google Chromecast at the weekend. Many thanks to Mike Carew for bringing one back from the US for me via Dale.

Having unpacked the stick I plugged it into my TV and plugged the usb cable in to power it. At first nothing happened and the little notification light on the device stayed red. but replugging the power cable it jumped into life. The instructions directing me to http://www.google.com/chromecast/setup, I had to do this in the Chrome browser and on my Windows laptop as there is no setup app for Linux at the moment (There is a config app for Android, but this is only available for US users at the moment)

When I got to the point where I had to configure which WiFi network the chromecast should connect to there was a problem as my router’s SSID was not showing in the list. It took a couple of minutes for me to remember that I had set my router to use channel 13 as it’s normally lightly used. The reason it is lightly used is because in the US you can only use channels up to 11. A quick change of channel later and the network showed up in the list.

The next part is the only bit that is not as slick as it should be. The Chromecast was fully configured but when I tried to use one of the apps (I’ll talk about those in a moment) it would not show a Chromecast available to send data to. The problem was that my router had done it’s usual trick of walling each of the separate WiFi device from each other, this feature can be called a few things but the most common seams to be apisolation. In a place with shared WiFi like a coffee shop or hotel this is good as it stops people snooping on or attacking your machine, in the home environment this may not be suitable and in this case very much unwanted. I had run into this problem before as one of my MythTV frontends is on WiFi and I had changed the settings to allow WiFi cross talking but the router seams to forget the setting pretty quickly, my usual trick was to reboot my router if I needed to log into it from my laptop to fix things. This was going to become a real issue with the Chromecast. After bit of digging I found a forum post about how to tweak the settings via the telnet interface so quickly ran up an expect script to do it when needed.

#!/usr/bin/expect

set timeout 20
set name SuperUser
set pass ###########

spawn telnet 192.168.1.254

expect "Username : "
send "$namer"
expect "Password : "
send "$passr"
expect "{SuperUser}=>"
send "wireless mssid ifconfig ssid_id=0 apisolation=disabledr"
expect "{SuperUser}=>"
send "saveallr"
expect "{SuperUser}=>"
send "exitr"

This gets called by the script I’ve got bound to a button on my remote driving LIRC that changes the input on my TV from RGB used for MythTV to the HDMI socket used by the Chromecast which ensures my network is always setup properly. I really shouldn’t have to do this but O2 Wifibox III I have is not the best.

Once I’d got all that out of the way time to start actually using this thing for what’s made for. Out of the box there is support for the Chromecast baked into the latest version of the Android YouTube app, Google Play Music, Google Play Movies and Netflix app. I don’t have a Netflix account at the moment so I tried out the other 3.

YouTube app

When the YouTube app finds a Chromecast on the local network it adds the little cast icon to the Action bar. When you tap on this it displays a pop-up to all you to select the Chromecast (if you have more than one on the network) and then rather than play the video on the devices screen they are played on the TV. Play/Pause and volume control are available on the device. One other really nice feature is that the Chromecast maintains a queue of videos to play so you can add to the queue from your phone while it’s playing the current video, in fact if you can do this from multiple devices at the same time. This means you can take it in turns with your mates to see who can find best cat video.

Google Play Movies
Much like YouTube Google Play movies lets you play content on the Chromecast. I had rented a copy of Mud the week before getting hold of my Chromecast so I watched this on the TV rather than on my Nexus 7. The only odd part was that I had downloaded a copy to the device and it would not let me watch it via the Chromecast without deleting the local copy.

Google Play Music
The music app works as expected, showing the cover art on the screen while it plays the tracks. Because it streams tracks directly from the cloud if you are working through a playlist and hit a track that you have added directly to the storage on the phone then it will refuse to play even if you have pushed a copy of the file to Google Music’s cloud storage.

Away from applications on your Android device there is a plugin for the Chrome browser which allows you to share the content of any tab on the large screen. I need to have a look at using this for giving HTML5 based presentations.

There is a API for interacting with the Chromecast and and I’m going to have a look at writing an app to push MythTV recordings so I can replace one of my MythTV frontends. First impressions of the API make me think this shouldn’t be too hard if I can set up the right transcoding.

Over all I’m pretty impressed with the Chromecast and I’m still debating if I should ask my folks to bring me another one back as they are out in the US at the moment.

developerWorks Days Zurich 2012

This week I had a day out of the office to go to Zurich to talk at this years IBM developerWorks Days. I had 2 sessions back to back in the mobile stream, the first an introduction to Android Development and the second on MQTT.

The slots were only 35mins long (well 45mins, but we had to leave 5 mins on each end to let people move round) so there was a limit to how much detail I could go into. With this in mind I decided the best way to give people a introduction to Android Development in that amount of time was to quickly walk through writing reasonably simple application. The application had to be at least somewhat practical, but also very simple so after a little bit of thinking about I settled on an app to download the latest image from the web comic XKCD. There are a number apps on Google Play that already do this (and a lot better) but it does show a little Activity GUI design. I got through about 95% of the app live on stage and only had to copy & paste the details for the onPostExecute method to clear the progress dialog and update the image in the last minute to get it to the point I could run it in the emulator.

Here are the slides for this session

And here is the Eclipse project for the Application I created live on stage:
http://www.hardill.me.uk/XKCD-demo-android-app.zip

The MQTT pitch was a little easier to set up, there is loads of great content on MQTT.org to use as a source and of course I remembered to include the section on the MQTT enabled mouse traps and twittering ferries from Andy Stanford-Clark.

Here are the slides for the MQTT session:

For the Demo I used the Javascript d3 topic tree viewer I blogged about last week and my Raspberry Pi running a Mosquitto broker and a little script to publish the core temperature, load and uptime values. The broker was also bridged to my home broker to show the feed from my weather centre and some other sensors.

Tracks2Miles 2.0

I’ve been working on a near complete re-write of Tracks2Miles over the last couple of weekends months. It’s taken so long for a couple of reasons, when the weather was good I just wanted to be outside running/cycling and for the (larger) period when it was grim out just not wanting to spend any more time writing code after doing it all day at work.

Small screen view

A number of major changes have been made, but the one that is likely to be most noticeable is the move to using Fragments for the layout of the GUI. This means that I’ve been able to create some layouts for devices. There are now 3 layouts:

  • Small size screen
  • “Normal” size screen
  • Tablet size screen

I know that a tablet layout for Tracks2Miles may seam a little strange since it started out as just a way to upload routes recorded by My Tracks and the image of a guy out jogging with a 10.1″ Galaxy tab strapped to their arm is a little stupid. But since adding the ability to view the timeline of workouts and to manually enter workouts it has started to make some more sense. That and the stats* says there are at least 31 tablet (running Android 3.1/3.2, there may be more on 4.x+) users already out there. Hopefully this new layout will pull in some more tablet users as (IMHO) looks a lot better than the phone view scaled up.

The other big change is the move to using the built in sync mechanism to drive the collection of new timeline entries. This means you can now have Tracks2Miles pull in new workouts, comments and routes on a regular basis in the background. A side effect of this is that I’m going to have to drop support for Andriod 2.1 as the syncing API had some improvements that make this a lot easier at 2.2. The same stats that showed the total number tablet users show there are only 39 users left on 2.1. The older releases should continue to work for them.

Android notification showing number of new workouts in timeline

This use of the syncing API means that I the timeline can be updated at regular intervals in the background so you will always have the latest workouts when you open the all and allows me to add alerts for when there are new entries.

A feature requested by Brian O’Donovan was the ability to sanity check speeds for different workout types, I think this mainly came about because of the distance conversion feature when the units are changed. I’ve added some options to the beta settings menu that allows you to set a min and max speed for a few of the workout types. If you enable this checking a toast message will pop up if the average speed for a workout is outside these ranges. You can access the limits under the beta section of the preferences screen.

At this point I think I’ve pretty much exhausted the capabilities of the current Dailymile API but hopefully there should be a improved version due soon. In the mean time I suppose the next step would be to look at translating Tracks2Miles to some other languages. The Google Play stats suggest that Germany might be a good first choice.

I cut what I hope to be the final beta today and after hearing back from the testers I’ll push it to Google Play as an update.

* Up until v2.0 I’ve been using the built in stats that come with the Google Play, but for this release going forward I have also included the Google Analytics library so I should get a much clearer picture of what the spread of devices running the app are.

Tracks2Miles v2.0 beta testers


Now I’m back from my amazing holiday in Yellowstone it’s time to put in a final push to get Tracks2Miles V2 out the door.

I have all the core functionality working now and I just need to finish off some of the new value add features.

So with that in mind, if you would like to beta test v2 leave a comment here and I’ll send you an email with where you can grab the apk

Tracks2TitanXT with My Tracks v2.0

After having to update Tracks2Miles to work with My Tracks v2.0, Erik from TitanXT asked if there was anything that needed doing to make Tracks2TitanXT work as well. It turned out that no changes were needed but the route through My Tracks had changed enough to make creating a new walk through video worth it. So here it is.

My Tracks v2.0

This is a real quick post as a heads up. The My Tracks guys have just shipped a pretty major update to My Tracks. This update has changed a load of things including how you export tracks for Tracks2Miles to upload them to Dailymile.

I’ve just pushed a real quick update (I hope I’ve not broken anything) with a fix for an interface that changed, without the fix Tracks2Miles will crash when you try to export a workout with the new My Tracks.

I was hoping to ship Tracks2Miles v2.0 at the same time My Tracks v2.0 shipped but I’ve been really busy with work so not been able to get it finished in time. I hope to get it all done over the next few weekends so I can get it out soon.

Exporting workouts has got a little bit more convoluted with the new My Tracks so I’ll try and do a new walk through video as well.

Tracks2Miles 1.1.16

I pushed a new update to the market at the weekend.

It should hopefully fix a problem where Tracks2Miles would complain it could not access My Tracks data even when sharing was allowed. This looks to be down to a change in the My Tracks API with the My Tracks 1.1.15.

I’ve also tweaked the “Like” handling a little to only work for posts that are videos or pictures as this seams to be the only type of posts this works.

Recently a college has been having a look at the code to see if there are some things he wants to add. Hopefully I should have something from him soon.

Tracks2Miles 1.1.14

Finally got round to spending some more time on Tracks2Miles.

This release is an attempt to make use of a lot of what is left of the API.

New features:

  1. New Workout types:
    • – Commute
    • – Spinning
    • – Rowing
    • – Cross Training
  2. Support for multi-media posts, Uploaded Images and links to Youtube and Vimeo are now shown in your timeline
  3. Like your friends workouts
  4. See when you get Motivational comments
  5. Added pull to refresh support to the timeline
  6. Slightly improved look and feel, the white background looks better

All that plus a couple of bugs I spotted along the way.

There is a new introduction video with a walk through of all the features

As always you can get the very latest version from the Android Market here: https://market.android.com/details?id=uk.me.hardill.dailymile

The next version should have better support for tablets and ICS devices that support Activity Fragments to make better use of large screens. I’ve also managed to arrange to borrow a Sony Ericsson X10 mini to see about trying to improve the UI for those of you with really small screen devices.

Tracks2Miles 1.1.10

Just a quick update while I’m still working on a 2.x release*.

This release has 2 updates:

  1. A small update to the import code to make use of the patch I managed to get included in the latest (1.1.11) release of My Tracks
  2. A new setting in the preferences to block uploading GPX data with a workout imported from My Tracks. This was a feature requested to help people with privacy concerns

You can download Tracks2Miles here: https://market.android.com/details?id=uk.me.hardill.dailymile

* The plan is for 2.x to have a updated UI making use of fragments for tablet and ICS devices.