Blockchains, Cloud & Development

Microsoft tech

An important part of being a Technical Evangelist at Microsoft is continuously upskilling and playing with different technologies. Taking 2 days out a month to sit down together and hack, gives us a chance to learn from each other. For example Simon briefly mentioned that he was playing with Xamarin Forms & Android development, but was having issues with the Intel Android emulators, so I was able to quickly show him the new Visual Studio ones that run on Hyper-V. Conversely I was having issues with NodeJS that Simon & Elaine were able to help me out with.

David (Me) – Meme classifier

I decided to make a system that could automatically classify Internet Memes. There are whole subcultures on Reddit dedicated to them, one of my favourites being https://www.reddit.com/r/AdviceAnimals/. I wanted to use the new Custom Vision service https://CustomVision.ai/ to train it on the different meme types, and be able to upload a meme and be told which category it is.

Training the custom AI was easy, I uploaded samples that I got off Reddit and clicked train. Testing it with other images correctly identifies them. Creating and training only took 10 minutes, I spent way longer browsing Reddit looking at memes ^_^;;

Next I wanted to build a chat bot and allow people to upload an image, and have the AI return back the category, and send a link to the correct page on Know Your Meme e.g. Success Kid. I decided it would be a great time to try out the Microsoft Bot Framework for NodeJS. I have used NodeJS & npm to download and use Blockchain toolchains, but never developed directly on it.
I have enough time to fully build out the chat bot, but I learned HEAPS about using VS Code and debugging NodeJS apps using VS Code. Lots of little gotchas when developing with NodeJS for the first time.

Rian

I used Azure Cognitive Services Text Analytics to analyse Star Wars subtitles tracks. Topic Detection and Sentiment Analysis both seemed like good candidates. Key Learnings:1) Topic Detection doesn’t work well with many ‘documents’ of very small size (e.g. lines of subtitles), of as little as one word. A better approach was to approximate scenes and aggregate lines into larger documents. 2) Sentiment data is very noisy. A naive prediction is that such a sentiment analysis would track the cadence of the film. This is not at all the case, as you can see in the graph of the sentiment of the Phantom Menace.3) Slang/ colloquialisms break topic detection, e.g. Jar Jar Binks’ lines like ‘mesa in trouble’. These should be excluded from the Topic Detection algorithm using Stop Words or Stop Phrases field in the request.

The plot below tracks sentiment across all pseudo-scenes throughout the film. You can see the data is highly variable and does not seem to follow the cadence of the film. A further research question might be to vary the size of pseudo-scenes (i.e. to aggregate lines into variable sized batches), and run sentiment analysis on all these pseudo-scenes. The result may better approximate the cadence of the film.

Hannes (remote from NZ)

The app is made using Unity, and the HoloToolkit.
You can see how far along progress currently is in this video.
The idea is to bounce a table tennis ball on a paddle that you drag around with your hand. It has a scoreboard that tracks your high score for the session.
When you open the game, you are presented with a paddle and a ball hanging in the air above it. To start the game, you simply tap and hold on the paddle, which starts the ball falling. Keep the paddle under the ball to make it bounce. You get a point for every time the ball bounces on the paddle. Releasing the paddle resets the position of the ball.

An important part of being a Technical Evangelist at Microsoft is continuously upskilling and playing with different technologies. Each of us are usually off speaking to different customers or attending developer events, so to give us a chance to work together as a team and learn from each other we decided to set up a regular internal hackfest.

Last month we had our first, and the Melbourne team were hosted by Frank Arrigo at the Tesltra Innovation Labs. It is an awesome space, and we plan on hosting a LOT of future hackfests there. We also had our remote team mates working away and keeping in touch during the event.

Each of us hacked away on our own experiments, which gave us a chance to check out the latest toolchains and APIs. But it was great being able to just ask each other for advice.At the end of the 2 days we all jumped onto a conference call and showed off what we were able to throw together. The valuable thing was just hearing the learnings from each person on the “gotchas” they discovered when working with the tools/tech.

I’d then be able to compare the DLs that I’m on, with the ones that my peers are on. And flag which ones we have in common, and which ones we don’t share as suggestions.The next step was to build a web app to do this. I jumped onto the Microsoft Graph quickstart https://developer.microsoft.com/en-us/graph/quick-start to generate a skeleton app as my starting point. This required registering my app on https://apps.dev.microsoft.com/ which would allow my to request permissions from the user, to access the graph on their behalf.

I was able to get my application to authenticate, and query details about myself and my manager. However to retrieve what DLs other people are on requires the Directory.Read.All delegated permission, and because that can potentially leak sensitive information about your organisation, only Admins can great that permission. This meant I was stuck as I don’t think the Microsoft Admins will grant me permission for my dinky little utility to run on the corporate tenant 😉 But it was still a good exercise as I was able to see each of the pieces working, and got some basic queries working.

Azadeh

Wanted to learn more about how to use Unity (as a lot of our customers are using it now for things like Hololens). She built a 2D Tetris Game, by following the tutorial at https://noobtuts.com/unity/2d-tetris-game

Elaine

Wanted to play around with Conversations as a Platform and learn more about what is possible with bots.

On day 1 lost a fair bit of time with some visual studio 2017 issues. These seemed to be related to having a pre-release installed side by side with VS 2015 and then installing the full release version.I intended to test more .Net core items but with the time lost I pivoted on to an area I was comfortable I could rapidly progress.

Also included Office UI Fabric (https://dev.office.com/fabric ) to check if that would have any issues working in a tab inside teams. I only had time to test a few elements including the spinner but these all worked well on the Tab. The main consideration is the theming may not automatically flow through to these elements as the Teams Style sheets have very specific classes that they target hence things need to be wrapped in the elements for them to be able to change colour when needed. This is especially important if you want your tab to work on the high contrast setting.

Finally I tried to extend the bot via some deep linking scenarios following this https://msdn.microsoft.com/en-us/microsoft-teams/deeplinks , however was not as successful. Asking the bot to send the url taken via manually grabbing a deep link for the tab worked well but that had a different format to the article.

Screenshots of playing with the themes

Simon

Simon being Mr. DevOps, wanted to explore combining VSTS with chat bots. Whenever a build was kicked off in VSTS, he wanted to report back if the build was successful or not, and allow users to instruct the bot to trigger Release Management to push the successful build to different environments.

He was able to get the chatbot reporting new events in a Microsoft Teams channel, and having the bot trigger certain things back on VSTS.

I previously wrote how to install Jekyll on Windows by installing the Windows version of Ruby and then installing the gems that way. I have found another way install Jekyll via the Ubuntu version of Ruby. This is my preferred way now, as the Linux version of these tools are updated more frequently than the Windows versions.

Blockchain 101 & Azure Blockchain as a Service

Chris Zhong & I covered off an introduction to Blockchain 1.0 & 2.0. Covering off how Blockchain 1.0 technologies like Bitcoin are able to store state. But the rise of Blockchain 2.0 technologies like Ethereum, is what has gotten people’s attention as they are able to store state and embedded logic within “smart contracts”. I had heaps of fun with this session as I spent days putting together a scenario showing how multiple DApps (Decentralised Apps) could be linked together via on chain smart contracts, to build up an ecosystem of Blockchain apps that are able to leverage each other seamlessly.
A thanks to Chris Zhong for putting together and presenting the section on “Azure Blockchain as a Service”.

Blockchain Development on Azure Blockchain as a Service

Going into Blockchain development blind can leave you stumbling around on the net not knowing where to even begin to look. The purpose of this session was to take the knowledge I’ve picked up from doing Blockchain projects, and the months and months I’ve spent replacing and refining tools down to the easiest development experience, and distil it down for the audience. It was an awareness session “these are all the tools, here is why I use these ones, this is how you create a skeleton of a Blockchain app, interact with it, test it, etc.”. It wasn’t as clean as I would have liked, and subsequent repeat presentations have been smoother, but it is still a great starting point.

Microsoft Ignite is just around the corner. But there are some events that are open to all if you happen to be on the Gold Coast.

MeetUp Madness

Microsoft is proud to bring together 7 technical communities from all over Australia to host MeetUp Madness. Join likeminded professionals in an informal gathering talking all things tech. Topics will cover SQL, Cloud/Azure, .NET, Xamarin X-Platform development, Office 365, SharePoint, Data Science and Infrastructure. Take the opportunity to learn something new, meet those with similar interests and it wouldn’t be a MeetUp without pizza, beverages and swag. This event is open to everyone and all are welcome. All MeetUps will be held concurrently, so choose one that takes your fancy and RSVP at https://www.meetup.com/en-AU/Microsoft-events-in-Australia/

Magikcraft Kids Coding: Can Garry Pottr save the world from the Zombie Apocalypse?

Microsoft is partnering with BizSpark Startup Magikcraft to host a kids coding event on Monday 13th February at the Gold Coast from 4-6pm. Using Minecraft, kids will learn to craft JavaScript spells and join the hero of the Magikcraft universe, Garry Pottr, as he versus the Zombie Apocalypse to save the world. Kids aged 8 -14 will learn how to cast lightning bolts, fly through the air, and finally face the Zombie Horde. As well as a fun way to learn to code, this is an actual, legit, official Guinness Book of World Records event. We will be setting the world record for the most Zombies killed by JavaScript lightning in a period of ten minutes. Places are limited, so get in quick and register now. https://www.eventbrite.com/e/magikcraft-zombie-apocalypse-learn-to-code-set-a-world-record-tickets-31439588656

Below is a short video that gives an overview of the technology. It shows a quite sensitive and fairly accurate temporary tattoo that you can apply to your skin to control an interface on a device like your phone or PC. The designs of the tattoo can be as aesthetic as you like, as they are cut out like a stencil.

I think the designs and future potential as wearable tech is really cool. I’d love to see this taken further than just a research proof of concept.