.NET Oxford Meetup XVIII: Bots, Chimps, and Critical Pilot Making

22 September 2018 - .NET , dotnetoxford , Meetups

For this month's .NET Oxford meetup we had two talks - one from .NET Oxford co-founder Matt Nield, speaking about Bots; and the other from Clifford Agius talking about Pilot Decision Management.


This time, it was Matt's turn to do the intro. He started off with the usual house keeping (fire exits, etc), before talking about our sponsors (see below), then moving onto the usual news and prize draws (also see below).

As Matt was also doing the first of the two full length talks - he even got to introduce himself!

The slides for the intro talk can be found here, and the Reveal.js source code can be found here.


VSTS renamed to Azure Dev Ops

The first news item this month was about the rebranding of VSTS to 'Azure Devops'. They've not only changed the name, but also split out the different components to have their own names. Eg. 'Azure Pipelines' for the build/test/deploy platform, 'Azure Boards' for the issue tracking platform, 'Azure Artifacts' for the package hosting (nuget, npm, etc), 'Azure Repos' for their hosted Git repositories, and 'Azure Test Plans' for managing test plans. They've also re-themed their UI.

.NET Conf

The next news item was about the .NET Conf - a 2-day virtual conference, which coincidentally was two days after the meetup. Obviously at the time of writing has now finished, but all the videos can be watched free on Channel9.

"Chatting with your Data" - Matt Nield


After finishing the intro talk, Matt then stayed on-stage for the first talk of the night - which was all about bot frameworks - with a strong focus on Google Actions with their DialogFlow. He even brought in a Google Home device so he could interact with it vocally as part of his demos! Although, I must admit, when the device was active and listening - it took a lot of willpower to not make prank call-outs asking the device to tell a joke or something! :)

After introducing himself and his background, he spoke about why he wanted to do a talk on bots, showing some stats and estimates highlighting the growing popularity of chatbots within businesses. For example, one slide stated "£3.5 Billion is expected to be invested in enterprise intelligent assistants by 2021". So this certainly is a huge market!

Matt then introduced what he referred to as The Big Three... Microsoft Bot Framework; Amazon Lex; and Google Actions. He described each one, then moved onto some basic platform-independent terminology about working with bots ...

  • Utterance: Anything and everything that the user says
  • Intent: What is it the user is trying to do
  • Entity: Modifies the intent. Can be referred to as slots
  • NLU: Natural Language Understanding
  • Context: Ability to carry entities around between intents
  • Fulfilment: Who we link this to the real world

(the above list has been taken from Matt's slides)

From my understanding - the idea is that a sentence entered by the user (utterance), is broken down into verbs (intents) and nouns (entities), so that the relevant command or query can be performed.

Matt's then moved onto some demos, focusing on Google Actions, using the DialogFlow platform. Google Actions lets you extend Google Assistant using Actions, and DialogFlow is a platform that lets you design and build the Actions with an easy to use web-based user interface.

He started his DialogFlow demo using board games as an example. Creating entities in the UI like chess and tic tac toe, then creating some training phrases, eg. "How about a nice game of chess", as well as training responses, eg. "Nah, I don't want to play". Once entered, he saved the data, waiting a few seconds for DialogFlow to update the data (and presumably doing some form of training), then he demoed the results, asking it questions based on this data.

Next, he showed the concept of Fulfilment, which is where you set up the action to perform. One of the options is to set up a webhook, which can send the results of the query in JSON format. A point that Matt mentioned, was that you have to explicitly tell it what intents to send, something he said that he learnt the hard way! He also spoke about a checkbox called Allow automated expansion, which tells it to recognize entities that have not been explicitly listed. This is something that sounds like it can really bring home the power of this technology, taking advantage of a much larger dataset than you currently have.

Whilst that demo showed a very small example dataset using a couple of board games - Matt wanted to show some real data in his talk. Yo Sushi, a client of Ridgeway (who Matt's works for), very kindly said that he could use their data for this talk.

First he showed his demo without any data. He asked his Google Home device: "Yo Google - I want something with Chicken". The device responded saying that there were no results. Matt then showed the Kentico Cloud portal where the data was kept. Kentico is a CMS platform, and Kentico Cloud is their headless offering, allowing you to de-couple the content management from whatever "view" you want to use - eg. website, mobile app, custom APIs, etc.

Each time a new CMS document is published to Kentico Cloud, it fires off a web-hook to Azure Logic Apps. Bare in mind that this is Yo Sushi - so each document is a dish. This then parses the document, splitting out the dish description and each individual ingredient - then passes that on to DialogFlow - which then meant that he now had data in DialogFlow to process. The Logic App also passes the data of the dish to Azure Search for use later when a user speaks to the bot. Also, the Logic App sent Slack notifications to notify Matt about these events. I really love how Logic Apps allow this easy chaining of events and services!

Once the data had been imported, Matt then demoed it working by calling out to his Google Home device asking for something with Tuna, which Google replied back with the results.

Wrapping up, Matt spoke about some of his findings and thoughts after playing around with this technology - the main conclusion being that whilst it might be easy to use tools like DialogFlow and create intents, etc - the hard bit is creating the engaging conversation.

"Pilot Decision Management" - Clifford Agius


The second talk of the night was by Clifford Agius. Clifford's primary job is as an airline pilot, but he's also a freelance .NET developer. A lot of our talks are very technical, and it was nice having a talk focusing more on soft-skills for a change. A lot of Clifford's training as a pilot focusses on how to deal with critical decisions required when the unexpected happens, and how to keep calm and deal with the situation in a rational and logical way.

His talk starts off introducing himself; his two careers as both a pilot and a developer; and also showing a rather impressive looking photo of his office in the front seat of a $250m Boeing 787-8 aircraft! He discussed some interesting facts about the Boeing, including talking about the sheer amount of computers on board this kind of craft.

He then showed a video of plane taking off a flock of birds hitting one of the engines, causing an engine failure, asking the audience what they would do as a pilot in this situation. I really enjoyed the way Clifford kept the audience involved in his talk by trying to get everyone to thing about various scenarios and come up with suggestions.

Coincidentally, a book I've read recently called The Chimp Paradox featured very heavily in Clifford's talk. The main point of the book is that your brain has two separate brains which developed independently - the frontal "Human" part, and limbic "Chimp". The Chimp is very emotional and very quick to react with that emotion without applying logical thought first. Whereas the "Human" is much more logical. Obviously this is just an analogy, and there's not really a chimp in your brain - but I can certainly see why the author choose this analogy. I'm sure we've all had situations where you've reacted to something emotionally, and if you'd stopped and calmed down, you'd have dealt with it completely differently. Whether the thing that caused the emotional response was another person who annoyed you, or whether it was the situation itself that caused stress or panic - the idea is that you learn to react with your human side, and not the emotional chimp.

A big focus in Clifford's talk was about how to calm the Chimp and deal with situations with your Human more logical brain. Whilst flying a plane and software development are fundamentally two completely different skillsets - there's a lot that we as developers can learn from this type of "keep calm and react logically" training.

Clifford then spoke about an acronym called 'TDODAR', which stands for Time, Diagnosis, Options, Decide, Assign, Review. Rather than me repeating Clifford's slides here, he had a breakdown of what each step in his slides. But basically, it's a process you can follow to rationally deal with a situation, and plan any outcomes accordingly.

For the last section of his talk, clifford did a short excersise involving the audience. I really liked this, as we've been trying to think of different ways we can get the audience more involved (hence why we started the dev tips section). He split everyone into smaller groups, and gave everyone an airline scenario / problem. He then started a 60 second timer for us in our groups to discuss a course of action. After the 60 seconds, he then added some additional information, then started the timer again. After a few timer runs where Clifford had added more information to the scenario, he then asked a representative from each group to stand up and talk about their decision. I won't detail the scenario here, in case you see his talk elsewhere. If you are due to see his talk elsewhere, then do try to avoid looking at the last few slides linked below if you don't want a spoiler!

exercise1 exercise2 exercise3

Primary Sponsors - Corriculo Recruitment

I mentioned in last month's blog post about the .NET Oxford t-shirts that Corriculo Recruitment were wearing. I also said I regretting that I hadn't taken any pictures showing the t-shirts in that meetup. Well, this time I did! ...


As you can see, the t-shirts look great! Very impressed with how good the ".NET purple" look on a shirts, and how well it goes with our logo.

Also, as you can see from the picture - Corriculo provided (as they always do!), plenty of food and drinks for our members. Not only this, but they also cover the venue costs, and help us out in plenty of other ways too. A massive thank you to Corriculo for all they've done for us!

Secondary Sponsor - Everstack

Our secondary sponsor is my own company, Everstack. Providing a lot of my own time for organising and managing .NET Oxford. Everstack provides software development and consultation services - specialising in .NET and the Cloud.

Prize Draws

After the news, we then moved onto the prize draws, using my usual WPF Prize Draw app. A massive congratulation to the winners, and a massive thank you to our awesome prize draw sponsors ...


Congratulations to Mark Osborn for winning a year-long Jetbrains product licence! He wisely choose the combined Rider + Resharper pack!

Manning Books

Congratulations to Iulian Arcus for winning a Manning ebook of his choice! The winner has the choice of any of the awesome Manning ebooks from their website.

Remember that we have our special Manning coupon code (ug367) which gives all of our members a 36% discount on any of their e-books! They've also asked me to share a link to some of their new courses for their LiveVideo system.


Congratulations to James World for (yet again!) winning the Oz-Code licence! As he already had a licence, he decided to do a little mini-competition at his workplace to give his licence to a colleague. The question he posed to his colleagues was "How large does a .NET object have to be before it gets located in a different logical memory location than a smaller object?", and the winner was Thomas King!

For those that don't know, Oz-Code is a Visual Studio extension that puts your debugger on steroids. Take a look at their website for videos of their features. If you haven't checked it out, then definitely download the trial and have a play. All our member get a free 3 month trial licence (see below) or 50% off a full licence! To claim, you can visit this link to pick up your licence!


Upcoming Meetups

Below are our upcoming meetups for this year. Not all have been announced on Meetup.com yet, but if you subscribe to the meetup, you'll get email notifications as they are announced.

October 9th: Jon Skeet - "C# 8: The story so far":

October's meetup is with Jon Skeet himself, talking all about the upcoming C#8. For this meetup, there'll be a slight change of venue - and it'll be in the St Aldates Conference Centre which is just a few doors down from our usual venue.

(Meetup.com event page)

November: Performance in the JavaScript Era:

November will be with Benjamin Howarth, talking about various different aspects of performance in an era where much more functionality has been pushed to the frontend. This isn't just a JavaScript talk though - it covers a lot of aspects that are important to us .NET developers too!

December: More Lightning Talks!

We thought that December would be a nice place to slot in another lightning talk event. It may be a long way off, but if you do want to do one, feel free to get in touch! First timers are most welcome too!

Please retweet if you enjoyed this post ...


Recent Posts

Featured Posts

.NET Oxford Links