Charles Engelke's Blog

May 9, 2011

Handling Large Data

Filed under: Uncategorized — Charles Engelke @ 8:48 pm
Tags: , ,

This is my final session at Google IO Bootcamp this year, and the one I know least about going in.  We’re working with larger datasets and trying to get meaning from them, so there’s a lot of potential for us here.

This is the only session I’ve been in that wasn’t packed.  There are plenty of folks here, but there are empty seats and nobody sitting on the floors.  I’m sure people don’t find this as sexy as Android, Chrome, or App Engine.

We’re starting with the setup, which is pretty complicated.  We have to sign in as a special Google user, then join a group, then download and unpack some files, then go to some web pages…  And I’ve done all that.  Now I guess I’m ready.

We start with Google Storage for Developers, which is geared toward developers, not end users.  You can store unlimited objects within a whole lot of buckets, via a RESTful API.

We do an exercise where we create a text file, upload it, and make it readable to the world.  Then we fetch our neighbor’s file.

Next on to Big Query.  Which, for me, is a disaster.  Getting the tools set up and working is a mess under Windows, even with instructions.  And the meaning of the data we’re querying isn’t clear, making the exercise difficult.  But I got a few things to work.

Finally, we’ll use the Prediction API.  As for the exercises, I’ll try each one once then give up if it doesn’t work.  Messing with the installation and configuration takes my attention away from the actual tools.  Well, I think I’ve set it all up; it says it’s running.  I learned a lot of mechanics here, but don’t really understand what’s going on.  It should take about 5 minutes to do the prediction run I’m trying, and then I’ll see if I can make sense of the result.

Well, the result was “error” after 10 minutes of crunching.  I guess I’ll try it again, perhaps from a Linux box, someday.

That concludes IO Bootcamp this year.  All in all, it was well worth attending, even though I already knew some of the material.


HTML5 Development with the Chrome Dev Tools

Filed under: Uncategorized — Charles Engelke @ 6:47 pm
Tags: , ,

This is the session I’ve been most looking forward to here at IO Bootcamp.  I use these tools all the time, but I know I’m missing out on a lot that’s available.  We will be working with the examples at  That includes a TODO web application, and the slides from today’s talk.

We start with using Chrome to change CSS styles in the app.  I have no sense of design, so I just make things uglier.  But the various transforms and transitions are cool.  I delete items by having them slowly shrink to nothingness.

Moving on to feature detection, seeing what APIs are available to your web page.  The next exercise uses Modernizr to see if the Geolocation API is available (of course, it is in Chrome), and then we add use of it to the JavaScript for the page.  Just edit the script in the dev tools, click Ctrl-S to “save” the changes, and refresh the page.  When you’re done, go to the Resources tab, look at every version of the resource you’ve saved, and right-click to save the modified script to a file on your PC.  Very nice.

Next, profiling.  We use the Profiles tab in the dev tools and start by taking snapshots and comparing their differences.  Then start profiling by clicking on the circle, do some things, and stop the profiler by clicking the circle again.  You get a list of how much time each part of your code was running during the test.  The half second busy loop inserted in the example really eats up a lot of the application’s time.

You can set breakpoints in your code the normal way (by selecting the code to break on), even with conditional breaks.  But you can also set breakpoints on code that handles events, callbacks for XHR, and even on changes to DOM elements.  That last is really going to be useful.  But, things are going fast here and I’m not fully keeping up.  Still, knowing what’s there will let me seek out the details later.

This has been a nice session, even if I didn’t always keep up with the presenter.  I eventually covered it all, and have more tools available to me when I get back to work.

Google App Engine Workshop

Filed under: Uncategorized — Charles Engelke @ 4:44 pm
Tags: , ,

Our first lab of IO Bootcamp.  We have a dual-screen display up front, Java on the left, Python on the right.


Well, that kept me busy!  A good introduction leaving no time to blog.  See for the labs I did.

Google TV talk

Filed under: Uncategorized — Charles Engelke @ 2:34 pm
Tags: , ,

The Google TV session is just a talk, not a lab.  Based on a show of hands, it seems that the ratio of Android to web developers in the room is about three to one.  It’s clear that this talk is much more focused on Android development for Google TV, which has not been possible for regular developers yet.  And they aren’t going to announce any way to do it today.  Guess that’s for one of the keynotes at Google IO this week.  The Wednesday session on developing Android apps for Google TV is sure to tell how to deploy these apps.

Google TV isn’t intended to replace your cable connection; it’s to bring new content to your TV.  (Of course, lots of people I know want to replace the cable connection for existing content, and I think that’s inevitable.  But I guess Google doesn’t want to pick a fight with the entrenched providers.  Yet.)

We’re not going to hear about the next version of Google TV, but there are allusions to it, and how it has taken the feedback from the first year to heart.  The current Google TV is like the G1 Android phone – a first generation to prove what does and does not work.

So what’s different in developing for Google TV instead of mobile platforms?  There’s no touch screen, but there is a mouse (or mouse-like device).  There are only two important resolutions (1920 by 1080 and 1280 by 720), and only a landscape orientation.  And large icons, controls, and especially, large font sizes work best.  Don’t overload the users with too much information.  Even though we will focus on developing Android apps for Google TV, the speakers emphasize that Web apps are very often an excellent choice there.

You develop Android apps for Google TV with the same tools as developing for mobile.  You can configure the project parameters and emulators to have the same characteristics as a TV, using version 7 of the Android APIs and HDPI or XHDPI for screen resolution.  The “abstracted density” they recommend is 231 dpi.  The real density is much lower, but you view the screen from much further away so the density appears higher.  And thanks to TV overscan (a holdover from CRTs) you probably won’t see the whole screen, losing perhaps 10% of the screen at the edges.

Google App Engine Overview

Filed under: Uncategorized — Charles Engelke @ 1:23 pm
Tags: , ,

I’m going to do a little bit of Google IO blogging this year.  Probably not during the main event (there’s too much going on to stop and write about it, and I probably won’t even bring a notebook to it), but during Bootcamp I’ll be doing hands-on exercises and may have time to take a few notes here.

Here at Google IO Bootcamp, my first session is an App Engine overview (or is it AppEngine?).  I’ve used it before, but not for two or three years.  Well, actually my personal web site ( is hosted on it, but doesn’t use any of its capabilities.  There should be some new stuff here to learn.

App Engine is a cloud computing offering, specifically Platform as a Service (PaaS).  Other kinds of offerings would be Software as a Service (SaaS) such as Google Apps or, and Infrastructure as a Service (Iaas) like Amazone EC2 or Rackspace.  I love the idea of PaaS, and really want to find ways to use it, both personally and in my company, but the endpoints (SaaS and Iaas) are easier to get into.

App Engine is getting pretty heavily used.  In fact, it serves 1.5 billion page views per day.  I know one of the Royal Wedding sites was run on it.

You can create an App Engine application using either Python (the first supported language on it) or Java.  I know there are people who have run other languages on App Engine’s JVM (such as JRuby, Scala, Groovy, and others, even Jython if you want to use Python but access Java classes), but that’s too tricky for me to want to mess with.  Personally, I’ve always used Python while trying out App Engine.  It’s not a strong suit for me, but it’s a nice language and a good environment for it.

There’s an Eclipse plug-in for App Engine development, which I have installed, but I don’t much like IDEs.  I prefer a command line and text editor, and that’s how I went through the on-line tutorial to prepare for today.  Actually, I used the GUI Launcher they now offer, but still kept in my preferred text editor.

Create a free website or blog at