[{"data":1,"prerenderedAt":398},["Reactive",2],{"navigation":3,"tags":204},[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,211,216,221,224,228,232,237,240,242,247,249,253,258,261,264,268,273,275,277,281,285,288,292,295,300,304,308,312,314,316,318,320,324,328,330,333,335,338,340,343,345,347,349,352,356,358,360,362,365,367,369,371,375,377,381,384,386,389,391,394],{"tags":206},[207,208,209,210],"tooling","vscode","rest","HTTP",{"tags":212},[213,214,215],"Razor","Xamarin","Templating",{"tags":217},[218,219,220],"Azure CLI","Azure","shell",{"tags":222},[223,207,208],"GitHub",{"tags":225},[210,209,226,227],"ASP.NET Core",".NET",{"tags":229},[207,230,220,231],"git","nushell",{"tags":233},[234,235,236],"Microsoft Teams","PowerShell","Azure Active Directory",{"tags":238},[239],"learning",{"tags":241},[239],{"tags":243},[244,245,219,246],"Azure Functions","Azure Key Vault","Configuration",{"tags":248},[239],{"tags":250},[251,252],"DevOps","IT",{"tags":254},[255,230,207,256,257],"tips learned this week","Windows Terminal","Azure Pipelines",{"tags":259},[255,230,257,260],"Application Insights",{"tags":262},[255,208,263,219],"Azure IoT",{"tags":265},[226,210,266,209,267],"records","refit",{"tags":269},[270,271,272,207],"development box setup","winget","package manager",{"tags":274},[270,271,272,207],{"tags":276},[255,208,218,219],{"tags":278},[236,279,280,219,218,226],"Azure SQL Database","Azure SDK",{"tags":282},[271,283,272,207,231,284],"wingetcreate","GitHub Actions",{"tags":286},[235,284,287],"jq",{"tags":289},[244,290,291,236,219],"Pulumi","IaC",{"tags":293},[226,294,245,219],"configuration",{"tags":296},[255,219,297,298,299],"Azure Storage","Azure SignalR","Visio",{"tags":301},[255,208,302,303],"csharp","jest",{"tags":305},[306,227,223,284,307],"Statiq","open source",{"tags":309},[255,310,311,230],"Visual Studio","Vue.js",{"tags":313},[207,223],{"tags":315},[290,291,218,297,245,219],{"tags":317},[290,291],{"tags":319},[255,227,218,223,208,207],{"tags":321},[255,227,246,322,208,323,230,207],"Azure DevOps","Vite",{"tags":325},[255,227,326,322,327,208,207],"Code analysis","Diagram",{"tags":329},[236,279,219,227,290,291],{"tags":331},[291,290,332,251],"Terraform",{"tags":334},[255,208,230,311,310,207],{"tags":336},[255,337,230,244,207],"TypeScript",{"tags":339},[207,210,231,218,245],{"tags":341},[342],"thoughts",{"tags":344},[342],{"tags":346},[270,235,271,272,207],{"tags":348},[207,210,342,209],{"tags":350},[255,227,271,351,272,208,322,207],"pnpm",{"tags":353},[227,354,290,355,291,251,219],"Nuke","Pipelines",{"tags":357},[342,239],{"tags":359},[351,272,207],{"tags":361},[351,272,207],{"tags":363},[311,364,251],"CI/CD",{"tags":366},[351,272,207],{"tags":368},[311,364,251],{"tags":370},[351,272,207],{"tags":372},[219,223,284,373,290,291,374],"OpenID Connect","security",{"tags":376},[219,223,284,373,290,291,374,227],{"tags":378},[219,218,223,379,284,373,380],"GitHub CLI","Microsoft Entra ID",{"tags":382},[302,227,226,210,383],"advent",{"tags":385},[342,239],{"tags":387},[255,244,388,322],"FinOps",{"tags":390},[219,280,227],{"tags":392},[227,393],"AngleSharp",{"tags":395},[207,210,396,397],"OAuth2","Azure AD B2C",1716749595137]