Blog

Here is a list of articles I wrote to share my learnings about Development, Tooling and DevOps.
Using Any Terraform Provider in Pulumi: A Guide with Netlify provider
DevOps

Using Any Terraform Provider in Pulumi: A Guide with Netlify provider

Pulumi recently announced a new feature that lets developers reuse any Terraform or OpenTofu provider within a Pulumi program. In this article, we will explore this feature through a case study with Netlify.
Unlocking the Power of Azure Functions Flex Consumption Plan with Pulumi
DevOps

Unlocking the Power of Azure Functions Flex Consumption Plan with Pulumi

In this article, we will explore how to provision a Function App in the new Azure Functions hosting plan: the Flex Consumption plan. We will do that using Pulumi and TypeScript.
Call your Azure AD B2C protected API with authenticated HTTP requests from your JetBrains IDE
Tooling

Call your Azure AD B2C protected API with authenticated HTTP requests from your JetBrains IDE

I have written several blog posts about HTTP clients in the past. I am a big fan of using HTTP text files versioned in a git repository alongside API code and executed by an IDE tooling. However, there was one use case where a GUI tool like Postman or a swagger page was more convenient: retrieving OAuth 2.0 users' tokens. Thanks to the latest OAuth 2.0 feature in JetBrains' IDE built-in HTTP client, this is no longer an issue.
Having Fun With IT Event Calendars
Development

Having Fun With IT Event Calendars

In this post, we will discuss how to write a small .NET program that retrieves events from an IT event calendar and submits them to another one using AngleSharp.
Using dependency injection with Azure .NET SDK
Development

Using dependency injection with Azure .NET SDK

I love how the Azure SDKs have evolved over the years. In the past, there was no consistency between the various Azure SDKs. However, that's not longer the case (at least for most Azure libraries), as they now adhere to the same principles and follow a set of well-defined guidelines.
Week 4, 2024 - Tips I learned this week
Tips

Week 4, 2024 - Tips I learned this week

Some tips about Azure and Azure DevOps.
Another year of sharing and learning - Dev Retro 2023
Essay

Another year of sharing and learning - Dev Retro 2023

Last year, I wrote my first annual retrospective. It was an interesting exercise that I intend to do every year. So for 2023, here is my year in review.
Playing with the .NET 8 Web API template
Development

Playing with the .NET 8 Web API template

In this article, we will explore the latest C# 12 and .NET 8 features by applying them to the basic dotnet Web API template.
Effortlessly Configure GitHub Repositories for Azure Deployment via OIDC
DevOps

Effortlessly Configure GitHub Repositories for Azure Deployment via OIDC

What if we could script the creation and configuration of a GitHub Repository so that it is ready to provision or deploy Azure resources from a GitHub Actions pipeline? We will do that in this article using the Azure CLI and GitHub CLI.
Deploying to Azure from Azure DevOps without secrets
DevOps

Deploying to Azure from Azure DevOps without secrets

If you are deploying your application to Azure from Azure Pipelines, you might want to leverage the ability to do so without using secrets thanks to Workload identity federation. In this article, I will demonstrate how to automate the configuration of your Azure DevOps project, with everything pre-configured to securely deploy applications to Azure.
Create an Azure-Ready GitHub Repository using Pulumi
DevOps

Create an Azure-Ready GitHub Repository using Pulumi

Creating an application and deploying it to Azure is not complicated. You write some code on your machine, do some clicks in the Azure portal, or run some Azure CLI commands from your terminal and that's it: your application is up and running in Azure.
Who is using pnpm?
Tooling

Who is using pnpm?

You may have come across pnpm through discussions with fellow developers, reading blog posts, watching videos, or attending developer conferences. You have probably heard its praises: it's fast, disk-space efficient, and great for monorepos.
Vue.js CI/CD: Continuous Integration
DevOps

Vue.js CI/CD: Continuous Integration

Post about continuous integration with Vue.js.
Execute commands using your project dependencies
Tooling

Execute commands using your project dependencies

You have a dependency in your project and want to execute a command using it? The pnpm exec command can help you with that.
Introducing the Vue.js CI/CD series
DevOps

Introducing the Vue.js CI/CD series

This is the first article of the Vue.js CI/CD series. It will be the opportunity to explain the purpose of the series and the topics we plan to cover.
Manage multiple Node.js versions
Tooling

Manage multiple Node.js versions

If you are working on various projects, you have likely encountered situations where you need to have multiple versions of Node.js installed on your computer.
Perform Dynamic Execution of an npm Package
Tooling

Perform Dynamic Execution of an npm Package

Sometimes, all you want to do is grab an npm package and execute a command with it, without having to install it (whether globally or as a dependency).
A year of learning and sharing - Dev Retro 2022
Essay

A year of learning and sharing - Dev Retro 2022

I usually do not take the time to reflect on my developer journey and look back over the past year. Yet, it's a shame because I miss the opportunity to:
When Pulumi met Nuke: a .NET love story
DevOps

When Pulumi met Nuke: a .NET love story

Today is a great time to be a developer:
Week 46, 2022 - Tips I learned this week
Tips

Week 46, 2022 - Tips I learned this week

Some tips about .NET, pnpm, and Azure DevOps.
Discussion about API clients
Tooling

Discussion about API clients

This article is a discussion about API clients. Without being a comparison between the best API clients, this article talks about the pros and cons of some popular tools to send HTTP requests to an API. The goal is not to elect the best one, but rather to try to answer the following question: what we should consider when choosing an API client, and what are the challenges when using one?
How did I automate the setup of my developer Windows laptop?
Tooling

How did I automate the setup of my developer Windows laptop?

In this article, I talked about my latest project: how I built a script to automate the setup of my developer machine using Boxstarter, Chocolatey, Winget, and PowerShell... and how I learned a few things along the way.
What can we do when stuck with a programming problem?
Essay

What can we do when stuck with a programming problem?

Like I wrote in my last article, as a developer sometimes you get stuck on a problem for a few hours or a few days, your code won't work, and you think nobody can help you 😿. This can be very frustrating, but fortunately, there are plenty of ways to look for a solution or to seek help. You are probably already using some of them with success, yet there may be some you don't think of and that could help you a lot. That is the topic of this article.
What made me want to be a developer?
Essay

What made me want to be a developer?

In this article, I share some thoughts about what made me want to be and continue to be a developer.
Keeping secrets secure when using API Clients
Tooling

Keeping secrets secure when using API Clients

When using some API Clients (like REST Client or the HTTP Client of JetBrains' IDEs), environment variables are stored in JSON files that can contain secrets. To share these files within a team, developers tend to send them by email or by messaging applications, which is not very convenient nor secure 🔐. I thought it would be a good idea to store these secrets directly in an Azure Key Vault and automate the generation of a JSON file containing the secrets using Azure CLI and Nushell.
Week 20, 2022 - Tips I learned this week
Tips

Week 20, 2022 - Tips I learned this week

The "this" in TypeScript, a must-have tool for Durable Functions, and a new git alias.
Week 19, 2022 - Tips I learned this week
Tips

Week 19, 2022 - Tips I learned this week

Git commands in vscode, a nice tool for Vue developers and a must-have Visual Studio extension.
Why will I choose Pulumi over Terraform for my next project?
DevOps

Why will I choose Pulumi over Terraform for my next project?

In today's world of cloud-first applications, multi-cloud/hybrid cloud companies, and complex infrastructures, using infrastructure as code is essential. In recent years, Terraform has become one of the most popular IaC solutions, but its challenger Pulumi is quickly gaining traction. In this article, I will tell you why I think Pulumi is better and why I will choose it over Terraform for my next project.
How to provision an Azure SQL Database with Active Directory authentication
DevOps

How to provision an Azure SQL Database with Active Directory authentication

In this article, we will talk about how to provision an Azure SQL Database with authentication restricted to Active Directory users/groups/applications. We will use Pulumi to do that.
Week 5, 2022 - Tips I learned this week
Tips

Week 5, 2022 - Tips I learned this week

This week we talk about code analysis in .NET, cron expressions with crontab guru, diagrams in Azure DevOps wikis, and sending HTTP requests in VS Code.
Week 3, 2022 - Tips I learned this week
Tips

Week 3, 2022 - Tips I learned this week

.NET configuration providers, Vite vscode extension, Azure DevOps pull request templates, and degit.
Week 2, 2022 - Tips I learned this week
Tips

Week 2, 2022 - Tips I learned this week

This is my first article of the series Tips I learned this week for 2022 🚀! And today we are going to see some tips about .NET, Azure, GitHub, and VS Code.
IaC Hot Reload with Pulumi Watch
DevOps

IaC Hot Reload with Pulumi Watch

Do you like using hot reload when developing applications? How about using hot reload when developing the cloud infrastructure of an application? Keep reading because that's what we are going to talk about.
Pulumi with an Azure Blob Storage backend
DevOps

Pulumi with an Azure Blob Storage backend

By default when you use Pulumi, the state is managed by Pulumi Service which is very convenient as you can concentrate on building your project infrastructure instead of spending time on where to store the state and how to handle concurrency. However, sometimes for governance or pricing concerns, or any other reasons, you don't want to use Pulumi Service and you prefer to manage the state yourself with your own backend. In this article, we will see how we can do that using Azure.
Organize your GitHub stars with Astral
Tooling

Organize your GitHub stars with Astral

Do you often star a GitHub repository and later when you want to get back to it struggle to find it on your stars page? I do! Well, I did... until I discovered Astral, the web application that allows you to Organize Your GitHub Stars With Ease. That is what we are going to talk about in this article.
Week 45, 2021 - Tips I learned this week
Tips

Week 45, 2021 - Tips I learned this week

Vue Devtools, Visual Studio themes, Git tips, and .NET Conf replays.
Migrating and open-sourcing my blog
Tooling

Migrating and open-sourcing my blog

Today I talk to you about the recent changes I made to my blog when I migrated it to Statiq and open-sourced it.
Week 41, 2021 - Tips I learned this week
Tips

Week 41, 2021 - Tips I learned this week

This week I worked mainly in vs code to do some web development so tips will mostly be about vscode.
Week 39, 2021 - Tips I learned this week
Tips

Week 39, 2021 - Tips I learned this week

This week is mainly about learning Azure tooling.
ASP.NET Core - Lost in configuration
Development

ASP.NET Core - Lost in configuration

Have you ever felt a bit overwhelmed by the configuration in a project, not knowing where to look for the settings between the command line parameters, the environment variables, the configuration files in code, the configuration in Azure, ... ? When developing an ASP.NET Core application there are many places where you can put your configuration which makes it difficult to know where you should put it. Even if the official documentation about configuration in ASP.NET Core is very complete and well written, it only describes what you can use and how to use it, not what you should use and when. In this article, I will try to answer these questions and give you my opinion about how we should use configuration providers in ASP.NET Core.
AzureWebJobsStorage, the secret you don't need in your Function App.
DevOps

AzureWebJobsStorage, the secret you don't need in your Function App.

If you are using Azure Functions chances are you are using the setting AzureWebJobsStorage in your Function App configuration. And it is quite likely that the value of this setting which is a secret is stored in a non-secured way directly in your Function App configuration, available to anyone who has access to this configuration. But do not worry, we will see in this article how we can make your Function App more secure by removing this secret.
4 tips about GitHub Actions environment variables and contexts
Tips

4 tips about GitHub Actions environment variables and contexts

I recently played a bit with GitHub Actions and as I have spent some time running, again and again, my workflows to understand what was going wrong I thought it could be interesting to share what I have learned especially concerning environment variables and contexts.
Producing packages for Windows Package Manager
Development

Producing packages for Windows Package Manager

In my previous articles about winget I talked about installing packages but I did not talk about producing packages for Windows Package Manager. So let's set things right.
How to connect to an Azure SQL Database from C# using Azure AD
Development

How to connect to an Azure SQL Database from C# using Azure AD

In Microsoft.Data.SqlClient v3.0.0, a new authentication mode Active Directory Default has been released. Let's see what this means when querying an Azure SQL Database from some C# code.
Week 22, 2021 - Tips I learned this week
Tips

Week 22, 2021 - Tips I learned this week

This week I learned some Azure CLI commands, how to have JSON IntelliSense in vscode and that Azure Storage Explorer was usable again.
Customize your applications when installing them with winget
Tooling

Customize your applications when installing them with winget

In my last article about Windows Package Manager, I said that with winget I was missing "being able to specify some parameters for a package installation (like the workload and components to install for Visual Studio 2019)". Well, that was before I went through a few GitHub issues of the winget-cli repository that mentioned the override option.
Install your applications with winget
Tooling

Install your applications with winget

Using Windows Package Manager import to install multiple applications.
Once upon a time in .NET
Development

Once upon a time in .NET

In this article, I want to talk about a few things in .NET such as HTTP requests with an Http Client, HTTP message handlers, records... For the theoretical aspect of these topics, I think the official documentation on docs.microsoft.com and many blog articles already explain them very well, better than I could ever do. But what I am interested in here is to talk about these topics through a case study.
Week 14, 2021 - Tips I learned this week
Tips

Week 14, 2021 - Tips I learned this week

This week I learned a few things related to vscode and especially about the Azure IoT Hub vscode extension.
Week 12, 2021 - Tips I learned this week
Tips

Week 12, 2021 - Tips I learned this week

This week I learned a few things related to versioning an application
Week 9, 2021 - Tips I learned this week
Tips

Week 9, 2021 - Tips I learned this week

I often see developers talking on Twitter or Dev.to about things they have learned during the previous day or the previous week. I like the idea so I decided to write my first article about tips I learned during this past week. I am not intending to write an article like this every week but from time to time when I feel I have something interesting to share or that I want to keep track of for myself.
Forget DevOps, the future is already here!
Essay

Forget DevOps, the future is already here!

DevOps has been the trendy term for quite a few years now. Lots of companies including the biggest companies in Silicon Valley have started adopting DevOps practices. However the DevOps journey is not an easy one, so you might wonder if DevOps is suited for you and your company. Do now worry anymore, you can forget about DevOps because your company is probably already using the best practices in IT, and these are not DevOps practices. Let's take a deep dive into some of these practices in this article.
How to do a technology watch? - Part 3
Essay

How to do a technology watch? - Part 3

When I started writing this article I did not realize it would be so long so I decided afterward to split it into three parts that will each talk about an aspect of doing a technology watch:
You almost no longer need Key Vault references for Azure Functions.
Development

You almost no longer need Key Vault references for Azure Functions.

The possibility to add configuration sources in Azure Functions has just been released with the latest version of Microsoft.Azure.Functions.Extensions NuGet package. I have been waiting for this feature for a long time (like many people I think) because it brings to Azure Functions all the things we are used to with configuration in ASP.NET Core 😻. But that is not the only reason, it is also because with this feature you almost don't need to use key vault references!
How to do a technology watch? - Part 2
Essay

How to do a technology watch? - Part 2

Learn tech efficiently: blogs, docs, videos, interactive sites.
How to do a technology watch? - Part 1
Essay

How to do a technology watch? - Part 1

Exploring essential technology watch strategies for developers, including leveraging blogs, microblogging platforms, and community engagement
Automate configuration of Teams Tab SSO with PowerShell.
DevOps

Automate configuration of Teams Tab SSO with PowerShell.

If you have no interest in reading the blog post and just want the final script, you can find it on this GitHub repository.
Clean up your local git branches.
Tips

Clean up your local git branches.

When working on a git repository, I often have to manually delete old local branches that I don't use anymore. That's not a huge waste of time but still, that's something I have to do quite often so I decided to automate that.
Handle token retrieval while querying an API
Development

Handle token retrieval while querying an API

In our daily job, we often have to query secure REST APIs that require our HTTP requests to have a valid access token in their Authorization header. Of course, many APIs come with an SDK that makes the job easier for us as it directly takes care of retrieving a token and sending the authenticated HTTP requests. However, it is not always the case and knowing how to implement that using HttpClient, IMemoryCache, and DelegatingHandler can become pretty useful.
Coming across Gitpod
Tooling

Coming across Gitpod

The other day when I was looking for a way to automate my development environment setup, I came across Gitpod. Not really what I was looking for but I discovered an awesome tool for working on open source projects.
Goodbye Azure Portal, Welcome Azure CLI
Tooling

Goodbye Azure Portal, Welcome Azure CLI

Let's jum into Azure CLI to manage Azure resources. The article will show the syntax, the main functionalities and some less-known features like Azure CLI interactive mode.
HTML templating in Xamarin
Development

HTML templating in Xamarin

There are often situations where you need to do some HTML templating and having a powerful HTML templating engine like Razor can be really helpful. What is nice is that you don't need to be in an ASP.NET context to use Razor templates, in fact, you can even use them in a Xamarin Application.
Testing your API with REST Client
Tooling

Testing your API with REST Client

Let's talk about tooling and testing an API!

The opinions expressed herein are my own and do not represent those of my employer or any other third-party views in any way.

Copyright © 2024 Alexandre Nédélec. All rights reserved.