[{"data":1,"prerenderedAt":599},["Reactive",2],{"navigation":3,"aAII9Cz3yR":204,"tags-Azure IoT":397},[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",[205,207,209,211,214,217,220,223,226,229,231,234,237,240,242,244,247,250,253,255,258,261,264,267,270,273,276,279,282,285,287,289,292,294,297,300,303,305,308,310,313,316,319,322,325,327,329,332,335,338,341,344,347,350,353,356,359,361,363,366,369,372,375,377,380,383,385,388,391,394],[206,206],"tooling",[208,208],"vscode",[210,210],"rest",[212,213],"http","HTTP",[215,216],"razor","Razor",[218,219],"xamarin","Xamarin",[221,222],"templating","Templating",[224,225],"azure-cli","Azure CLI",[227,228],"azure","Azure",[230,230],"shell",[232,233],"github","GitHub",[235,236],"asp-net-core","ASP.NET Core",[238,239],"net",".NET",[241,241],"git",[243,243],"nushell",[245,246],"microsoft-teams","Microsoft Teams",[248,249],"powershell","PowerShell",[251,252],"azure-active-directory","Azure Active Directory",[254,254],"learning",[256,257],"azure-functions","Azure Functions",[259,260],"azure-key-vault","Azure Key Vault",[262,263],"configuration","Configuration",[265,266],"devops","DevOps",[268,269],"it","IT",[271,272],"tips-learned-this-week","tips learned this week",[274,275],"windows-terminal","Windows Terminal",[277,278],"azure-pipelines","Azure Pipelines",[280,281],"application-insights","Application Insights",[283,284],"azure-iot","Azure IoT",[286,286],"records",[288,288],"refit",[290,291],"development-box-setup","development box setup",[293,293],"winget",[295,296],"package-manager","package manager",[298,299],"azure-sql-database","Azure SQL Database",[301,302],"azure-sdk","Azure SDK",[304,304],"wingetcreate",[306,307],"github-actions","GitHub Actions",[309,309],"jq",[311,312],"pulumi","Pulumi",[314,315],"iac","IaC",[317,318],"azure-storage","Azure Storage",[320,321],"azure-signalr","Azure SignalR",[323,324],"visio","Visio",[326,326],"csharp",[328,328],"jest",[330,331],"statiq","Statiq",[333,334],"open-source","open source",[336,337],"visual-studio","Visual Studio",[339,340],"vue-js","Vue.js",[342,343],"azure-devops","Azure DevOps",[345,346],"vite","Vite",[348,349],"code-analysis","Code analysis",[351,352],"diagram","Diagram",[354,355],"terraform","Terraform",[357,358],"typescript","TypeScript",[360,360],"thoughts",[362,362],"pnpm",[364,365],"nuke","Nuke",[367,368],"pipelines","Pipelines",[370,371],"cicd","CI/CD",[373,374],"openid-connect","OpenID Connect",[376,376],"security",[378,379],"github-cli","GitHub CLI",[381,382],"microsoft-entra-id","Microsoft Entra ID",[384,384],"advent",[386,387],"finops","FinOps",[389,390],"anglesharp","AngleSharp",[392,393],"oauth2","OAuth2",[395,396],"azure-ad-b2c","Azure AD B2C",[398],{"_path":52,"_dir":399,"_draft":400,"_partial":400,"_locale":401,"title":51,"description":402,"lead":403,"date":404,"image":405,"badge":407,"tags":409,"body":410,"_type":594,"_id":595,"_source":596,"_file":597,"_extension":598},"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":406},"/images/surface_1.jpg",{"label":408},"Tips",[272,208,284,228],{"type":411,"children":412,"toc":589},"root",[413,430,437,453,473,485,501,507,512,524,533,538,547,552,561,575,584],{"type":414,"tag":415,"props":416,"children":417},"element","p",{},[418,421,428],{"type":419,"value":420},"text","This week I learned a few things related to vscode and especially about the ",{"type":414,"tag":422,"props":423,"children":425},"code",{"className":424},[],[426],{"type":419,"value":427},"Azure IoT Hub",{"type":419,"value":429}," vscode extension.",{"type":414,"tag":431,"props":432,"children":434},"h2",{"id":433},"accessing-azure-resources-in-vscode-from-a-specific-tenant",[435],{"type":419,"value":436},"Accessing Azure resources in vscode from a specific tenant.",{"type":414,"tag":415,"props":438,"children":439},{},[440,442,451],{"type":419,"value":441},"There are a lot of vscode extensions (like the ones in ",{"type":414,"tag":443,"props":444,"children":448},"a",{"href":445,"rel":446},"https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack",[447],"nofollow",[449],{"type":419,"value":450},"this extension pack",{"type":419,"value":452},") that allow you to access and manipulate your Azure resources from Visual Studio Code.",{"type":414,"tag":415,"props":454,"children":455},{},[456,458,471],{"type":419,"value":457},"This ",{"type":414,"tag":443,"props":459,"children":462},{"href":460,"rel":461},"https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account",[447],[463,465],{"type":419,"value":464},"specific extension ",{"type":414,"tag":422,"props":466,"children":468},{"className":467},[],[469],{"type":419,"value":470},"Azure Account",{"type":419,"value":472}," 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":414,"tag":415,"props":474,"children":475},{},[476],{"type":414,"tag":477,"props":478,"children":484},"img",{"alt":479,"className":480,"src":483},"Azure tenant settings in vscode.",[481,482],"rounded-lg","mx-auto","/posts/images/w142021tips_vscode_1.png",[],{"type":414,"tag":486,"props":487,"children":489},"callout",{"icon":488},"i-fluent-emoji-flat-pushpin",[490],{"type":414,"tag":415,"props":491,"children":492},{},[493,495],{"type":419,"value":494},"If you like to update the settings in JSON mode the key to use is ",{"type":414,"tag":422,"props":496,"children":498},{"className":497},[],[499],{"type":419,"value":500},"azure.tenant",{"type":414,"tag":431,"props":502,"children":504},{"id":503},"azure-iot-hub-vs-code-extension-is-awesome",[505],{"type":419,"value":506},"Azure IoT Hub vs code extension is awesome.",{"type":414,"tag":415,"props":508,"children":509},{},[510],{"type":419,"value":511},"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":414,"tag":415,"props":513,"children":514},{},[515,517,522],{"type":419,"value":516},"The Azure IoT Hub extension adds an ",{"type":414,"tag":422,"props":518,"children":520},{"className":519},[],[521],{"type":419,"value":427},{"type":419,"value":523}," view in the Explorer where you can see the devices of the IoT Hub you selected and can do some actions on them.",{"type":414,"tag":415,"props":525,"children":526},{},[527],{"type":414,"tag":477,"props":528,"children":532},{"alt":529,"className":530,"src":531},"Azure IoT Hub view in vscode.",[481,482],"/posts/images/w142021tips_vscode_2.png",[],{"type":414,"tag":415,"props":534,"children":535},{},[536],{"type":419,"value":537},"There are also a lot of commands you can use to interact with an IoT Hub and its devices.",{"type":414,"tag":415,"props":539,"children":540},{},[541],{"type":414,"tag":477,"props":542,"children":546},{"alt":543,"className":544,"src":545},"Azure IoT Hub commands in vscode command palette.",[481,482],"/posts/images/w142021tips_vscode_3.png",[],{"type":414,"tag":415,"props":548,"children":549},{},[550],{"type":419,"value":551},"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":414,"tag":415,"props":553,"children":554},{},[555],{"type":414,"tag":477,"props":556,"children":560},{"alt":557,"className":558,"src":559},"Device twin json in vscode.",[481,482],"/posts/images/w142021tips_vscode_4.png",[],{"type":414,"tag":415,"props":562,"children":563},{},[564,566,573],{"type":419,"value":565},"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":414,"tag":443,"props":567,"children":570},{"href":568,"rel":569},"https://github.com/Azure/azure-iot-explorer/releases",[447],[571],{"type":419,"value":572},"Azure IoT Explorer",{"type":419,"value":574}," which is more user-friendly thanks to its simple UI but does not have all the features.",{"type":414,"tag":415,"props":576,"children":577},{},[578],{"type":414,"tag":477,"props":579,"children":583},{"alt":580,"className":581,"src":582},"Device twin json in Azure Iot Explorer.",[481,482],"/posts/images/w142021tips_iotexplorer_1.png",[],{"type":414,"tag":415,"props":585,"children":586},{},[587],{"type":419,"value":588},"And that's it for this week, happy learning!",{"title":401,"searchDepth":590,"depth":590,"links":591},2,[592,593],{"id":433,"depth":590,"text":436},{"id":503,"depth":590,"text":506},"markdown","content:1.posts:15.w14-2021-tips-learned-this-week.md","content","1.posts/15.w14-2021-tips-learned-this-week.md","md",1716749600776]