It's reading notes time! It is a habit I started a long time ago, where I share a list of all the articles, blog posts, and books that catch my interest during the week.
What is an RDP Browser? (And How To Get One) (Peter) - A great alternative when you want to test on different browser or version of a browser, for gaming, And also for cyber security when investigating.
In this post, I will share a few things that we need our attention when deploying a .NET isolated Azure Function from GitHub to Azure using the Zip Deploy method. This method is great for fast deployment and when your artefacts are zipped in a package.
Note The complete code for this post is available on GitHub
Understanding Zip Push/Zip Deploy
Zip Push allows us to deploy a compressed package, such as a zip file, directly to Azure. It could be part of a continuous integration and continuous deployment (CI-CD) or like in this example it could replace it. This approach is particularly useful when you want to ensure your artifacts remain unchanged across different environments or when aiming for the fastest deployment experience for users.
While CI-CD is excellent for keeping your code up-to-date, zip deployment offers the advantage of speed and consistency. It eliminates the need for compilation, leading to quicker uploads and deployments.
Preparing Your Package
It’s crucial to package with all necessary dependencies the code required. There is no operation to fetch any external packages during the deployment, the zip file will be decompressed and that's it. The best way to ensure you have everything you need is to publish your code, to a folder and then go in that folder and zip all the files.
dotnet publish -c Release -o ./out
Don't zip the folder, it won't work as expected.
You need to go inside the folder and select all the files and zip them to create your deployment artefact.
The next step is to make your artefact available online. There are many ways, but for this post we are using GitHub Realease. From the GitHub repository, create a new release, upload the zipped file created earlier and publish it. Note the URL of zipped files from the release.
Preparing The ARM Template
For this one-click deployment, we need an Azure Resource Manager (ARM) template. This is a document that describes the resources that we want to deploy to Azure. To deploy the zipped file into the Azure Function there are two particularities that required our attention.
Here we define an Windows Azure Function and the WEBSITE_RUN_FROM_PACKAGE needs to be set to 1. The WEBSITE_RUN_FROM_PACKAGE is the key that tells Azure to use the zip file as the deployment artefact.
Then to specify where the zip file is located we need to add an extension to the Azure Function.
The packageUri property is the URL of the zipped file from the GitHub release. Note the dependsOn property that ensures the Azure Function is created before the extension is added. The complete ARM template is available in the GitHub repository.
One-click Deployment
When you have your artefact and the ARM template uploaded to your GitHub repository, you can create a one-click deployment button. This button will take the user to the Azure portal and pre-fill the deployment form with the information from the ARM template. Here is an example of the button for markdown.
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FFBoucher%2FZipDeploy-AzFunc%2Fmain%2Fdeployment%2Fazuredeploy.json)
The has three parts, the first is the image that will be displayed on the button, the second is the link to the Azure portal and the third is the URL of the ARM template. The URL of the ARM template is the raw URL of the file in the GitHub repository, and it needs to be URL encoded. The URL encoding can be done using a tool like URL Encode/Decode.
Final Thoughts
Zip deployment is a powerful tool in your Azure arsenal by itself of part of a more complex CI-CD pipeline. It's a great way to make it easier for people to deploy your solution in their Azure subscription without having to clone/ fork the repository.
Video version
If you prefer, there is also have a video version of this post.
It's reading notes time! It is a habit I started a long time ago, close to 600 weeks ago in fact, where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Is Your Container Image Really Distroless? (Laurent Goderre) - Nice post that explains a new way to improve security and more while building our container by going distroless.
Azure PowerShell Tips and Tricks (Paul Harrison) - PowerShell is a very interesting and useful script language.All those tips are pure wisdom!
DevOps
Beautiful .NET Test Reports Using GitHub Actions (Sean Killeen) - It's true that the unit test result in Azure DevOps looks amazing. Pretty nice adaptation in GitHub Action, could/ should it be native?
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Blazor WebAssembly Virtual File System Access (Michael Washington) - A nice tutorial the show us how to keep file (aka data) in the browser of the visitor. All the code is available.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Last Friday, I encountered an issue while trying to run my Azure Function locally using VS Code. Despite having installed the Azure Function extension and the Azure Functions Core Tools, I was unable to execute the func start command without encountering an error saying that no functions could be found.
In this post, I will share the various troubleshooting steps I took, what didn’t work, and how I ultimately resolved the issue. Spoiler alert: everything is now working correctly.
The Problem
My Azure Function is a .NET 8 Isolated HTTP trigger. When I attempted to execute the func start command, it failed to find any functions. A quick look at the documentation, I discovered that version 4 of the Core Tools was required for type Isolated process. However, I had already installed version 4 via the update popup in VS Code.
Something was wrong. I tried func --version and it returned 3.x.xx, weird... And this is how I knew there was a problem.
Failed attempts
Following the Azure Functions Core Tools documentation I found that there were multiple methods to install the Core Tools. Because that laptop was on Windows 11, I started by downloading the func-cli-x64.msi installer and run it. It didn't work, the version 3 was still there.
I tried to install the Core Tools v4 using NPM: npm install -g azure-functions-core-tools@4. It didn't work.
I tried to uninstall the version 3 with npm uninstall -g azure-functions-core-tools. I tried using the command palette in VSCode
Still nothing was changing anything, the version 3 was still there.
The Solution
What works, was using Chocolatey command choco uninstall azure-functions-core-tools to uninstall the version 3. Some how, it must have been install at the different location or some "config" got lost at some point (it's a developer laptop after all), and the other methods (npm, msi, vscode) couldn't see that version 3 was installed.
After that, I installed the version 4 using NPM npm install -g azure-functions-core-tools@4. And it worked! The func --version returned 4.0.5571 and the func start command found my function.
I wrote this quick post hoping that it can help someone else, as I cannot be the only one with this problem.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Blazor Basics: Advanced Blazor Form Validation (Claudio Bernasconi) - Having control on the validation and how we guide our users is a must. This post does a great job at explaining how to to it within Blazor with clear and simple code sample.
An Introduction to Mistral AI (https://www.freecodecamp.org/news/an-introduction-to-mistral-ai/) - An interesting alternative to GPT when text is involved.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Dapr v1.13 is now available (Dapr project maintainers) - I really like those post that goes over the news and also named all the contributors. This is when you see how many people are involved.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Blazor and .NET 8: How I Built a Fast and Flexible Website (Jeffrey T. Fritz) - optimisation is often a step that people forgets, but it's one that is extremely rewarding.This series seams very interesting, we will s| more of those in the notes...
The FAST and the Fluent: A Blazor story - .NET Blog (Vincent Baaij) - Nice post that teach us a bit of history. I'm fan of Fluent UI and Blazor...and more recently of the Fluent UI Blazor library. I think it's a must for all Blazor developers.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Planning for Resiliency with Azure OpenAI (Matthew Anderson) - Like everything else in the cloud we need to think about resiliency. This nice post get us started and explains 2 different architectures for our system.
My Top 10 NEW Visual Studio Features of 2023 for .NET Developers - .NET Blog (James Montemagno) - I don't code everyday and when I do it's on all kind of device and OS so I end up more often using VS Code. But, when I can use Visual Studio it's always a treat. In this post, James shares his favorite new features part of that great IDE. Those are only the recent ones, there are so much more!
Scaling Docker Compose Up (Milas Bowman) - Interesting post that do a deep dive into docker compose file.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
How to Make Your Web Sites Accessible (Beau Carnes) - Accessibility is a must and now there a course available on camp to help us making our website accessible.
Dev Tunnels: A Game Changer for Mobile Developers - .NET Blog (James Montemagno) - Dev Tunnel is definitely a incredible tool.I used it for debugging connector in Power Platform and there is no doubts it will help with mobile app...No more guesses debug with the real thing.
Miscellaneous
Introducing Sudo for Windows! (Jordi Adoumie) - Wow! This is a really good new feature. How many time a forgot to start my terminal as admin and needed to starry over again...Looking forward to try it.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Understanding C# 8 default interface methods (Andrew Lock) - Very clear post about the new feature available in interfaces, with great examples that make us understand why and when it is useful and how to implement it.
Code Visualization with CodeSee's Shanea Leven (Hanselminutes with Scott Hanselman) - Another very interesting episode. CodeSee definitely catches my attention, I'm planning to try it with my OSS project to get started.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Cloud
Backing up files to Azure blob storage with azcopy (Andrew Lock) - A very interesting solution to a situation we are all facing. Nice to see the OSS project (I didn't know that one) and smart way to use Azure.
Simpler auth for Blazor Web Apps with Auth0? (Jon Hilton) - A wonderful tutorial very well detailed that explains how to use Auth0 with Blazor server app and search some gotchas so our experience goes smoother.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
FluentUI.Blazor v4.3 (Denis Voituron) - I recently migrate one of my website to use FlunentUI Blazor, and the experience is amazing. It looks great and required less code from me.
WebAssembly: 4 Predictions for 2024 (Matt Butcher) - Nice post that review 2023 predictions and sets 2024 ones explaining why it could happened.
Dockerfiles have versions? (DevOps and Docker Talk: Cloud Native Interviews and Tooling) - Interesting episode about a little thing that could have a big impact in our CICD and I'm sure is overlooked.
How to Focus When the World Feels on Fire (Modern Mentor) - Quick thoughts and tips to stay focus. Sometimes it's harder and other times and having a fews tricks his always a good idea.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Using the CLI to Build and Run .NET Applications (Dusko Mirkovic) - This is a short tutorial that shows the basics functionalities of the command dotnet... Its very useful and it works on al platforms.
Scanning Uploaded Files for Malware in C# (Vladan Petrovic) - This post shows how to use a pretty neat tools to improve security in our C# app. And there is a free version.
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Getting Started with Infra for Developers in Azure (Andreas Helland) - The ease of creating and managing virtual desktop is very useful in many scenario as this post shows. And Aspire looks just as amazing... What's your top favorite from the recent past events?
Azure Durable Entities Revisited (Ken Ross) - Durable functions are a great tools in integration and long process activities.This post is a very nice introduction on the topic.
Building a better internet with Cloudflare's Rita Kozlov (Hanselminutes with Scott Hanselman) - Just like Scott said: I'm a user of Cloudflare for years, but didn't gave you any money yet, is it okay? Learn if it is and why in this nice episode.
KubeCon Live with Friends 2023 (DevOps and Docker Talk: Cloud Native Interviews and Tooling) - A review of KubeCon, what's hot what's new and more.
Maarten Balliauw: Developer Tools - Episode 273 (Azure DevOps Podcast) - I really enjoy this episode with Maarten where he talks about Riders, and their vision of this IDE, and other different tools.
Blogging with guest Andrew Lock (Weekly Dev TipsWeekly Dev Tips) - Why should you blog, I mean now in 2023/2024? Listen to Andrew answering to this question. He knows what he is talking about, he blog every weeks and he is an author (love the book too btw).
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Suggestion of the week
Getting Started with Blazor’s New Render Modes in .NET 8 (Jon Hilton) - Amazing post that covers the four rendering mode for Blazor in .NET 8.There just enough code to understand the concept and see the trade-offs and advantages of each options.
ai generated: melting snowman who love to read
Cloud
A Decade of Have I Been Pwned (Troy Hunt) - Congrats for this anniversary and what a journey it was.I remember reading with passion your tech blog describing the tech decision taken for the site.
Making Azure the Best Place to Observe Your Apps with OpenTelemetry (Matthew McCleary) - Looking back, tracking, monitoring, tracing are such important action when we think about application life cycle.I'm very happy to see Azure offers a great sets of tools to do it.
🤖 Does Functional Programming Matter To You? (Rob Conery) - Interesting and intriguing post about functional programming. Wanna share your thoughts? Rob is waiting for your comments...
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
5 Awesome C# Refactoring Tips (Milan Jovanović) - Refactoring is an important skill to have. Most code grow by patches and at some point it needs some help.
Hot Reload for C# Dev Kit (Mark Downie) - Wow! Things are evolving so fast, we pass from syntax highlighting from hot reload so fast!
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
Suggestion of the week
ASP.NET Core Basics: Essential NuGet Packages (Part 1) (Assis Zang) - Great idea this post! Those five packages are definitely very useful, and I like that they are not just mentioned but also explained and implemented in the demo solution.
Connect to localhost from inside a dev container (Jim Bennett) - Interesting... I thought Dapr was the easiest but the solution presented in this post could be a easier workaround, at lease while coding/ testing it.
Importing Flat Files into Azure SQL DB (Josephine Bush) - Omg! That makes Azure Data Studio the easiest and low friction tool to import data from a flat file into a Ms SQL database
It is time to share new reading notes. It is a habit I started a long time ago where I share a list of all the articles, blog posts, and books that catch my interest during the week.
If you think you may have interesting content, share it!
.NET MAUI on Linux with Visual Studio Code (Bruno Capuano) - This is pretty interesting! Instead of having a Windows vm on my Linux laptop I could run natively ...I'll need to try that!
Miscellaneous
Announcing Microsoft Copilot Studio (Jared Spataro, C) - Copilot Studio was for sure one of the big announcement during Microsoft Ignite. Learn more about what it is, what it does, and how you can get it in this post.