- Software Development Team Lead & Test Automation Engineer at Tribal (Norwich)
- Roles at Angling Direct (Norfolk)
- Job Vacancy: Senior PM at Foolproof
- Job Vacancy: Programme Manager at Foolproof
- Job Vacancy: Senior Designer at Foolproof
- Job Vacancy: Account Manager at Foolproof
- Job Vacancy: Software Engineer in Test at Axon Vibe
- Job Vacancy- EIRA Knowledge Exchange Fellow – EIRA Network (3 Posts)
- Job Vacancy- EIRA Knowledge Exchange Manager (Three Year Fixed Term Contract)
- Job Vacancy- Front end developer at Zipline
September’s NorDev Meetup Review
September’s NorDev meetup was held at the King’s Centre and, with 52 people there, was one of the best-attended sessions ever.
Dom Davis Explains Rainbird
The evening kicked off with a session by Dom Davis, which was intriguingly titled “Philosophers, Knowledge and Children’s TV Programmes”. Dom recently began working for local tech startup, Rainbird, and the aim of this talk was to explain the concepts behind Rainbird and to demonstrate its capabilities.
To summarise, Rainbird is a cloud-based artificial intelligence platform that enables developers to create powerful expert systems on any subject. The Rainbird development process starts with a visual process similar to mind-mapping and is backed by a new XML-based knowledge representation format called RBLang. A Rainbird application works by asking the user various questions, and then provides a recommendation or result based on the user’s answers. As your knowledge base matures, the results can be published as a powerful web tool or as an API that other people can consult with to retrieve the knowledge and solve problems.
How Rainbird got its name, which is rather convoluted. Its tenuously linked to Bertrand Russell, a pioneer of logic and set theory. It’s said that Bagpuss’ Professor Yaffel was based on him, and the European green bird, also known as a yaffle, is known as a rainbird. Though they aren’t the most obvious links, Rainbird is all about making connections between different and diverse pieces of data.
Dom used a volunteer from the audience to help demonstrate a Guess Who-style Rainbird test application. Rainbird correctly inferred the answer. A second example was based on suggesting a suitable dog breed for a particular household. This was demonstrated with the help of a second volunteer, alas a bug was discovered so we never found out what the person’s recommended dog breed would be.
One challenge the Rainbird developers faced is that many concepts are subjective, e.g.: what constitutes a large garden or a large house? It can mean different things to different people. To help mitigate this, Rainbird provides an “Are you sure?” slider that can be added alongside each question.
Rainbird can be used for a whole manner of things, such as recommending a type of wine based on the user’s previous choices and what food they are eating. To do this, Rainbird could capture the knowledge possessed by a wine expert. It could then offer suggestions to customers and also dissuade them from buying something they won’t like or that may not be suitable.
Finally, Dom demonstrated how to set up a Rainbird application from scratch. You add concepts and the relationships between them and also rules. The sample app was designed to determine the language someone is likely to speak. In this heavily simplified app, it was assumed that if someone lives in a given country, they will speak the language of that country.
Other types of smart software like Google Now, Siri and Cortana are becoming much more popular nowadays, and Rainbird’s aim is to build on this. Impressively, it may soon be able to learn from users’ answers.
To use generator functions, you’ll need an unstable release of Node.js. You’ll need to run it with –harmony. It enables you to return a generator object that has a `next` method. You can also throw errors onto a generator. The key features of generators are:
- They yield values
- They can receive values
- They can propagate errors
- They suspend execution indefinitely after yielding
For the most part Rupert focused on using generators to flatten out asynchronous cod, including an introduction to Koa, a next-generation, generator-based web-framework. He illustrated the session with examples from a map of the UK’s public toilets. He demonstrated a program called Comparify, which allows the user to input 2 postcodes and the winner is the one with the most public toilets in a square mile radius.
I also learnt some new terminology: a “thunk” is a function that returns a callback as opposed to calling it, and “Co” is a library that co-ordinates the actions of libraries. It provides generator-based flow-control goodness for Node.js and the browser, using thunks or promises. A promise is a placeholder object that represents the result of an asynchronous operation. This object will hold the information about the status of the async operation and will notify us when the operation succeeds or fails.
Overall, the two talks were very enjoyable and thought provoking, and I found both speakers very engaging.
Words: Victoria Holland