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 »

Preventing Internet Explorer from using Compatibility View

August 15th, 2012

I’ve had some trouble with Internet Explorer recently.

I was making a new web tool which looked fine in all browsers. Except Internet Explorer, where it looked a bit squiffy.

Internet Explorer has “Compatibility View”. Compatibility View makes IE behave like the older versions of Internet Explorer, the ones before Microsoft started paying more attention to web standards.

It makes sense – there are a lot of websites out there that were written to render well on old versions of Internet Explorer, and Microsoft needed to make the move to standards compliance in a way that doesn’t break all of them.

The problem is, Compatibility View can be a little… insistent.

It kept turning on, even though I didn’t want it, even though my site worked fine in new shiny standards mode, and looked horribly broken in Compatibility View.

You can manually disable it, but I don’t want to have to make users do that. As the web developer, I want to be able to disable it – to tell IE that I want the site to be rendered in standards mode.

It was a bit fiddly. Here’s how I did it.

Read the rest of this entry »