A night at the museum

August 25th, 2016

I shared this at the time on twitter, and then went off on holiday. Now we’re back, I thought it’s worth sharing a little more.

I took Grace and Faith to the Natural History Museum in London, and we had a sleepover! It’s something they do for kids aged 7-11, called Dino Snores for Kids.

Read the rest of this entry »

Normalised Discounted Cumulative Gain

July 15th, 2016

A ramble about accuracy compared with NDCG scores for evaluating effectiveness of information retrieval. It’s an introduction, so if you already know what they are, you can skip this.

A couple of weeks ago, we released a new tool for training the IBM Watson Retrieve and Rank service (a search service that uses machine learning to train it how to sort search results into the best order).

This afternoon, I deployed a collection of small updates to the tool and thought I’d make a few notes about what’s changed.

Most of them are a bunch of incremental updates and minor bug fixes.

For example, support for a wider range of Bluemix environments, support for larger document cluster sizes, displaying the amount of disk space left in a cluster, and so on.

One update in particular I thought was more interesting, and worth explaining.

Read the rest of this entry »

IBM Watson Retrieve and Rank tool

June 30th, 2016

A few months ago, I mentioned that I was starting a new project. In this post, I’ll explain what we’ve been working on and what we’re trying to achieve with it.

The project was to build something new: a self-serve web-based tool to enable training the IBM Watson Retrieve and Rank service.

Earlier today, we released a first version of the tool. Now it’s finally out there, I can share what I’ve been working on!


My video walkthrough of the IBM Watson Retrieve and Rank tool

Read the rest of this entry »

Watson Rock, Paper, Scissors

June 26th, 2016

A simple hands-on activity to let kids train a machine learning classifier to be able to play Rock, Paper, Scissors.

Screen Shot 2016-06-26 at 13.59.20

I’ve written and spoken before that I think we should do more to introduce children to the idea of machine learning. And I’ve tried introducing my two kids to it, such as by making a Code Club-style game with them: we built a system to play Guess Who, that they trained both to understand what you say and to recognise the characteristics of faces from photos.

This weekend, we tried out another idea – Rock, Paper, Scissors from a web app, using the web cam to see your moves, and training a system to recognise your hand signs.

DSC06146

Read the rest of this entry »

An introduction to machine learning with Guess Who

February 18th, 2016

I tried introducing my two kids to machine learning by helping them make a game this week.

In this post, I’ll try and explain why, how we did it, and how it went. And if you make it all the way to an end, I’ve got some videos and a link to a demo to show you what we made.

Why

I think we need to introduce the basic concept of machine learning to children.

I think the current approach to introducing coding using things like Scratch aren’t enough. This isn’t to say Scratch isn’t great (I’ve been running a Code Club every week for the last couple of years, delivered almost entirely using Scratch, so I’d be the last person to say it isn’t a fantastic tool). It lets you snap together blocks representing actions to teach the programming mindset of getting a computer to do something by you breaking the task down into a series of steps.

I think we need to add to this with something that introduces the model of machine learning – getting a computer to do something by training it with examples of doing that task.

I’ve been saying this for a while – I gave a talk about it at an education conference last year, I’ve written about it here before, and it was the theme of a lecture I gave at a science society in London last month.

This week is half-term and I have the week off work, so I thought I’d finally spend a bit of time trying it out by experimenting on my own two daughters (Faith and Grace, who are aged 7 and 11).

In Code Club, I mostly try to introduce programming concepts by helping the kids to create games. Sticking with what seems to work, I’ve helped them to make a game by training an ML system how to play it.

Read the rest of this entry »

Don’t be like blonde Gwyneth 

December 2nd, 2015

Or a helpful pointer for developers contributing fixes and changes to an existing code base.

Do you remember that old Gwyneth Paltrow movie Sliding Doors? Imagine that she’d been a software developer who had been asked to fix a problem with an existing software project.

Next thing you know she’s running for the train, some kid gets in her way and she misses the train but also gets the train, one of her gets a dramatically convenient hair cut, and we’re left with two Gwyneths and two insights into how things could play out.

Read the rest of this entry »

Connecting to MQ Light from a web app via WebSockets

May 25th, 2015

How to subscribe to MQ Light notifications from a web app, via a WebSockets bridge

I’ve been working on a microservices app hosted on Bluemix. It’s one logical app, but it’s implemented and deployed as a bunch of separate Bluemix applications, each with it’s own separate responsibility.

I’m using MQ Light as asynchronous messaging between the apps. Each Bluemix app publishes notifications about changes to resources, and the status of long-running tasks.

mqlight on Bluemix

I won’t labour why or how we do this here, as it’s well covered in many other posts on microservices. For example:

…publish everything, however boring and insignificant it may seem to the rest of the system. Publishing is very lightweight and the publisher does not need to know whether 0 or 1000 other services are interested in that particular event, just fire and forget. This is extremely powerful and is what enables microservices to be built and deployed extremely quickly…

This is working well, but I also want a web app to be able to get some of these notifications.

If the web app has a resource open for editing, I want it to get a push notification if there are any changes to the resource.

If the web app started a long-running task, I want it to get push notifications of status changes.

I’ve done this by writing a small proxy, allowing a web app to subscribe to MQ Light topics and get the message via WebSockets.

Essentially, it’s an mqlight-WebSockets bridge.

mqlight with WebSockets on Bluemix

Read the rest of this entry »

The skills implications of Cognitive Computing

April 29th, 2015

STEMtech is a conference about the education of science, technology, engineering and maths. The attendees are an interesting mix of people from education and policy makers, as well as people like me from industry.

This year, they invited me to do a talk. My slides are shared but they’ll make no sense by themselves. What follows is roughly what I think I said.

Read the rest of this entry »