Report: Microsoft Australia DX hackfest

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.

20170419_115014 (2)
20170419_141929

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.
20170419_161517

Here is a little summary of what each of us worked on and learned:

David (me)

I wanted to build a little utility that utilised the Microsoft Graph https://developer.microsoft.com/en-us/graph/. The idea being that you want to compare what distribution lists you and your peers are on, as it may make suggestions on ones that you should join (like Azure insiders). I worked through the graph documentation and used the graph explorer https://developer.microsoft.com/en-us/graph/graph-explorer/ to figure out the set of queries I would need to pull out the data I needed:

https://graph.microsoft.com/v1.0/me/memberOf  – lists distribution lists that I am on
https://graph.microsoft.com/v1.0/me/manager – gets my manager
https://graph.microsoft.com/v1.0/users/<manager email from above>/directReports – returns who my peers are
https://graph.microsoft.com/v1.0/users/<peer email>/memberOf – loop through the returned list of peers, and get each of their DL subscriptions

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.

image

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

Tetris

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.

Further tested this github project which I have contributed to for generating a bot and tab for Microsoft Teams https://github.com/wictorwilen/generator-teams
I
used this to generate a Tab and Bot and deploy it to one of my development O365 tenancies. 
This included hosting the Bot and Tab an Azure tenancy and deploying via a local Git repository (via this https://docs.microsoft.com/en-us/azure/app-service-web/app-service-deploy-local-git  ). This was a nice simple option that I hadn’t used before as had previously only used VSTS and full GitHub. This was exactly as easy as expected to get running so was a nice option to tick off the list.

As part of the testing of the Tab I confirmed that I could get the Tab Theme switching working (as per https://blogs.msdn.microsoft.com/richard_dizeregas_blog/2017/02/07/microsoft-teams-and-custom-tab-theme/ ).
This worked quite well although on a slow internet connection the event firing was delayed hence there would sometimes be a several seconds of the tab showing before it changed colours to match the teams client.

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.

default themedark themecustom theme
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.

How to install Jekyll on Windows 10 with “Windows subsystem for Linux”

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.

 

1. Install Ubuntu bash on Windows

  1. Enable Windows subsystem for Linux.
    Follow this short guide on how to enable it https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
    image
  2. After following the steps in the guide above. Simply start the Ubuntu bash shell
    image

 

2. Install Ruby & Jekyll

# Get Ubuntu up to date and install Ruby
sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install -y build-essential ruby-full

# update ruby gems and install Jekyll
sudo gem update –system
sudo gem install jekyll bundler

Then you can do the standard ‘jekyll new foldername` and `jekyll serve` to host it.

image

FYI: the error message in the screenshot about Bash on windows, no longer applies. As the Windows 10 Creators Edition resolved this issue

Build 2017 keynote day 1

Highlights:

My main takeaways:

  • serverless computing and the CosmosDB are going to allow you to quickly create new ultra scalable applications.
  • AI, cognitive services and Cortana skills will allow you to build some real Sci-Fi things.
  • Microsoft graph is improving and adding more features that will allow you to build more personal apps.

Continue reading

Videos and notes of my Blockchain presentations at Microsoft Ignite Australia

As I previously mentioned, I was scheduled to deliver 2 talks at Ignite Australia. The talks both went well, and I’ve been getting a lot of great feedback about them. Now that the dust has settled and the content is all online I thought I should share the media to make it easier for other to watch and learn from them.

Saved image from Tweetium

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”.

image

image

 

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.

Meetup Madness & Kids coding open to all at Microsoft Ignite pre-day

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

Also – Here’s details of the Zombie Apocalypse Leader board (using Azure functions) which will be displayed during the event: https://twitter.com/sitapati/status/826531378049060866

Microsoft Research video of a ‘smart’ tattoo that acts as a device controler

I saw this article on The Verge that I wanted to share http://www.theverge.com/circuitbreaker/2016/8/13/12460542/mit-microsoft-research-gold-leaf-smart-temporary-tattoo

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.

//build is coming to Melbourne 26 May

BUILD Melbourne includes the best content from Microsoft’s annual BUILD conference, with additional focus on enabling ISVs and App developers to get the most out of Microsoft’s newest tools and technology.

Microsoft engineers Giorgio Sardo, Pete Brown, and Shen Chauhan will deliver the sessions and demos to help you quickly familiarize yourself with Microsoft’s latest technologies. The coding sessions will be hands-on labs and you will need to bring your own device (BYOD).

Here’s a glimpse of what you can expect:

  • Keynote highlighting the most interesting new features, announcements, and demos from BUILD 2016, including what’s new for Windows apps, cross-platform development, and learning to use Azure services.
  • Network with Microsoft engineers, and other ISVs and app developers in your area.
  • Sessions to help increase user engagement and position your software business for the future, using the latest Microsoft’ technologies:
  • Places are limited, so register now! We look forward to seeing you at //Build Melbourne.