I have an iPad mini

December 11th, 2012

I am now the happy owner of an iPad mini. Obviously I couldn’t let this happen without a mention. But… the Internet is full of reviews of the iPad mini already and doesn’t need another. :-)

Instead, I’ll write about the gadget that the iPad will be replacing. The gadget that has been pretty much everywhere with me since I got it three years ago. This is my chance to say goodbye to the venerable Asus T91MT.

The T91MT is a small Windows 7 computer. It’s the size of a netbook, but has an 8″ screen that swivels to switch into a tablet mode. It has a touchscreen with multitouch support and a stylus.

I got it in December 2009, but it feels like I’ve had it for longer than that. It’s fairly beat up by now, so it looks like I’ve had it longer than that, too. I think the stickers are the only thing holding the case together at this point.

I loved this thing. As much as I am now loving the iPad mini (and believe me, it’s sweet), there is a part of me that misses the T91MT.

Why did I love this thing so much?

Read the rest of this entry »

Talking about Conversational Internet

November 30th, 2012

I’ve written about some of the talks at Everybody Technology which was an event about how to make technology inclusive.

I gave a short talk there, too. It was about my Conversational Internet project. I’ve written about it a few times already now, so I won’t rehash it here, but I talked about the Extreme Blue prototype and some of the work that’s been done since.

Luckily for fans of funny voices everywhere, it was recorded.


Everybody Technology : Conversational Internet

Read the rest of this entry »

Everybody Technology

November 30th, 2012

This afternoon I went to Everybody Technology, an event to discuss the need for technology to be inclusive and made in a way that is “so smart, so simple and so powerful it works for everybody”.

A highlight of the afternoon was Stephen Hawking – perhaps one of the best examples of the power of technology to enable someone to reach their potential. He also supported the event by lending his voice to a promotional video which explains the idea better than I can.


“Who is Technology Made For?” (YouTube)

There were several speakers. I won’t do them justice, but I did jot a few notes…

Read the rest of this entry »

Extreme Blue : a mentor’s perspective

September 23rd, 2012

This summer, I was the mentor for a team of interns on an Extreme Blue project. I’ve written about the project, using machine learning and natural language processing to build a smarter screenreader. But I didn’t explain “Extreme Blue”.

Promotional stuff about Extreme Blue is on ibm.com, but aimed at students who could apply to be interns. I want to talk about what it’s like to be a mentor, as it’s one of the best things I’ve done at IBM.

Overview

Extreme Blue is IBM’s summer internship programme. Every year, IBM locations around the world give teams of students projects to work on.

It’s explained on ibm.com but in a nutshell, a team is four students: three with a technical background, one with a business background. Each team are given one project to work on, a challenge they spend their summer trying to solve.

Read the rest of this entry »

Conversational Internet : A prototype

September 12th, 2012

tl;dr

We’ve built a prototype to show how we could interact with the Internet using a command-driven approach.

  • A screen reader, but one that uses machine learning and natural language processing, in order to better understand both what the user wants to do, and what the web page says.
  • One that can offer a conversational interface instead of just reading out everything on the page.

It’s a proof-of-concept, but it’s an exciting idea with a lot of potential and we’ve got a demo that shows it in action.

I wrote yesterday about what it was like going to the BBC to talk about a project I’ve been working on this summer. I didn’t talk about the project itself. Here’s an overview.

Read the rest of this entry »

My inevitable media stardom

September 11th, 2012

BBC Broadcasting House

I went to London today to be interviewed for a radio programme on the BBC.

The topic was a project that I’ve been working on over the summer.

I’m not a typical spokesperson, certainly not for something the size of IBM. I’m definitely happier as the behind-the-scenes geek type. The prospect of going on the radio to represent the project, let alone IBM, was more than a little terrifying.

But my best efforts to get someone more able to talk coherently failed horribly, and this afternoon I dutifully got the train up to London to go to Broadcasting House.

Read the rest of this entry »

Using UIMA-AS to run UIMA annotators in parallel

August 24th, 2012

Overview

UIMA stands for Unstructured Information Management Architecture. It’s an Apache technology that provides a framework and standard for building text analytics applications. I’ve mentioned it before.

In this post, I want to talk about an area of UIMA which isn’t covered well in the documentation.

I couldn’t find practical getting-started instructions for running UIMA-AS annotators in parallel. In this post I want to discuss why you might want to do it, and share some simple sample code to show how.

Background – the UIMA pipeline

UIMA provides a framework for managing a text analytics application. You break up the analytics functionality into discrete pieces called annotators. UIMA takes care of moving a text document through an analytics engine: a pipeline containing a series of annotators.

A document goes in one end of the pipeline, passes through a number of annotators, each of which adds some metadata to the document. What comes out the other side of the pipeline is an annotated copy of the document.

By default, you get UIMA to run these annotators one at a time – one after another.

Background – annotators in parallel

What if your annotators are quite slow – perhaps they take several seconds to run?

If there is no dependency between any or all of your annotators, then maybe running them one at a time isn’t the most efficient approach.

You can run all of them at the same time, in parallel. UIMA will merge the output from all of the annotators into a single annotated document.

My sample code

I’ve written two sample UIMA apps. Each demonstrates one of these approaches, to compare and contrast.

They are divided into three eclipse projects. You can import them into an eclipse IDE.

The UIMA eclipse plugins are very helpful if you want to make changes to the XML configuration files, but they’re not essential. If you want them, there are instructions on how to install them at uima.apache.org.

I’ve added comments to the sample code to explain how the apps work, but I’ll give an overview here.

Read the rest of this entry »

Implementing a text box for entering tags in a dojo web app

August 19th, 2012

I needed a text box for entering tags on a dojo web app. I ended up making my own – it was only a hundred or so lines of code, but I’m sharing it here as it might be useful to others.

The text box needed to provide auto-complete when you start typing something that matches an existing tag. Dojo already has a text box widget that does auto-complete : dijit.form.ComboBox – so I started from there, modifying it’s behaviour so that

  • the options it offers are based on the current tag you’re typing (instead of the whole contents of the text box)
  • if you pick one of the options, it only replaces the current tag you’re typing with what you select (instead of replacing the whole contents)

See it in action in this short video clip.

Because I’ve based it on dijit.form.ComboBox, I also get a bunch of features for free, including that options it offers are based on the contents of a data store, which can be backed by a REST API.

This supports paging, which means my REST API doesn’t have to return all of the tags – just enough to populate the visible bit of the drop-down list. I’m using Lucene to implement filtering in the REST API, so it can quickly return a subset of tags that matches what the user has started typing. I don’t need to download everything and filter it client-side – it can be smarter and more efficient than that.

That said, this might be overkill for some needs – you can easily create a client-side store in memory, without needing to write a REST API to back it.

Read the rest of this entry »