Did you miss this year’s Microsoft Build 2020 virtual event? Do not worry at all!
Microsoft Canada and our community leaders are getting together to share some of the excitement with you – do join us on June 13th as we plan this Canada wide virtual event – delivered by some of the best we have, from East to the West of Canada!
I’ll be discussing Azure Static Web Apps – go from code to scale in minutes, plus other CI/CD announcements from Build.
During my Global Azure Virtual 2020 live stream on Bringing serverless into the Enterprise, I had a few demo glitches. An inside joke for those that do presentations and demos is that the demo gods are either with you or against you. Some might say I didn’t offer up a satisfying sacrifice to the demo gods. I would argue and say I did but I feel it’s important to reflect and learn what went wrong and how I can be better prepared for the future by learning from our mistakes.
So knowing that I presented on this topic for the Global Azure 2020 Virtual event and had some failed demos, I wanted to explain what happned and why and how to be better prepared for a future talk and hopefully it’s a lesson that you can learn from for your own talks, presentations or just development efforts.
Back in February 2020 I had submitted a few topics for the Global Azure 2020 event. At this point in time COVID-19 was going on but the world hadn’t shut down like it is today and the Global Azure 2020 event was still going to happen. In March I was notified that my topic was selected and I had about 6 weeks to prepare. Fast forward to mid March and everything was starting to be cancelled or made virtual. In the case of our local Global Azure 2020 event it was cancelled, so I didn’t work on my presentation. I was invited to participate in another Global Azure 2020 Virtual Community event in UK and Ireland so I focused on that content.
About 2 weeks prior to the Global Azure 2020 event, I was notified we would be making our local event virtual and I had to confirm if I still wanted to participate. At this point I was not prepared and my wife ended up signing up for a course over the weekend prior to the event – which left me with 3 kids (10 months, 4 yrs and 7 yrs) to manage for 10 hours each day over a 3 day weekend. My initial thought was to excuse myself from the event, but I really wanted to participate and with COVID-19 and everything halted, I found it was important to maintain that community connection even if it was a virtual event.
So this took me back to my college days of doing school, working and squeezing in a project over a tight deadline – not fun but with coffee as my partner, I got the kids to bed and started putting in a couple late nights to get it all done…or so I thought.
With my talk this year being on bringing serverless into the Enterprise, I focused on Azure Functions and my demos were on the following topics to illustrate common enterprise use cases:
Using PowerShell in a Azure Function for automation tasks
Deploy code to Azure using GitHub Actions
Avoiding cold start and latency with Premium Functions
Monitoring logs for your Functions
My PowerShell Azure Function Failure
My first failed demo was something I knew was being problematic going into the talk but I felt it was important to still talk about and I had screenshots of a working state from previous attempts so felt good to proceed. The demo was creating an Azure Function with PowerShell. The issue was that no matter what PowerShell command I tried to run, I kept getting errors that it could not be run successful as shown below and no matter what I did I kept getting an error that the subscription could not be set.
Because you never know if something will go off the edge during a demo, you should always be prepared to go ‘offline’. By that I mean show screenshots of what you were trying to do and the expected outcome. You could even go so far as recording your demo and then switching to that during your talk. I’ve never done this but I’ve heard some people have and it worked perfectly. The audience had no idea the demo was broken and they were able to convey their message.
That might be a bit extreme, but I usually do take some screenshots of the Azure portal as part of my notes I use to prepare the presentation, so I know I can always fall back to that if necessary and in this case that is what I did. It’s unfortunate I could not show the feature working as I intended, but I let the audience know and continue to roll along.
My Premium Function Failure
This was my favorite demo I prepared for the talk and it involved creating an Azure Function and hosting it on the Premium plan and then comparing that to the Consumption plan to show scale, latency and that there is no more cold start in Azure Functions with the Premium plan.
When I prepared this demo it was before I worked on the GitHub Actions demo – which would have come prior to this in my presentation. The order of the demos plays an important role in why this failed so I’ll come back to this later.
In order to show the cold start and latency issues with the Azure Functions Consumption plan and how the Premium plan avoids this I was using a load testing site called Loader.io. This tool required that the host URL be verified with a special token that had to be returned from the site. In order to map my Azure Function result to the expected URL that loader.io wanted I needed to configure and Azure Function Proxy.
When I was setting up the demo I first setup the proxy in the portal, and then I moved it so a proxies.json file in the Visual Studio solution as shown here
When I was testing this demo I was able to verify the token and use loader.io to load test my consumption and premium functions without issue. After getting this demo done I moved on to the GitHub Action demo and took a copy of the code and used that for the CI/CD to push it up into Azure and that demo worked without issue. When I tested the automated deployment, I just tested the function and not the load testing.
You may have an idea of what caused the failed demo, but if not it’s related to the proxies.json file. When I copied the file into my solution I forgot to go to the properties and mark it as content to be deployed. So in the GitHub Actions demo that took place prior to the load testing demo, it would have deployed a fresh copy and removed the Proxy I had originally setup in the portal. This meant that if I needed to validate the token from loader.io, I wouldn’t be able to and thus I saw the following error in my demo and was a bit surprised.
I didn’t have or want to take the time to live debug to find out what was wrong as I feared I would go down a rabbit hole and totally derail my talk. So I moved on and explained as best as I could what would have happened…again I have screenshots but it wasn’t as cool as showing it live.
Testing, rehearse and what went wrong
When I look back at that presentation, I had under 2 weeks to prepare and I was still working on the talk the morning of to finish up a few areas. I would not have left things to the last minute as I did but things were very fluid in Feb/Mar with COVID-19 and I wanted to put my best effort in for the community and felt I could still manage it but under not so ideal circumstances.
I worked on each demo individually as they weren’t really related except for the GitHub Action demo. I should have done that first because I would have caught the token verification issue right away due to the missing proxy.
Speaking of token verification, it would seem its valid for 24 hours and as I got close to the talk I didn’t want to warm up my functions as I wanted them in a cold state. So not testing them right before my talk I missed out on seeing that the token just expired, which would have shown me that the proxy was missing.
Due to the time crunch when I rehearsed I didn’t do my demos inline with the presentation, I did them separately. Again had I done the demos with the presentation I would have potentially caught the expired token and missing proxy. It’s important to do an end to end test and walk through of the presentation material regardless how comfortable you feel you are.
In retrospect I should have gone back and tried to troubleshoot this issue at the end of my talk. As soon as I looked at the function I noticed the proxy was missing and I was able to add it quickly which would have looked like this…
This would have only taken me 5 minutes to troubleshoot and fix which would have allowed me to show the real demo. All in all the talk went well and I got some really good feedback. No one complained about the broken demos and I mentioned that I would follow up with the blog post to show what was wrong and how I fixed it. I was a bit disappointed that I couldn’t show this demo live as its pretty awesome to see, so look for a future blog post where I’ll setup a Premium function and throw some load at it – maybe I’ll even record it and post to YouTube.
I hope you enjoyed this post and found something useful. I find it’s important to acknowledge when we do run into issues and how we solve them.
What is the Book of News? The Microsoft Build 2020 Book of News is your guide to the key news items that are announced at Build 2020.
As expected there is a lot of focus on Azure and AI, followed by Microsoft 365, Security, Windows, and Edge & Bing. This year the book of news is interactive instead of being a PDF.
Back at Microsoft Ignite, it was announced that the Global Azure Bootcamp was going to be rebranded to Global Azure and run across 3 days from Thursday April 23 to Saturday April 25.
This is the same great event but only better. Organizers now have the freedom to host one or more events across the 3 days. All around the world user groups and communities want to learn about Azure and Cloud Computing and providing the community flexibility in terms of when they can host an event or how many events is a win.
Global Azure is the biggest community event about the Microsoft Azure platform.
Microsoft Ignite is the largest tech event of the year with over 26,000 professionals in attendance. During the event there will be plenty of new services news and updates being announced. Microsoft publishes a “book of news” that lists all of the major announcements and links to related sources for more information.
This year I had the opportunity to attend and participate as a speaker at the Microsoft Ignite The Tour in Toronto. The event was held over two days from January 10-11, 2019 at the Metro Toronto Convention Centre, and provided a venue for developers and tech professionals to continue learning alongside experts in developer tools and cloud technologies. It also provided an opportunity to connect with technical community and learn best practices and insights into cloud development, data, IT, AI, and business intelligence.
With events like this I usually attend as an attendee, but this year myself and two colleagues put through submissions for the call for speakers from the MVP community. For me this year has largely been about Azure DevOps and trying to connect with local developers, IT, and businesses and showing them up to take advantage of DevOps, specially with Azure DevOps. So it was only natural to focus my efforts around this. It also provided a great opportunity to connect with industry experts and other Microsoft MVP’s to further my education and career path.
Here are some morning pictures outside the contention centre. It was a nice clear day, but it was very cold.
Getting Prepared for my Talk
Day 1 of the conference was our talk on Azure DevOps. After getting my badge I met up with my co-presenters Ehsan and Arlan in the speaker room. This is a relatively quiet place to get away from the crowd and do some preparation or just relax. The food here was great too!
Presenting – Azure DevOps Community Meetup
Our talk was a community meetup on Azure DevOps with 146 people registered and we had great turnout of 130 or so. The presentation sparked many conversations with the attendees and other community MVPs. This later led to a conversation about coordinating a single Global Azure DevOps Bootcamp in the Great Toronto Area which was very exciting.
Working the Microsoft Area – Demo Stations, Lounges and Meeting Pods
After the presentation was done we had arranged a Meeting Pod for both days to continue the Q&A discussions that sparked from the talk. This allowed attendees to come and talk with us afterwards since our time in the room was limited. I also got to work the Demo Station where anyone could walk up to me any ask me anything. I focused my demos on Azure DevOps, Azure Functions, Event Grid and Logic Apps.
Networking, Socializing and Connecting with the Community
Of course you need to have fun and there was plenty of it throughout the two days. I had the opportunity to connect with other MVP’s in the local community and those that flew in for the event. I love this group and the passion we all share to learn and help others in the community.
In the evening there was a MVP social dinner. The name tags for the event were a neat idea, 1.44” floppy disks on a lanyard. I wonder what rock those disks were dug up from? I’m sure I have a box of these somewhere in my basement “tech” museum.
Having the opportunity to participate at a conference like this was amazing. What was special about this event is that it was my first high profile conference to speak at. When I was younger public speaking was something I dreaded and tried to avoid at all cost. Speaking at conferences like this is nerve racking at first but does goes away as you get comfortable and relaxed. You get so much support from the tech community, whether its other speakers, colleagues or just the attendees wanting to engage with you and try to solve similar problems.
I had a blast at this event and I can’t wait for next year. I hope I once again get the opportunity to participate in this conference as a speaker, staffer or both.
This past weekend I got the opportunity and had the pleasure of participating in my first hackathon at the UofTHacks VI, which was at the University of Toronto campus from January 18th to the 20th at the Bahen Centre for Information Technology. The event consisted of over 500 hackers, and spanned 36 hours, and would ultimately prize 3 winners.
An event, typically lasting several days, in which a large number of people meet to engage in collaborative computer programming. We look past this traditional definition of a hackathon and take it to new heights. UofTHacks is the University of Toronto’s annual hackathon. At UofTHacks, we bring people together to make new friends, learn new things, and bring new ideas to life.
I was participating as a Microsoft sponsor. This meant I was available to help mentor the students who had questions on Microsoft Azure or anything for that matter, and provide them with an insider perspective of how things work in the industry. I also then got to be a judge for the Microsoft prize which was based on projects that leverage Microsoft Azure services.
It was a lot of fun to work with these students as they had such drive and passion for what they worked on. The judging aspect was probably the best part as I got to take a look at over a dozen projects and see what they built, why they built it, how they built and then where would they take it next. Almost all the projects had real world applications and some even created business plans as part of their sales pitch.
Some of the big sponsors at the event were Microsoft, Google, IBM, Interact, Intel, Standard Library, ChainSafe, Lyft and SmartCar, plus many others.
As for the Microsoft prize, it was 4 Xbox One X 1TB consoles. This was presented to team Blink who created an application that would sit in your car and monitor the drivers eyes for signs of fatigue, drowsiness, or any other impairment. They leveraged the Microsoft Custom Vision Service and built their own data model that consisted over 250 images they gathered from the event of peoples eyes. They eyes were that of different ages, different skin colors, with and without glasses. They also retrained this model a number of times over the course of the 36 hour event, including the morning of judging session when the room had different lighting conditions. Their was a mobile and server components of the app that would send out SMS alerts to the registered emergency contact in the event impairment was detected and also alert emergency services. It was a well put together hack that had a clear application for issues we encounter today.
Here are some pictures of the event
This might of been my first hackathon but it definitely won’t be my last. I will keep an eye out for something more suited for the working developer that is maybe limited to a day, otherwise I hope to come back next year and help these students out and see what they create.
Azure provides a lot of messaging solutions and it can become overwhelming for architects and developers to know when to use which server and for what use case. In this talk, Bahram Banisadr will show real life scenarios, code and discuss architecture patterns for messaging and events using Azure Event Hubs, Service Bus, Event Grid, and Storage Queues.