Diary of a code trotter

Laurent Bugnion

I am really happy to welcome you here. This page displays the 10 most recent entries of my blog.

For older posts, please go to this page where you can browse the whole content.

For other content, please visit my main page at https://galasoft.ch

Thank you for your visit!!

My new role for fiscal year 2020

Microsoft, Microsoft Ignite the Tour, Work
See comments

At Microsoft, we are using a weird way to count the years: Our fiscal year goes from July to July for some historical reason, and so every mid-calendar year, we are faced with what other firms often do in December: Reorganizing the teams, doing accounting, finishing up the budgets...

The end of the fiscal year 2019 also marked the end of our Microsoft Ignite the Tour 2019, in which we tried quite a few new concepts. We took this tour on the road in 17 different locations, including more remote locations where Microsoft rarely has first party conferences. I've personally spoken at 9 of these locations, many of these for my first time, including Mexico City, Sao Paulo, Johannesburg, Hong Kong and more.

You can see the videos of Microsoft Ignite the Tour 2019 here.

And in 2020?

With 2020 coming up, we are already hard at work on the next edition of Microsoft Ignite the Tour. And for this edition, we go bigger and further: We will have 30 locations on 5 continents (still no edition in Antartica I am afraid :)

For me personally, this is also time for a change. I asked for and obtained a change in my activities: Starting in August (which coincidentally also marks my second anniversary at Microsoft), I will move in my good friend Scott Cate's team, and my main activity for fiscal year 2020 will be dedicated to the Tour.

Learning paths: A success that we will repeat

More specifically, I will lead one of the learning paths consisting of five breakout sessions and one theater session. It's still a bit early to reveal what this learning path will be about, but let's just say that we are building on last year's feedback, keeping what worked great and improving the few areas where we can be better. The teams are now assembled and hard at work to create the sessions.

Polymath: A polyvalent presenter

One of the things we had to deal with last year was emergency situations. One of my colleagues ended up in the hospital just a couple of days before he was supposed to be presenting (he is good now, no worries :). We managed to solve this issue thanks to a very professional team and extra work, but it was stressy.

This year we want to be better prepared. This is why in addition to leading one of the learning paths, I will also take the role of polymath. In Wikipedia, the article about polymath is illustrated by a picture of Leonardo da Vinci.

Leonardo da Vinci

Source: Wikipedia

This is of course very ambitious and none of us is seriously comparing ourselves to that great man. By extrapolation, our definition of a polymath on Microsoft Ignite the Tour is someone who learns 10 different sessions, and is able to deliver those, in case of emergency such as above, with minimal preparation and time. This is a really interesting challenge for us, which will lead us to learn even more about Azure than we would normally do.

A Cloud Advocate is (amongst other things) a professional presenter, and so it's not new for us to learn and give new sessions in a relatively short time. But a big part of the job is also to be a learner. We keep learning new technologies, new services, every day. More than ever, at 48 years old I am still learning ever day, and I just love it. The polymath role pushes me further in that activity and I just love it. Without revealing too much, I can say that the areas where I will be learning and presenting are artificial intelligence, web apps, databases, containers and more.

In the next few weeks, we will start being more precise about the content of Microsoft Ignite the Tour, and I will also detail the locations where you will be able to meet me in person. For now, you can already get ready for Microsoft Ignite the Tour and check all the locations. I am looking forward very much to meeting more people in person, and to deliver these new and updated sessions.

Happy coding! Laurent

DateTime.Now: No, no...

Azure, Technical stuff, Work
See comments

This post was cross-posted to Dev.To, an awesome community!

Recently my colleague and friend Donovan Brown was in Switzerland for customer visits and for the DotNet Day conference in Zurich. I took the occasion to spend some time with him and we got to talk (as you would expect) about geeky and "cloudy" stuff.

One topic of discussion (and that was also mentioned by one of the clients) is: What do you need to get ready for the cloud... and one topic was: Timezones!!

What time is it, really?

Because of all the regions we have, it means that your code suddenly has the potential to easily go global :) So here's a fun experiment you can do:

  1. Create a new web application. Here I use Visual Studio to create an ASP.NET Core web application with Razor pages.

  2. In the HTML code, display the local time and the UTC time. In ASP.NET, I can use the following code in the index.cshtml:

Local time: @DateTime.Now

UTC: @DateTime.UtcNow

In Razor pages, you can call C# code directly from the CSHTML markup, which is very convenient.

  1. Run the application locally. If like me you are based in Western Europe, you should see something like the below (notice the 2 hours difference between local time and UTC). If you are based somewhere else, it will vary, but there are very good chances that the Local time and the UTC time are going to be different (except of course if you happen to be in a timezone where the local time is the same as UTC).

Running the application locally

  1. Now deploy your application to Azure, into the West US region. You can do that from Visual Studio directly, or create an App Service in the Azure Portal and deploy there.

  2. Run the West US application. Now you should see the same time displayed for Local and for UTC.

Running the application in Azure


So that might be a surprise, and in fact I wasn't expecting that when I first did this experiment a few months ago.

What's going on here is that the Azure architects decided to make it easy for people to migrate web applications (App Services) from region to region without changes in code used to calculate time and time differences. So they run all the Azure servers on UTC. On the other hand, this has the disadvantage that you might have to modify your code to take this in account when you migrate from on-premises to the cloud

For example, if I am based in Switzerland and deploy my application to Western Europe (which is based in the Netherlands), I would expect my application to have the exact same DateTime.Now in Azure than locally. And yet...

The morale of the story...

The big learning here is that if you are looking to migrate to the cloud, suddenly timezones become very relevant, but not necessarily in the way that you would imagine. It's not that you need to know where your code will be running. It is that you need to know that these regional questions will be abstracted.

It would be a great idea to prepare yourself to the migration by doing the right thing already now on premises: Do not use DateTime.Now in your code but use DateTime.UtcNow instead and do the conversions where needed. This way you are already abstracting the location of your code, and when you migrate to the cloud and the location becomes irrelevant or unpredictable, your code will continue to work without being affected.

Happy coding


Creating the simplest possible ASP.NET Core form with a POST method

.NET Core, .NET Standard, ASP.NET, Razor
See comments

Simple HTML form in ASP.NET Core

Recently I needed to create a simple page for someone to submit an HTML form. The rest of the Azure aplication is running on Azure serverless functions, Logic apps and Cognitive services, but for that last part I wanted something where the user can click on a link, open the page in a web browser (probably on a mobile device), enter a passphrase in a form and then submit through a POST to an SSL encrypted page. I thought of writing a small Xamarin app and submitting through POST to an Azure Function. Another option would be to use a static HTML page and to use Javascript to submit the Form through a POST to that Azure Function. I don't exclude these two options for the future.

But in the meantime I wanted to experiment with a simple Razor page (CSHTML) that would present an HTML Form to the user, and submit this Form to itself with a POST over HTTPS.

I noticed that the documentation is not great about how to do this in the simplest possible manner and so I created an example with source code and complete instructions.

I hope this is helpful to you!

Happy coding


2018 in review, planning for 2019

Azure, Cloud Developer Advocate, Conferences, Microsoft, Personal, Work
See comments

As 2019 is starting, I want to take a moment to reflect on 2018 and think about next year.

After joining Microsoft and the Azure Cloud Developer Advocates team in August 2017, 2018 was the first full year I spent in this team. I had decided to travel a lot and speak in places I had never spoken before, connecting with developers and communities that I had never met earlier. This meant a lot of travel, but I am happy to report that all went very well, I stayed (mostly) healthy (except for a small episode of the flu probably caught on a Singapore-Zurich flight), and I learned a lot of things, both about Azure and about myself :)

The conferences

I listed below all the conferences I spoke at in 2018. There was a total of 53 sessions, some of them online, most of them in person. I loved creating and giving these sessions, but most importantly I loved connecting with the attendees. If I had to pick my two favorite events of 2018, I would probably select two user group events :


Meetup in Sao Paulo, Brazil (December 11, 2018)

.NET, .NET Standard, Conferences, Work
See comments

I am super happy to announce that on December 11, 2018, I will be presenting my session .NET Standard, .NET Core, why and how? to the .NET Sao Paulo User group.

DotNet Standard DotNet Core

You can register for this talk today! It's a free event and Microsoft will be offering free food and drinks.


Where can you find me at NDC Sydney?

Cloud Developer Advocate, Conferences, MVVM, NDC, Xamarin
See comments

NDC Sydney

As I just arrived after a long trip from Zürich to Sydney, I thought it would be good to give an update on my activities down under.


Three new videos on my YouTube channel

.NET Standard, ASP.NET, Azure, Cloud Developer Advocate, Conferences, Website
See comments

I just published three new videos on my YouTube channel. These videos are the beginning of a 14-videos series recorded live at the Modern Web Tour this July in Zurich Switzerland. You can see a recap of this session (including slides and source code) on my Presentations site.

If you like what you see, please subscribe to my YouTube channel. The more subscribers I have, the more motivated I am to create new videos :)

Title slide


Where will you see me in September and October?

Cloud Developer Advocate, Conferences
See comments

Now that the summer break is over, I am preparing myself for quite a lot of travel in the coming months until Christmas. As you will see in this post, I went a little overboard with conferences, and will have the great pleasure to present in various location where I have never spoken before. This year was quite a busy year for me in terms of speaking engagements and travel, and I am so grateful that Microsoft has given me the opportunity to touch so many people and to share knowledge about the amazing services that Azure is offering. I also started recording myself during conferences and while the editing process is not as fast as I may wish, I have already put one such presentation about .NET Standard on my YouTube channel.


Rebooting the blog (again...)

Azure, Blog, Cloud Developer Advocate, Website
See comments

If you have been attentive (and I wouldn't blame you if you haven't), you may have noticed that this blog was quite silent for the past few months. Apart from a blog post around the Microsoft Build timeframe, I didn't do much here. There are multiple reasons for that (aren't there always...), but the main one was that when I joined Microsoft a year ago, I also undertook a fairly big task on my free time: I decided to port my website and my blog to Azure.



Meet me at Build 2018!!

Azure Functions, Build, Conferences, Microsoft, Xamarin
See comments

As I am on my way to Microsoft Build in Seattle right now, I want to post my schedule so as many of you as possible can come say hi! I really love to meet people from the community and hope that we have a good chance to talk in Seattle too!