Recently I gleefully exclaimed on Twitter “exciting news” and despite the interest I didn’t feel until now that I could reveal what had happened, Google were looking for a hire … Google were looking to hire me:

Hi Martin,
I am a technical recruiter within Developer Relations at Google and I wanted to get in touch. Based on your background and postings, I feel you could be a great fit, as we are hiring for multiple positions within Developer Relations in NYC and Mountain View, CA locations specifically. Are you currently entertaining new opportunities? If so, I would like to get in touch at your earliest convenience to discuss your background and active opportunities. Looking forward to hearing back!

Ah finally the 100+ blog posts I’ve written on Google, countless presentations on hacking stuff together with Google Spreadsheets (a couple here) and I finally got noticed.  What was most interesting about this message came from … LinkedIn!!!

Yes that’s right despite having a decent presence of Google+ it appears Google do some of their recruiting through someone else's social network. This initially led me to question if it was a genuine approach or just some recruiting agent phishing for CVs spoofing a Google connection. The only thing that gave comfort was the inclusion in the message of the sender’s email address and I opted to reply via this instead. Still though LinkedIn! Why not Google+ or even Gmail. If Google are looking for hires through LinkedIn that’s a pretty big argument to make sure your graduates have a presence there … right?.

Fortunately the message wasn’t a phish and the recruiter got back to me and we arranged a phone call. The call was primarily a chance for the recruiter to find out if I was suitable to be put forward for one of the posts and included the basics: what programming languages do you use, experience of public speaking etc. As I later found out the recruiter is essentially your handler, making sure you are aware of the next steps, providing a friendly interface to what can be a daunting experience. At this point the expectation of getting a job in developer relations began to slip. As someone who prides themselves on being a hacker, often even using ‘I’m not a developer’ in my introduction - primarily because I’m often talking to novices and I want to make a connection with the audience - my lack of formal IT qualification and experience was going to be a handicap, but this is Google they pride themselves on innovation … right?

Regardless of this the recruiter saw enough to put me through to the next phase which was a 45 minute call with a Google software developer (not HR person, Google use employees to benchmark candidates), which was a mixture of ‘why do you want to work for Google? … hmmm you called me’ and a programming problem to solve. I’m not sure if part of me wanted to sabotage my opportunity but I completely tanked at this. This left me feeling both angry and disappointed. I was mainly angry for pretending to be something I’m not … a software developer. I’m a hacker, an innovator, a scamp, a scallywag. I betrayed my original calling as a Structural Engineer long ago to search of the next novelty, the next shiny thing to play with, the next idea to stretch until it breaks. No I’m not a software developer.  And thankfully Google agreed, which I sure comes as a relief for a number of people in this sector … right?

The recent news that LinkedIn has dropped their minimum age to 13 to entice school kids has extra resonance for me because now I know even Google use it for recruitment. It reassuring to know people like Sue Beckingham, Matt Lingard and others recognise the importance of students having an awareness of LinkedIn.

So folks I‘m afraid you're stuck with me ;)

Some things I learned along the way

The University of Phoenix have been in the news recently having been awarded US Patent US8341148 B1 for the ‘Academic activity stream’:

A method and computer-readable medium for generating an activity stream is provided. The activity stream includes a ranked set of objects that are presented to one or more users. The ranking of objects is updated to reflect events associated with objects.

I was alerted to this news in this post by Phil Hill on e-Literate in which he highlighted:

“The patent lists several “embodiments” of the concept – examples of approaches that could be pursued to implement the activity stream. These embodiments include re-ranking of a book chapter based on recent student comments or preferences and notifications when 75% of students have completed an assigned reading.”

As pointed out by Scott Wilson in the comments it looks hard for this patent to stick given the amount of prior art knocking about (especially as I used to use PostRank and still use Google Reader ‘sort by magic’ to make sure the important information stays at the top of my reader). Also the Talis Aspire Reading List Dashboard may address the last case, although it's unclear if this is prior art.

diigo group popularAnother example of ranking based on associated event I stumbled on today was in bookmarking site Diigo. As part of Diigo’s service you can create groups to collaboratively collect and curate resources. As well as a chronological view there is an option to sort by ‘popular’. Here’s an example of a Diigo Group for #etmooc.

I’m not entirely sure what the ranking is based on but it doesn’t appear to solely be on page views. I’d imagine number bookmarks by other users is another factor or the number of times someone hits the ‘Like’ button.  Another example of prior art?

An aside: Using Yahoo Pipes to add social share counts to a feed

I had a quick go with pulling resources from the Diigo ‘popular’ page and using social share counts as another factor in ranking results. I got as far as this pipe which scrapes the top 20 popular items (no api/feed available) and then loops through the results using this sub-pipe, which uses the API to take a url and see how many times it’s been shared across social networks (here’s a more general pipe that adds social counts to any RSS feed).

pipes feed with social counts

On one hand because a lot of the bookmarked resource aren’t brand new the counts might be a weak indicator of something (you may want to normalise the weighting based on age of resource), but overall this feels like a rabbit hole (not least because I couldn’t use the social share data to rank the results), so I’m tagging this as a failed idea.

It did get me wondering if within a open course (cMOOC) context pulling bookmarked resources into your course hub using FeedWordPress and then getting participants to rate might be … umm interesting  (GD Star Ratings plugin looks good for this although I did spot on the etmooc hub they are using WP PostRatings).


I came, I saw, I failed. This was a potentially promising hack that didn’t work out. Hopefully you’ll get as much benefit from failure, as from success.

Today I can across oomfo (from the same makers as FusionCharts):

oomfo is a plug-in for Microsoft PowerPoint that brings all the awesomeness of FusionCharts Suite XT to PowerPoint. Its wizard-based interface helps you create great-looking animated and interactive charts in minutes.

Using oomfo, you can create specialized charts like Waterfall, Pareto, Marimekko, Funnel and Pyramid, which PowerPoint forgot to add. Additionally, you can connect to live data sources like Excel, SalesForce, Google Docs and your own back-end systems

I was interested in the Google Docs integration but so far I can only find a Google Analytics connector. It was disappointing to discover that this relied on the user hosting a PHP file on their own webserver. Disappointment turned into shock when I then discovered to get even this to work required the user to pass unencrypted Google usernames and passwords in plaintext!

WTF unencrypted passwords

All the connector file is doing is formatting data from the Google Analytics API in an oomfo/FusionChart XML format. Below is an example for a single series bar chart:

oomfo xml

My thought was if I wrap data from a Google Spreadsheet around the Google Apps Script ContentService I could generate the required XML for oomfo to generate the chart in PowerPoint, no hosting of files, no passing of passwords.

Using my simple electronic voting system hack as a data source I was able to reuse this example on Stackoverflow on how to create a rss feed using class ContentService to create a template and code shown here. Deploying this code as a service/web app gives me a url I can query to get oomfo formatted xml. So if I want responses tagged ‘dev1’ I use: 

Unfortunately when I try to use this as an external data source for oomfo I get ‘Unable to retrieve data from the specified URL’:


To check it’s not malformed xml I’ve downloaded the generated markup and uploaded to dropbox, which does work. So I’m not sure if oomfo is unable to follow query redirection or if Apps Script is preventing the data from being used by oomfo (if anyone has any suggestions, that would be great).

There you go. How you can’t embed live data from Google Spreadsheet with Apps Script ContentService in PowerPoint using oomfo.