[{"data":1,"prerenderedAt":503},["Reactive",2],{"navigation":3,"/posts/w02-2022-tips-learned-this-week":204,"/posts/w02-2022-tips-learned-this-week-surround":476},[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":103,"_dir":205,"_draft":206,"_partial":206,"_locale":207,"title":102,"description":208,"lead":209,"date":210,"image":211,"badge":213,"tags":215,"body":222,"_type":471,"_id":472,"_source":473,"_file":474,"_extension":475},"posts",false,"","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.","Tooling around .NET, Azure, Github and VS Code.","2022-01-14T00:00:00.000Z",{"src":212},"/images/surface_1.jpg",{"label":214},"Tips",[216,217,218,219,220,221],"tips learned this week",".NET","Azure CLI","GitHub","vscode","tooling",{"type":223,"children":224,"toc":463},"root",[225,244,251,265,277,282,294,307,337,346,352,366,379,392,401,415,421,435,444,458],{"type":226,"tag":227,"props":228,"children":229},"element","p",{},[230,233,242],{"type":231,"value":232},"text","This is my first article of the series ",{"type":226,"tag":234,"props":235,"children":239},"a",{"href":236,"rel":237},"https://www.techwatching.dev/tags/tips-learned-this-week/",[238],"nofollow",[240],{"type":231,"value":241},"Tips I learned this week",{"type":231,"value":243}," for 2022 🚀! And today we are going to see some tips about .NET, Azure, GitHub, and VS Code.",{"type":226,"tag":245,"props":246,"children":248},"h2",{"id":247},"net-tip-of-the-week-changing-the-net-cli-language",[249],{"type":231,"value":250},".NET tip of the week: changing the .NET CLI language",{"type":226,"tag":227,"props":252,"children":253},{},[254,256,263],{"type":231,"value":255},"Did you know that you could change the language of the .NET CLI to the one you find most appropriate? By default, the dotnet CLI messages you see when running a dotnet program are your language OS (French in my case). However, by setting the \"DOTNET_CLI_UI_LANGUAGE\" variable environment to ",{"type":226,"tag":257,"props":258,"children":260},"code",{"className":259},[],[261],{"type":231,"value":262},"en",{"type":231,"value":264}," for instance I can change it to English.",{"type":226,"tag":227,"props":266,"children":267},{},[268],{"type":226,"tag":269,"props":270,"children":276},"img",{"alt":271,"className":272,"src":275},".NET CLI language change in terminal.",[273,274],"rounded-lg","mx-auto","/posts/images/w022022tips_dotnet_cli.png",[],{"type":226,"tag":227,"props":278,"children":279},{},[280],{"type":231,"value":281},"Why is it useful? Let's imagine I have an issue with a dotnet CLI command and that I want to get some help from the community by posting a question to a Q&A website with a screenshot of my error. If all the messages are in French I will probably not get many answers whereas if it's in English everyone will be able to understand what my commands are doing. There is also the fact that sometimes French accents and special characters are not well displayed by some terminals.",{"type":226,"tag":245,"props":283,"children":285},{"id":284},"the-azure-tip-you-did-not-know-about-simplify-your-azure-cli-configuration-with-azure-init",[286,288],{"type":231,"value":287},"The Azure tip you did not know about: simplify your Azure CLI configuration with ",{"type":226,"tag":257,"props":289,"children":291},{"className":290},[],[292],{"type":231,"value":293},"azure init",{"type":226,"tag":227,"props":295,"children":296},{},[297,299,305],{"type":231,"value":298},"I don't know if you use a lot Azure CLI but it's a very nice tool! Each time I use Azure CLI, I think \"it's awesome 🤩 I should use it more often instead of using Azure Portal\". I even wrote a post about that 2 years ago: \"",{"type":226,"tag":234,"props":300,"children":303},{"href":301,"rel":302},"https://www.techwatching.dev/posts/welcome-azure-cli",[238],[304],{"type":231,"value":15},{"type":231,"value":306},"\".",{"type":226,"tag":227,"props":308,"children":309},{},[310,312,318,320,327,329,335],{"type":231,"value":311},"However, if you want to configure your Azure CLI, it can be sometimes a bit boring and slow to configure it using the ",{"type":226,"tag":257,"props":313,"children":315},{"className":314},[],[316],{"type":231,"value":317},"az config",{"type":231,"value":319}," command. That is why Microsoft has ",{"type":226,"tag":234,"props":321,"children":324},{"href":322,"rel":323},"https://techcommunity.microsoft.com/t5/azure-tools-blog/streamline-configuring-azure-cli-with-az-init/ba-p/3051810",[238],[325],{"type":231,"value":326},"released in preview",{"type":231,"value":328}," an Azure CLI extension called ",{"type":226,"tag":257,"props":330,"children":332},{"className":331},[],[333],{"type":231,"value":334},"az init",{"type":231,"value":336}," to simplify this configuration. For example you can quickly configure the output of the commands or the syntax highlighting, things like that.",{"type":226,"tag":227,"props":338,"children":339},{},[340],{"type":226,"tag":269,"props":341,"children":345},{"alt":342,"className":343,"src":344},"azure init command output.",[273,274],"/posts/images/w022022tips_az_init.png",[],{"type":226,"tag":245,"props":347,"children":349},{"id":348},"tool-of-the-week-github-code-search",[350],{"type":231,"value":351},"Tool of the week: GitHub Code Search",{"type":226,"tag":227,"props":353,"children":354},{},[355,357,364],{"type":231,"value":356},"Have you ever wished you could easily search code on GitHub in multiple repositories without cloning anything? That is now possible with ",{"type":226,"tag":234,"props":358,"children":361},{"href":359,"rel":360},"https://cs.github.com/",[238],[362],{"type":231,"value":363},"GitHub Code Search",{"type":231,"value":365},". It is still in preview but looks promising! You have access to nice filters to find exactly the code you are looking for, and once you get it you can navigate in and across files.",{"type":226,"tag":227,"props":367,"children":368},{},[369,371,377],{"type":231,"value":370},"For a long time, I have kept a bookmark to the \"",{"type":226,"tag":234,"props":372,"children":375},{"href":373,"rel":374},"https://source.dot.net/",[238],[376],{"type":231,"value":373},{"type":231,"value":378},"\" website for the times when I needed to understand how something was implemented in the .NET Core framework. But with GitHub Code Search I think I don't need it anymore. .NET Core is open source and all the source code is on GitHub so I can quickly find everything I need just by searching it on GitHub.",{"type":226,"tag":227,"props":380,"children":381},{},[382,384,390],{"type":231,"value":383},"For instance, let's say I don't remember exactly what configuration is injected by default in a dotnet project when you use the ",{"type":226,"tag":257,"props":385,"children":387},{"className":386},[],[388],{"type":231,"value":389},"Host.CreateDefaultBuilder",{"type":231,"value":391}," method. I will scope my search to dotnet organization repositories and a few keystrokes later, I can see all the configuration providers used to load some default configuration in a project.",{"type":226,"tag":227,"props":393,"children":394},{},[395],{"type":226,"tag":269,"props":396,"children":400},{"alt":397,"className":398,"src":399},"GitHub search usage.",[273,274],"/posts/images/w022022tips_githu_cs.gif",[],{"type":226,"tag":227,"props":402,"children":403},{},[404,406,413],{"type":231,"value":405},"You can read more about GitHub Code Search on ",{"type":226,"tag":234,"props":407,"children":410},{"href":408,"rel":409},"https://github.blog/2021-12-08-improving-github-code-search/",[238],[411],{"type":231,"value":412},"GitHub's blog",{"type":231,"value":414},".",{"type":226,"tag":245,"props":416,"children":418},{"id":417},"the-vs-code-extension-you-should-try-i18n-ally",[419],{"type":231,"value":420},"The VS Code extension you should try: i18n ally",{"type":226,"tag":227,"props":422,"children":423},{},[424,426,433],{"type":231,"value":425},"When you are developing an application that supports several languages, it can quickly become annoying to go in every translation file when you need to check or modify a translation. If you are developing your application using VS Code, you probably should check out the extension ",{"type":226,"tag":234,"props":427,"children":430},{"href":428,"rel":429},"https://github.com/lokalise/i18n-ally",[238],[431],{"type":231,"value":432},"i18n ally",{"type":231,"value":434}," because it will save you a lot of time.",{"type":226,"tag":227,"props":436,"children":437},{},[438],{"type":226,"tag":269,"props":439,"children":443},{"alt":440,"className":441,"src":442},"i18n ally extension in vscode.",[273,274],"/posts/images/w222021tips_i18n_ally.png",[],{"type":226,"tag":227,"props":445,"children":446},{},[447,449,456],{"type":231,"value":448},"It is very handy and I like the fact the extension support lots of frameworks like Vue.js, Angular, React, Svelte, and Flutter (you can find the complete list of supported frameworks ",{"type":226,"tag":234,"props":450,"children":453},{"href":451,"rel":452},"https://github.com/lokalise/i18n-ally/wiki/Supported-Frameworks",[238],[454],{"type":231,"value":455},"here",{"type":231,"value":457},"). My only regret with this extension is not to have heard about it sooner.",{"type":226,"tag":227,"props":459,"children":460},{},[461],{"type":231,"value":462},"And that's it for this week, happy learning!",{"title":207,"searchDepth":464,"depth":464,"links":465},2,[466,467,469,470],{"id":247,"depth":464,"text":250},{"id":284,"depth":464,"text":468},"The Azure tip you did not know about: simplify your Azure CLI configuration with azure init",{"id":348,"depth":464,"text":351},{"id":417,"depth":464,"text":420},"markdown","content:1.posts:32.w02-2022-tips-learned-this-week.md","content","1.posts/32.w02-2022-tips-learned-this-week.md","md",[477,490],{"_path":106,"_dir":205,"_draft":206,"_partial":206,"_locale":207,"title":105,"description":478,"lead":479,"date":480,"image":481,"badge":482,"tags":483,"_type":471,"_id":488,"_source":473,"_file":489,"_extension":475},".NET configuration providers, Vite vscode extension, Azure DevOps pull request templates, and degit.","Tooling around .NET, Azure DevOps, and VS Code.","2022-01-24T00:00:00.000Z",{"src":212},{"label":214},[216,217,484,485,220,486,487,221],"Configuration","Azure DevOps","Vite","git","content:1.posts:33.w03-2022-tips-learned-this-week.md","1.posts/33.w03-2022-tips-learned-this-week.md",{"_path":100,"_dir":205,"_draft":206,"_partial":206,"_locale":207,"title":99,"description":491,"lead":492,"date":493,"badge":494,"image":496,"tags":498,"_type":471,"_id":501,"_source":473,"_file":502,"_extension":475},"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.","Hot-reloading your cloud infrastructure.","2022-01-02T00:00:00.000Z",{"label":495},"DevOps",{"src":497},"/images/cloud-lighthouse_1.jpg",[499,500],"Pulumi","IaC","content:1.posts:31.pulumi-watch.md","1.posts/31.pulumi-watch.md",1716749601590]