[{"data":1,"prerenderedAt":438},["Reactive",2],{"navigation":3,"/posts/w14-2021-tips-learned-this-week":204,"/posts/w14-2021-tips-learned-this-week-surround":409},[4,192,200],{"title":5,"_path":6,"children":7,"icon":191},"Blog","/posts",[8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185,188],{"title":9,"_path":10},"Testing your API with REST Client","/posts/testing-your-api-with-rest-client",{"title":12,"_path":13},"HTML templating in Xamarin","/posts/html-templating-in-xamarin",{"title":15,"_path":16},"Goodbye Azure Portal, Welcome Azure CLI","/posts/welcome-azure-cli",{"title":18,"_path":19},"Coming across Gitpod","/posts/gitpod",{"title":21,"_path":22},"Handle token retrieval while querying an API","/posts/delegating-handler",{"title":24,"_path":25},"Clean up your local git branches.","/posts/cleaning-git-branches",{"title":27,"_path":28},"Automate configuration of Teams Tab SSO with PowerShell.","/posts/teams-sso-powershell",{"title":30,"_path":31},"How to do a technology watch? - Part 1","/posts/technology-watch-part1",{"title":33,"_path":34},"How to do a technology watch? - Part 2","/posts/technology-watch-part2",{"title":36,"_path":37},"You almost no longer need Key Vault references for Azure Functions.","/posts/azure-functions-custom-configuration",{"title":39,"_path":40},"How to do a technology watch? - Part 3","/posts/technology-watch-part3",{"title":42,"_path":43},"Forget DevOps, the future is already here!","/posts/devops-future",{"title":45,"_path":46},"Week 9, 2021 - Tips I learned this week","/posts/w09-2021-tips-learned-this-week",{"title":48,"_path":49},"Week 12, 2021 - Tips I learned this week","/posts/w12-2021-tips-learned-this-week",{"title":51,"_path":52},"Week 14, 2021 - Tips I learned this week","/posts/w14-2021-tips-learned-this-week",{"title":54,"_path":55},"Once upon a time in .NET","/posts/once-upon-a-time-in-dotnet",{"title":57,"_path":58},"Install your applications with winget","/posts/winget-import",{"title":60,"_path":61},"Customize your applications when installing them with winget","/posts/winget-override",{"title":63,"_path":64},"Week 22, 2021 - Tips I learned this week","/posts/w22-2021-tips-learned-this-week",{"title":66,"_path":67},"How to connect to an Azure SQL Database from C# using Azure AD","/posts/sqlclient-active-directory-authent",{"title":69,"_path":70},"Producing packages for Windows Package Manager","/posts/wingetcreate",{"title":72,"_path":73},"4 tips about GitHub Actions environment variables and contexts","/posts/github-actions-var-and-context",{"title":75,"_path":76},"AzureWebJobsStorage, the secret you don't need in your Function App.","/posts/azure-functions-without-azurewebjobsstorage",{"title":78,"_path":79},"ASP.NET Core - Lost in configuration","/posts/lost-in-configuration",{"title":81,"_path":82},"Week 39, 2021 - Tips I learned this week","/posts/w39-2021-tips-learned-this-week",{"title":84,"_path":85},"Week 41, 2021 - Tips I learned this week","/posts/w41-2021-tips-learned-this-week",{"title":87,"_path":88},"Migrating and open-sourcing my blog","/posts/migrating-blog",{"title":90,"_path":91},"Week 45, 2021 - Tips I learned this week","/posts/w45-2021-tips-learned-this-week",{"title":93,"_path":94},"Organize your GitHub stars with Astral","/posts/astral",{"title":96,"_path":97},"Pulumi with an Azure Blob Storage backend","/posts/pulumi-azure-backend",{"title":99,"_path":100},"IaC Hot Reload with Pulumi Watch","/posts/pulumi-watch",{"title":102,"_path":103},"Week 2, 2022 - Tips I learned this week","/posts/w02-2022-tips-learned-this-week",{"title":105,"_path":106},"Week 3, 2022 - Tips I learned this week","/posts/w03-2022-tips-learned-this-week",{"title":108,"_path":109},"Week 5, 2022 - Tips I learned this week","/posts/w05-2022-tips-learned-this-week",{"title":111,"_path":112},"How to provision an Azure SQL Database with Active Directory authentication","/posts/sqldatabase-active-directory-authent",{"title":114,"_path":115},"Why will I choose Pulumi over Terraform for my next project?","/posts/pulumi-vs-terraform",{"title":117,"_path":118},"Week 19, 2022 - Tips I learned this week","/posts/w19-2022-tips-learned-this-week",{"title":120,"_path":121},"Week 20, 2022 - Tips I learned this week","/posts/w20-2022-tips-learned-this-week",{"title":123,"_path":124},"Keeping secrets secure when using API Clients","/posts/http-clients-secrets",{"title":126,"_path":127},"What made me want to be a developer?","/posts/be-a-developer",{"title":129,"_path":130},"What can we do when stuck with a programming problem?","/posts/get-unstuck",{"title":132,"_path":133},"How did I automate the setup of my developer Windows laptop?","/posts/automate-developer-machine",{"title":135,"_path":136},"Discussion about API clients","/posts/http-clients",{"title":138,"_path":139},"Week 46, 2022 - Tips I learned this week","/posts/w46-2022-tips-learned-this-week",{"title":141,"_path":142},"When Pulumi met Nuke: a .NET love story","/posts/when-pulumi-met-nuke",{"title":144,"_path":145},"A year of learning and sharing - Dev Retro 2022","/posts/2022-retro",{"title":147,"_path":148},"Perform Dynamic Execution of an npm Package","/posts/pnpm-dlx",{"title":150,"_path":151},"Manage multiple Node.js versions","/posts/pnpm-env",{"title":153,"_path":154},"Introducing the Vue.js CI/CD series","/posts/vuecicd-introduction",{"title":156,"_path":157},"Execute commands using your project dependencies","/posts/pnpm-exec",{"title":159,"_path":160},"Vue.js CI/CD: Continuous Integration","/posts/vuecicd-ci",{"title":162,"_path":163},"Who is using pnpm?","/posts/pnpm-who-is-using",{"title":165,"_path":166},"Create an Azure-Ready GitHub Repository using Pulumi","/posts/azure-ready-github-repository",{"title":168,"_path":169},"Deploying to Azure from Azure DevOps without secrets","/posts/ado-workload-identity-federation",{"title":171,"_path":172},"Effortlessly Configure GitHub Repositories for Azure Deployment via OIDC","/posts/scripting-azure-ready-github-repository",{"title":174,"_path":175},"Playing with the .NET 8 Web API template","/posts/playing-with-dotnet8",{"title":177,"_path":178},"Another year of sharing and learning - Dev Retro 2023","/posts/2023-retro",{"title":180,"_path":181},"Week 4, 2024 - Tips I learned this week","/posts/w04-2024-tips-learned-this-week",{"title":183,"_path":184},"Using dependency injection with Azure .NET SDK","/posts/azure-sdk-di",{"title":186,"_path":187},"Having Fun With IT Event Calendars","/posts/it-event-calendars",{"title":189,"_path":190},"Call your Azure AD B2C protected API with authenticated HTTP requests from your JetBrains IDE","/posts/http-clients-oauth2","i-heroicons-newspaper",{"title":193,"_path":194,"children":195,"icon":199},"Goodies","/goodies",[196],{"title":197,"_path":198},"My Git Cheat Sheet","/goodies/gitcheatsheet","i-heroicons-gift-solid",{"title":201,"_path":202,"icon":203},"About","/about","i-heroicons-user-circle-solid",{"_path":52,"_dir":205,"_draft":206,"_partial":206,"_locale":207,"title":51,"description":208,"lead":209,"date":210,"image":211,"badge":213,"tags":215,"body":220,"_type":404,"_id":405,"_source":406,"_file":407,"_extension":408},"posts",false,"","This week I learned a few things related to vscode and especially about the Azure IoT Hub vscode extension.","Azure tenant in vs code and Azure IoT Hub vs code extension.","2021-04-10T00:00:00.000Z",{"src":212},"/images/surface_1.jpg",{"label":214},"Tips",[216,217,218,219],"tips learned this week","vscode","Azure IoT","Azure",{"type":221,"children":222,"toc":399},"root",[223,240,247,263,283,295,311,317,322,334,343,348,357,362,371,385,394],{"type":224,"tag":225,"props":226,"children":227},"element","p",{},[228,231,238],{"type":229,"value":230},"text","This week I learned a few things related to vscode and especially about the ",{"type":224,"tag":232,"props":233,"children":235},"code",{"className":234},[],[236],{"type":229,"value":237},"Azure IoT Hub",{"type":229,"value":239}," vscode extension.",{"type":224,"tag":241,"props":242,"children":244},"h2",{"id":243},"accessing-azure-resources-in-vscode-from-a-specific-tenant",[245],{"type":229,"value":246},"Accessing Azure resources in vscode from a specific tenant.",{"type":224,"tag":225,"props":248,"children":249},{},[250,252,261],{"type":229,"value":251},"There are a lot of vscode extensions (like the ones in ",{"type":224,"tag":253,"props":254,"children":258},"a",{"href":255,"rel":256},"https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack",[257],"nofollow",[259],{"type":229,"value":260},"this extension pack",{"type":229,"value":262},") that allow you to access and manipulate your Azure resources from Visual Studio Code.",{"type":224,"tag":225,"props":264,"children":265},{},[266,268,281],{"type":229,"value":267},"This ",{"type":224,"tag":253,"props":269,"children":272},{"href":270,"rel":271},"https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account",[257],[273,275],{"type":229,"value":274},"specific extension ",{"type":224,"tag":232,"props":276,"children":278},{"className":277},[],[279],{"type":229,"value":280},"Azure Account",{"type":229,"value":282}," makes it easy for you to sign in to your Azure account and select the subscription you want to use. But what if you are working in a consulting company that works for different companies? How do you indicate the tenant of the customer to sign in to? Well, the answer is quite simple, the extension exposes a setting in vscode to specify a specific tenant to use.",{"type":224,"tag":225,"props":284,"children":285},{},[286],{"type":224,"tag":287,"props":288,"children":294},"img",{"alt":289,"className":290,"src":293},"Azure tenant settings in vscode.",[291,292],"rounded-lg","mx-auto","/posts/images/w142021tips_vscode_1.png",[],{"type":224,"tag":296,"props":297,"children":299},"callout",{"icon":298},"i-fluent-emoji-flat-pushpin",[300],{"type":224,"tag":225,"props":301,"children":302},{},[303,305],{"type":229,"value":304},"If you like to update the settings in JSON mode the key to use is ",{"type":224,"tag":232,"props":306,"children":308},{"className":307},[],[309],{"type":229,"value":310},"azure.tenant",{"type":224,"tag":241,"props":312,"children":314},{"id":313},"azure-iot-hub-vs-code-extension-is-awesome",[315],{"type":229,"value":316},"Azure IoT Hub vs code extension is awesome.",{"type":224,"tag":225,"props":318,"children":319},{},[320],{"type":229,"value":321},"I think everything is in the title. I knew about this extension before this week but I did not take the time to really use it. However this week it helped me a lot for my sprint demo where I needed to show new functionalities I implemented on an IoT backend: modify device twin tags in the IoT Hub and send some messages to an IoT device under certain conditions.",{"type":224,"tag":225,"props":323,"children":324},{},[325,327,332],{"type":229,"value":326},"The Azure IoT Hub extension adds an ",{"type":224,"tag":232,"props":328,"children":330},{"className":329},[],[331],{"type":229,"value":237},{"type":229,"value":333}," view in the Explorer where you can see the devices of the IoT Hub you selected and can do some actions on them.",{"type":224,"tag":225,"props":335,"children":336},{},[337],{"type":224,"tag":287,"props":338,"children":342},{"alt":339,"className":340,"src":341},"Azure IoT Hub view in vscode.",[291,292],"/posts/images/w142021tips_vscode_2.png",[],{"type":224,"tag":225,"props":344,"children":345},{},[346],{"type":229,"value":347},"There are also a lot of commands you can use to interact with an IoT Hub and its devices.",{"type":224,"tag":225,"props":349,"children":350},{},[351],{"type":224,"tag":287,"props":352,"children":356},{"alt":353,"className":354,"src":355},"Azure IoT Hub commands in vscode command palette.",[291,292],"/posts/images/w142021tips_vscode_3.png",[],{"type":224,"tag":225,"props":358,"children":359},{},[360],{"type":229,"value":361},"You can do pretty much anything you want from sending C2D / D2C messages to monitoring C2D / D2C messages. I found it quite nice to be able to directly visualize and edit a device twin as a JSON  document in vs code.",{"type":224,"tag":225,"props":363,"children":364},{},[365],{"type":224,"tag":287,"props":366,"children":370},{"alt":367,"className":368,"src":369},"Device twin json in vscode.",[291,292],"/posts/images/w142021tips_vscode_4.png",[],{"type":224,"tag":225,"props":372,"children":373},{},[374,376,383],{"type":229,"value":375},"To quickly test something related to IoT Hub, the Azure IoT Hub extension is a very useful tool. An interesting alternative to this tool is the ",{"type":224,"tag":253,"props":377,"children":380},{"href":378,"rel":379},"https://github.com/Azure/azure-iot-explorer/releases",[257],[381],{"type":229,"value":382},"Azure IoT Explorer",{"type":229,"value":384}," which is more user-friendly thanks to its simple UI but does not have all the features.",{"type":224,"tag":225,"props":386,"children":387},{},[388],{"type":224,"tag":287,"props":389,"children":393},{"alt":390,"className":391,"src":392},"Device twin json in Azure Iot Explorer.",[291,292],"/posts/images/w142021tips_iotexplorer_1.png",[],{"type":224,"tag":225,"props":395,"children":396},{},[397],{"type":229,"value":398},"And that's it for this week, happy learning!",{"title":207,"searchDepth":400,"depth":400,"links":401},2,[402,403],{"id":243,"depth":400,"text":246},{"id":313,"depth":400,"text":316},"markdown","content:1.posts:15.w14-2021-tips-learned-this-week.md","content","1.posts/15.w14-2021-tips-learned-this-week.md","md",[410,426],{"_path":55,"_dir":205,"_draft":206,"_partial":206,"_locale":207,"title":54,"description":411,"lead":412,"date":413,"image":414,"badge":416,"tags":418,"_type":404,"_id":424,"_source":406,"_file":425,"_extension":408},"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.","A story about records, HTTP message handlers, HTTP client extensions...","2021-04-24T00:00:00.000Z",{"src":415},"/images/western_1.jpg",{"label":417},"Development",[419,420,421,422,423],"ASP.NET Core","HTTP","records","rest","refit","content:1.posts:16.once-upon-a-time-in-dotnet.md","1.posts/16.once-upon-a-time-in-dotnet.md",{"_path":49,"_dir":205,"_draft":206,"_partial":206,"_locale":207,"title":48,"description":427,"lead":428,"date":429,"image":430,"badge":431,"tags":432,"_type":404,"_id":436,"_source":406,"_file":437,"_extension":408},"This week I learned a few things related to versioning an application","Version in git tag with Azure Pipelines and in application insight logs.","2021-03-26T00:00:00.000Z",{"src":212},{"label":214},[216,433,434,435],"git","Azure Pipelines","Application Insights","content:1.posts:14.w12-2021-tips-learned-this-week.md","1.posts/14.w12-2021-tips-learned-this-week.md",1716749601659]