About Gareth

I help start-ups with IP strategy and ops. VP Intellectual Property at BenevolentAI. Previous success scaling and exiting AI tech start-up SwiftKey.

Time for another change

My appointment to Master Inventor was probably my proudest achievement when working for IBM. I think the main reason I earned the title at a relatively young age was because it involved things I really enjoy: working with emerging technology, coming up with new ideas, and helping others do the same. The Master Inventor role is partly about inventing yourself, and partly about reviewing ideas, but primarily it’s about mentoring; helping other inventors identify the novel ideas they’ve had, and guiding them through the corporate and legal processes associated with turning those ideas into patentable inventions.

Having worked at Vodafone for over a year now, I can really see a similar need for supporting inventors; so I’m very excited to announce that from today I’ll be starting a brand new role doing just that. I’m now responsible for all the technical aspects of intellectual property for Vodafone, primarily focusing on improving the quantity, quality and strategic alignment of new patent filings. This means I get to spend my time working with inventors across the business, talking about the exciting new technology they’re working on, and helping them identify and protect their novel ideas. I’ve loved my time at Vodafone so far but this new opportunity will mean I get to meet a whole new set of people, and learn more about the wide range of technologies used and created throughout the business. Exciting times.

6 months in Vodafone R&D

People keep asking me what I actually do for Vodafone. An overview of my role is on LinkedIn but the nature of R&D means it’s primarily about identifying new technology and using it to drive business strategy. More specifically, this is a quick overview of the projects I’ve been working on over the last 6 months:

  • Analytics: Identifying how we can generate insight from the wealth of knowledge about our customers in order to bring them some benefit. A big part of this has been about identifying technology suppliers from a highly competitive, complicated and fast moving market, and then trying to work out how on earth you fit them into all the Vodafone operators worldwide, across a variety of differing architectures.
  • Tracking: Determining how to use Vodafone’s network infrastructure to drive down the cost of device tracking (e.g. for fleet management) by trialling alternative geo-positioning and communication technologies.
  • Dual persona: Investigating how technologies such as software sandbox (e.g. Enterproid), thin client (e.g. Framehawk) and virtualisation (e.g. VMware) can be used and enhanced to securely provide access to enterprise data across multiple mobile devices, some of which may be owned by the employee not the employer.

Visual comparison

Recently I was looking for a visual way to summarise a comparison of different technology options and I couldn’t find anything suitable so I made my own.

I’m not 100% convinced it’s a good way of expressing what I wanted but at least it’s colourful.

A change of focus

At IBM I had a very technical role, developing leading edge prototypes and customer solutions. It’s quite common for career progression as a software engineer to step away from deep technical stuff to focus on the bigger picture but this is something I’d mostly avoided until the Vodafone opportunity presented itself. Although I still retain a strong technical focus, in my 6 months as a technical lead for Vodafone R&D I haven’t done any programming at all. A summary of my role that I wrote for LinkedIn reads like this:

“Leading the technical aspects of cutting edge research programmes for Vodafone worldwide, from inception to commercialisation; responsibilities include: researching products and technologies, managing supplier relationships, designing architectures and solutions, running global customer trials through mobile operators, and engaging commercial stakeholders in order to drive solutions to market”

I’m really enjoying the variety and strategic focus of the new role and not missing the deep technical stuff at the moment. Is this the start of a trend or will I swap back? Who knows.

Cloud hosting options

For a work-related project I recently needed to compare cloud hosting options so I had a quick look at Amazon’s EC2, Rackspace’s Cloud Servers and IBM’s Smart Business Cloud. For our particular requirements, Rackspace looked like the best option but they all seem to be quite similar, though with an obvious enterprise focus from IBM. Below is a list of the main differences I spotted between the three options which I thought might be useful to others (there are probably many more).

Continue reading

Goodbye IBM, hello Vodafone

I’ve really enjoyed working for IBM over the last 6 or 7 years; it’s a fantastic company and I’ve been involved in some great projects. However, all good things come to an end and yesterday I handed in my resignation. From 28th March I’ll be losing the titles of ‘Emerging Technology Specialist’ and ‘Master Inventor’, and swapping them for ‘Technical Lead’, working for Vodafone R&D in Newbury. I’ve worked with the R&D team on a couple of really interesting projects in the past and am really excited about joining them on a permanent basis.

For the IBM folks – due to a large amount of remaining vacation, my last day in the office will be Tuesday 8th March.

Free daily news to a Kindle

I love my Sony Reader but this Christmas I was given a Kindle and I absolutely love it – the ability to transfer books without a cable alone is a huge improvement, let alone the 3G, browser, dictionary, book store etc. One thing that amazed me is the cost of having news automatically delivered to the device. Knowing that calibre (the ebook software I used for managing my Sony Reader) supports automatic downloading of news websites/feeds and converting to ebook formats, I thought I’d see if I could make use of this for the Kindle. Turns out that calibre has command line tools for most of its functionality and so a quick cron job later to run the following script and I have BBC and Guardian news delivered to my Kindle for free every day:

ebook-convert /opt/calibre/resources/recipes/bbc.recipe bbc.mobi
calibre-smtp --attachment bbc.mobi --relay smtp.gmail.com --port 587 --username mygmailusername --password "my gmail password" --encryption-method TLS mygmailusername@gmail.com my_amazon_kindle_email@free.kindle.com ""
rm bbc.mobi
ebook-convert /opt/calibre/resources/recipes/guardian.recipe guardian.mobi
calibre-smtp --attachment guardian.mobi --relay smtp.gmail.com --port 587 --username mygmailusername --password "my gmail password" --encryption-method TLS mygmailusername@gmail.com my_amazon_kindle_email@free.kindle.com ""
rm guardian.mobi

The different news feeds supported by calibre can be found by clicking on the ‘Find news’ button on the toolbar and the Python scripts used to do this are in /opt/calibre/resources/recipes/ (or /usr/share/calibre/recipes/ – thanks Andy). You might want to modify the chosen recipes to limit the amount of data it downloads as it can take a while (e.g. filter certain newspaper sections).

eBooks, libraries and Firefox add-ons

A while ago I discovered that my local library offers a large collection of eBook downloads for free. This is great for my Sony Reader (ignoring for the moment that DRM on Linux is painful and also that I really want a Kindle) and it means I’m constantly downloading books from the library. I quite like using the Amazon site for finding books because it offers that “other people also bought…” feature but it then becomes a pain to check if the book exists on the library site (most do not).

In an attempt to have a play with Jetpack, the new Firefox add-on environment that allows add-ons to be written in JavaScript, I decided to write a simple add-on to check the library site for matching books when I’m browsing Amazon. While doing this, I stumbled upon Open Library, a great site that is trying to create a single Web page for every book ever published. More importantly, it offers a handy HTTP API.

The add-on is in no way perfect but feel free to try it out by downloading from here. Go to an Amazon page (e.g. here) and you should see a link appear to the Hampshire Digital Library version of the book if one exists:

Source available on github.

Node JS

Node JS has generated a lot of interest lately so I’ve had a bit of a play and so far I like what I see. Most of the publicity about Node seems to be to do with performance; this is because it doesn’t use the traditional model of spawning one thread per client connection. That in itself is great but not of direct interest to me. However, this model allows you to perform asynchronous actions without worrying about the event loop and threading. For example, the following HTTP server code snippet sends the response to the client from within a nested asynchronous callback function:

var http = require('http');
http.createServer(function (request, response) {
    doSomethingAsynchronous(function () {
        doSomethingElseAsynchronus(function () {
            response.writeHead(200, { "Content-Type": "text/plain" });
            response.end("Hello World\n");
console.log("Server running at http://localhost:8124/");

This event loop model, plus the ability to use the same programming language on the client and server (although server-side JavaScript has been around for a while) is definitely something that has caught my attention.

Using JSLint from gedit in Ubuntu 10.10

I tend to use gedit as my editor for most of my development work as it has a great number of plugins that enhance it’s ability as an IDE. Some of the plugins I find most useful include Code Comment, External Tools, Save without trailing space, Session Saver, Symbol Browser, TabSwitch and Word Completion.

One thing I thought would be really useful would be to validate my JavaScript using JSLint from within the editor, rather than manually or via a build process. It seems a few other people have had the same idea but the plugin I found didn’t seem to work and other instructions (e.g. here) generally seemed to require SpiderMonkey which didn’t seem to be in the Ubuntu repositories (not that I looked very hard).

I worked out how to do it myself by using the instructions other people had used and came up with the following:

  1. Install Rhino (sudo apt-get install rhino)
  2. Download the Rhino version of JSLint (details here)
  3. Enable the External Tools plugin for gedit (Edit->Preferences->Plugins)
  4. Setup a new External Tool in gedit (Tools->Manage External Tools) with the following (or similar) settings:

    • Command: js /home/garethj/.gnome2/gedit/plugins/jslint.js $GEDIT_CURRENT_DOCUMENT_PATH
    • Shortcut Key: <Control>j
    • Save: Current document
    • Input: Nothing
    • Ouput: Display in bottom pane

Then all you need to do is open a JavaScript file and hit Ctrl+j. Here it is in action:

Worth noting that it should be possible to do this without having to save the document and actually pipe the current document content into JSLint/Rhino but this was sufficient for my needs.