Every beginning weekend, I will share a recap of the week and at the same time a summary of my streams. Those videos are at least two hours longs, so I thought a short summary to know if the topic interest you could be useful. Watch only the summary or relax and enjoy the longer version that up to you!
How to Work With Client-Side Blazor (Jon Hilton ) - This is a great simple post to get started with Blazor web assembly. Simple enough so all can understand what it is and what's nice about it.
Introduction to SVELTE (Sohaib Nehal) - As I rediscover JavaScript, it's fascinating to see how much this language as evolve and now have so many great frameworks.
087: Learning Azure with Gwyneth Pena (CloudSkills.fm) - In this episode, you will discover a freshly awarded MVP, a brilliant content creator, and super energetic women. Wonderful.
Working in Public: Open Source Software with Nadia Eghbal (Hanselminutes with Scott Hanselman) - A very interesting conversation about the open-source work today. She is the author of the book Working in Public, which looks fascinating.
Introducing C# 9: Extending Partial Methods (Anthony Giretti) - It's been a while since a used them, but it nice to see it will be much easier...because I remember how it was.
The DevOps Journey (Chris Ayers) - Interesting post about DevOps in our reality.
Linus Tech Tips Returns for Episode 100! (That Creative Life) - I was really happy when I saw that Linus was back on the show. I really like to dynamic between those two, it feels honest and true.
I was interested to read this book to get some inspiration when it's time to talk to people in an event. But this book brought me way more then that. I really appreciated the clear example and the variety. After reading this book you won't be a master, but you now have options to start a conversation.
Every beginning of weekend, I will share a recap of the week and at the same time a summary of my streams. Those videos are at least two hour longs, so I thought a short summary to know if topic interest you could be useful. Watch only the summary or relax and enjoy the longer version that up to you!
Coding Python: Deploy Django and Postgres Apps to Azure with VS Code - c5m.ca/aaa-ep25
Stream 119 - How easy can we make the deployment of TinyBlazorAdmin - c5m.ca/stream-ep119
Stream120 - Celebrating 500 followers and working on the Chat bot - c5m.ca/stream-ep120
211: Failure To Launch (Merge Conflict) - Interesting conversation about when it's time to stop adding features and deploy. Finding a comfortable point could be difficult sometime.
Stop Pushing Down Your Emotions (Developer Tea) - I think a lot of people are doing that, me included. Very interesting podcast about a real situation.
How the OBS Project changed video forever with lead Hugh Bailey (Hanselminutes with Scott Hanselman) - I was trilled to listen to this podcast. I'm a regular user of OBS and it was wonderful to learn more about this project. I will definitely be lurking on the GitHub side...
Episode 219: Remote crickets and Manager Careering (Soft Skills Engineering) - A really nice episode. Great topics answering diverse questions. One that kept my attention was about the magic manager and the time management...
How to Improve Time Management with Angela Proffitt (Influencer Entrepreneurs with Jenny Melrose) - A few great tips to improve our efficiency at managing time. It's always good to have new ideas and ear how others are doing.
How to Serve Static Files (CSS, JS, Images) in Express JS?(Digamber Rawat) - I just recently start using Express.js and it's been a joy. A very well done package. This post explains a way to structure your server for static content.
The DevOps Handbook - The Technical Practices of Flow (Coding Blocks) - A very long but funny and interesting episode about DevOps. They will review The DevOps Handbook, sharing some experiences, and explaining why they like dislike agree or disagree.
What ever you are on running on Linux, Mac or Windows that you are on the road or in the comfort of your office there is many different ways to manage your Azure resources. In this video I will show you five ways to do it and explain the pros and cons of each:
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting. It's a mix of the actuality and what I consumed.
You think you may have interesting content, share it!
082: Starting Your DevOps Career from Scratch (CloudSkills.fm) - Discussion questions about DevOps, answering auditor questions: how to prepare, what to expect... very interesting.
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting. It's a mix of the actuality and what I consumed.
You think you may have interesting content, share it!
All Things Azure with Dwayne Monroe (Screaming in the Cloud) - People asked me those questions very often: Why Azure? How did you start? Dwayne's answer is excellent... Great podcast honest and true.
15 Statistics You Should Know About A Career In UX Design (Ben Aston) - Interesting post that does the tour of the UX job. I wished I had that kind of information on all types of jobs back in the day. If you are considering UX its a must.
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting.
It's a mix of the actuality and what I consumed.
You think you may have interesting content, share it!
How to Think Like a Boss with Kate Crocco (Influencer Entrepreneurs with Jenny Melrose) - Creating, building feeling good in a business while being a parent is hard.
I took me about one year to read that book. Way longer then it should. It was a good book and it is really easy to read. Maybe it's the fact that it was a "real" book and not in my kindle? But I think it was the format. This book look like a comic book with a director cut. There those little story bubbles and there is the text. The content is amazing, but I felt like I was always losing the vibe while transitioning to the text, or the bubbles.
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting.
It's a mix of the actuality and what I consumed.
You think you may have interesting content, share it!
Building a notifications client with Xamarin and Azure (Laurent Bugnion) - A very nice post that describe how Laurent started to build his cross platforms tools. Sharing the gotchas and a few tips along this first post of the series.
7 principles for modern tech leaders (William Peachey) - Nice post about the evolution of roles in our field of expertise and what could/ should be a a leader roles.
Red Teaming with Leron Gray (Hanselminutes with Scott Hanselman) - A quite interesting episode about playing the bad guys for the good cause. I enjoyed each second of this episode. I new those them existed, but it's great to learn more about them.
Baking Bread with Eric Wolfinger (Wild Ideas Worth Living) - I've been doing my bread for probably fifteen years, and just recently start messing around with sourdoughs... I'm not crazy.. Making bread is both simple and complex... and of course so fun.
Remote Debugging .NET Containers (Karol Deland) - A nice tutorial that explains clearly first the difference between remote and local debugging and then explains how to do it.
Screen Sharing with an Ultrawide Monitor (Kenny Lowe) - Really interesting post.As I think about getting a new screen and heard bad experiences sharing ultrawide screens this look like a nice solution.
An interesting book that shares the best practices about making videos today. How to plan, record, edit... What to do and not do. A quick, direct to the point and complete tutorial to get started. This book was done like today's videos.
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting.
It's a mix of the actuality and what I consumed.
You think you may have interesting content, share it!
Unit Testing in ASP .NET Core 3.1 (Shahed C) - A nice post that shows how to get started with xUnit the voted most popular test framework.
Miscellaneous
APIs in the 2020s Panel (.NET Rocks!) - A virtual panel of awesome speakers that talked about API, REST, GraphQL, oData and so more. Lovely episode.
471: How to Say No Without Saying No, with Lois Frankel (Coaching for Leaders) - Saying No... being open. Really interesting topic. I put Lois Frankel: Nice Girls Don’t Speak Up or Stand Out in my to read list, that book maybe written for women in mind, but I think it is really interesting.
Leveraging Our Emotional Goals (Developer Tea) - An interesting episode that talk about goals and what we need to do (or not) to achieved them.
203: Updating Open Source Projects (https://castbox.fm/episode/203%3A-Updating-Open-Source-Projects-id2117504-id267802246) - As I just create my first version in one of my open-source project I found the topic more than interesting... Thank you, great show.
How to Stop Windows 10 Updates (5 Methods) (Mohammed Siddiqui) - I think you should only prevent auto-update when you really know what you are doing. Updates are easy to forget and therefore your PC could be at risk. That said, sometime it could really be a must.5misc.windows.update]
An incredible adventure yes around the globe, but more important over the personal limits. I found this book very inspiring. I felt following him across the Antarctica... In the blizzard or in those deep moment. Great memoir, great adventure.
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting.
It's a mix of the actuality and what I consumed. As you will quickly see This week is heavily tinted by the Microsoft Build event. I still have tons of videos to watch since I was was busy monitoring the chat during most of the performances.
You think you may have interesting content, share it!
Chocolatey with Rob Reynolds (.NET Rocks!) - Awesome episode talking about all the good and the great of Chocolatey that awesome package manager.
A path to technical leadership with Keavy McMinn (Hanselminutes with Scott Hanselman) - Because the most interesting path are more then often not the straight one... Great talk about the choice we make in our lives...
Every Monday, I share my "reading notes". Those are a curated list of all the articles, blog posts, podcast episodes, and books that catch my interest during the week and that I found interesting.
It's a mix of the actuality and what I consumed. You think you may have interesting content, share it!
Git Branching Strategies (Chris Ayers) - Nice post that describes 3 popular solutions base on your teams' skills and experience.
Podcasts
Making Docker lovely for Developers with Simon Ferquel (Hanselminutes with Scott Hanselman) - Incredibly interesting podcast episode where they discuss about Docker on Windows. How it was working before and how it works with WSL2. A must.
5 Reasons It's Better to Be A Small Streamer - Twitch Tips (Stream Coach: Twitch Stream Tips | Partner Interviews | Pro Advice) - A nice episode that list some advantages of being a smaller streamer. I've been streaming for one year now, I'm pretty happy with my journey, learned a lot, and still learn so much. I don't feel disadvantaged, but that's maybe just because I don't really focus on growth.
469: See What Really Matters, with Greg McKeown (Coaching for Leaders) - Nice episode that talks about the essential, how to find it, how to not pass over it. Very interesting. The book, Essentialism, from seems interesting too... And hop! On the to-read list.
Miscellaneous
Whiteboarding for Developers: Yes, You Have To ( Chris Gustafson) - An excellent post that will help you to remember why whiteboarding is important. It will also provide nice guidance to restart doing it efficiently.
Most solutions, if not all, are composed of multiple parts: backend, frontend, services, APIs, etc. Because all parts could have a different life-cycle it's important to be able to deploy them individually. However, sometimes we would like to deploy everything at once. It's exactly the scenario I had in a project I'm working on where with backend and one frontend.
In this post, I will explain how I use nested Azure Resource Manager (ARM) templates and conditions to let the user decide if he wants to deploy only the backend or the backend with a frontend of his choice. All the code will be available in GitHub and if you prefer, a video version is available below. (This post is also available in French)
The Context
The project used in this post my open-source budget-friendly Azure URL Shortener. Like mentioned previously the project is composed of two parts. The backend leverage Microsoft serverless Azure Functions, it a perfect match in this case because it will only run when someone clicks a link. The second part is a frontend, and it's totally optional. Because the Azure Functions are HTTP triggers they act as an API, therefore, they can be called from anything able to do an HTTP call. Both are very easily deployable using an ARM template by a PowerShell or CLI command or by a one-click button directly from GitHub.
The Goal
At the end of this post, we will be able from one-click to deploy just the Azure Functions or to deploy them with a frontend of our choice (I only have one right now, but more will come). To do this, we will modify the "backend" ARM template using condition and nest the ARM template responsible for the frontend deployment.
The ARM templates are available here in there [initial](https://github.com/FBoucher/AzUrlShortener/tree/master/tutorials/optional-arm/before) and [final](https://github.com/FBoucher/AzUrlShortener/tree/master/tutorials/optional-arm/before/after) versions.
Adding New Inputs
We will nest the ARM templates, this means that our backend template (azureDeploy.json) will call the frontend template (adminBlazorWebsite-deployAzure.json). Therefore we need to add all the required information to azureDeploy.json to make sure it's able to deploy adminBlazorWebsite-deployAzure.json successfully. Looking at the parameter required for the second template, we only two need values AdminEMail and AdminPassword. All the other can be generated or we already have them.
We will need also another parameter the will act as our selection option. So let's add a parameter named frontend and allowed only two values: none and adminBlazorWebsite. If the value is none we only deploy the Azure Function. When the value is adminBlazorWebsite we will deploy the Azure Function, of course, but we will also deploy an admin website to go with it.
Following the best practices, we add clear detail and add those three parameters in the parameters section of the ARM template
"frontend": {
"type": "string",
"allowedValues": [
"none",
"adminBlazorWebsite"
],
"defaultValue": "adminBlazorWebsite",
"metadata": {
"description": "Select the frontend that will be deploy. Select 'none', if you don't want any. Frontend available: adminBlazorWebsite, none. "
}
},
"frontend-AdminEMail": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "(Required only if frontend = adminBlazorWebsite) The EMail use to connect into the admin Blazor Website."
}
},
"frontend-AdminPassword": {
"type": "securestring",
"defaultValue": "",
"metadata": {
"description": "(Required only if frontend = adminBlazorWebsite) Password use to connect into the admin Blazor Website."
}
}
Nested Templates
Let's assume for now that we always deploy the website when we deploy the Azure Function, to keep things simple. What we need now is to used nested ARM template, and that when you deploy an ARM template from inside another ARM template. This is done with a Microsoft.Resources/deployments node. Let's look at the code:
If we examine this node, we have the classic: name, type, dependsOn, resourceGroup, apiVersion. Here We really want the Azure Functions to be fully deployed so we need the FunctionApp to be created AND the GitHub sync to be complete, this is why there is also a dependency on Microsoft.Web/sites/sourcecontrols.
In properties we will pass the mode as Incremental as it will leave unchanged resources that exist in the resource group but aren't specified in the template.
The second property is templateLink. This is really important as it's the URL to the other ARM template. That URI must not be a local file or a file that is only available on your local network. You must provide a URI value that downloadable as HTTP or HTTPS. In this case, it's a variable that contains the GitHub URL where the template is available.
Finally, we have the parameters, and this is how we pass the values to the second template. Let's skip those where I just pass the parameter value from the caller to the called, and focus on basename, AzureFunctionUrlListUrl, and AzureFunctionUrlShortenerUrl.
For basename I just add a prefix to the parameter basename received, this way the resource names will be different but we can still see the "connection". That's purely optional, you could have added this value in a parameter to azureDeploy.json, I prefer keeping the parameters a minimum as possible as I think it simplifies the deployment for the users.
Finally for AzureFunctionUrlListUrl, and AzureFunctionUrlShortenerUrl I needed to retrieve the URL of the Azure Function with the security token because they are secured. I do that by concatenating different parts.
Component
Value
Beginning of the URL
'https://'
Reference the Function App, return the value of hostname
Now that the second ARM template can be deployed, let's add a condition so it gets, indeed, deploy only when we desire. To do this it's very simple, we need to add a property condition.
In this case, is the value of the parameter is different then none, the nested template will be deployed. When a condition end-up being "false", the entire resource will be ignored during the deployment. How simple or complex are your conditions... that's your choice!
Visual Studio Codespaces (Nik Molnar) - I really like the new name I think it says more about what it is. And seriously how can I not like the new price! Less than 2$/day for a machine!