# Sanjay Bhagia > Personal site and blog of Sanjay Bhagia — a software engineer in Sydney writing about .NET, Azure, DevOps, Pulumi and technology in general since 2012. Full post content for language models is available at /llms-full.txt. Every blog post, review and page below also has a plain-markdown version: append `.md` to its path (e.g. /blog/some-post.md, /about.md). ## Blog posts - [We all should be bit more like dogs](https://sanjaybhagia.com/blog/we-all-should-be-bit-more-like-dogs): We can learn valuable lesson on life from dogs. They are calm, satisfied with very little, don't overthink, masters of solitude, quick to forgive, unmatched excitement, make you move, what you see is what you get. - [Handling Order Processing with Azure API Management and Service Bus Topics](https://sanjaybhagia.com/blog/handling-order-processing-with-azure-api-servicebus-topics): Learn how to securely send messages to Azure Service Bus Topics directly from Azure API Management using the policies. - [Hands-on with Katonic.ai's Generative AI Platform](https://sanjaybhagia.com/blog/hands-on-with-katonic-generative-ai): Exploring Katonic.ai's Generative AI Platform - [Deploying IronPdf to Azure Functions via CI/CD using Azure DevOps](https://sanjaybhagia.com/blog/cicd-pipeline-irondpf-azure-functions): Guide to setup a CI/CD Pipeline (YAML) in Azure DevOps for running IronPdf in Azure Functions. - [The best investment I made in 2022](https://sanjaybhagia.com/blog/the-best-investment-i-made-in-2022): Find out how a simple $15 bullet journal transformed my life in 2022 and why you should give it a try. - [Pulumi - State Management](https://sanjaybhagia.com/blog/pulumi-state-management): How Pulumi tracks infrastructure state, and a walkthrough of replacing the hosted backend with your own Azure Blob Storage container. - [Pulumi - Secrets Management](https://sanjaybhagia.com/blog/pulumi-secrets-management): How Pulumi encrypts secrets in stack configuration, and using the passphrase and Azure Key Vault providers to manage your own encryption keys. - [Pulumi - Configuration Management](https://sanjaybhagia.com/blog/pulumi-configuration-management): How Pulumi's per-stack configuration works: setting and reading values via the CLI and C# code, namespaces, and structured config with --path. - [Pulumi - How it works?](https://sanjaybhagia.com/blog/pulumi-how-it-works): A look under the hood of Pulumi: the engine, language hosts, resource providers, stacks and state, plus a hello world program targeting Azure. - [Pulumi - What and Why?](https://sanjaybhagia.com/blog/pulumi-what-and-why): An introduction to Pulumi and why writing infrastructure as code in a real programming language beats DSLs like ARM templates and HCL. - [Passing AZ-220: Microsoft Azure IoT Developer Exam](https://sanjaybhagia.com/blog/passing-azure-iot-220-exam): How I prepared for and passed the AZ-220 Azure IoT Developer exam, with study material, labs, online proctoring tips and my impressions. - [Capture your favourite quotes from physical books - Part 2](https://sanjaybhagia.com/blog/capture-quotes-from-books-2): Part 2: Writing an Azure Function that appends OCR-detected quotes from the Logic App to a text file in blob storage. - [Capture your favourite quotes from physical books](https://sanjaybhagia.com/blog/capture-quotes-from-books): Building an Azure Logic App that picks up book photos from OneDrive and extracts the quotes with the Computer Vision OCR API. - [Migrating from WordPress to Wyam](https://sanjaybhagia.com/blog/migrating-blog-from-wordpress-to-wyam): Notes on moving my blog from WordPress to the Wyam static site generator, hosted on Netlify with an Azure DevOps pipeline for deployment. - [Microsoft OpenHack DevOps - Stockholm](https://sanjaybhagia.com/blog/microsoft-openhack-devops-stockholm): My experience at Microsoft's three-day OpenHack DevOps hackathon in Stockholm, solving Azure DevOps and Kubernetes challenges hands-on. - [Using Postman for Integration Tests](https://sanjaybhagia.com/blog/using-postman-for-integration-tests): How I use Postman collections, tests and environment variables to run integration tests against my APIs before every release. - [Accessing WCF Service via Azure Service Bus Relay with .NET Core](https://sanjaybhagia.com/blog/accessing-wcf-service-via-azure-service-bus-relay-with-net-core): Calling an on-premises WCF service from a .NET Core web app through Azure Service Bus Relay by crafting the SOAP request and relay token by hand. - [Accessing Azure Analysis Services Models using .NET Core](https://sanjaybhagia.com/blog/accessing-azure-analysis-services-models-using-net-core): Querying an Azure Analysis Services model from .NET Core using ADOMD.NET with a service principal and token-based authentication via ADAL.NET. - [Are you keeping your secrets secret?](https://sanjaybhagia.com/blog/are-you-keeping-your-secrets-secret): Two versions of an Azure web app reading from blob storage: one with the connection string in app settings, one keeping it safe in Key Vault. - [Identifying the owner of personal sites in SharePoint](https://sanjaybhagia.com/blog/identifying-the-owner-of-personal-sites-in-sharepoint): How to find the owner of a SharePoint personal site by mapping the PersonalSpace profile property to search and caching the result in the property bag. - [Deleting Managed Metadata Fields via PowerShell](https://sanjaybhagia.com/blog/deleting-managed-metadata-fields-via-powershell): PowerShell script to remove the hidden Note fields SharePoint leaves behind when deleting taxonomy fields, fixing duplicate field name errors. - [Using HttpHandler to deal with cross-domain requests from AngularJS app for SharePoint on-premises](https://sanjaybhagia.com/blog/using-httphandler-to-deal-with-cross-domain-requests-from-angularjs-app-for-sharepoint-on-premises): Using a custom HttpHandler to avoid cross-domain issues when an AngularJS app filters followed sites with the site feed feature in SharePoint on-prem. - [The specified program requires a new version of Windows. (Exception from HRESULT:0x8007047E)](https://sanjaybhagia.com/blog/the-specified-program-requires-a-new-version-of-windows-exception-from-hresult0x8007047e): Fixing the HRESULT 0x8007047E exception by dropping ModeratedList from schema.xml and enabling content approval in code instead. - [Associating OOB Approval workflow with custom list for different Locale (LCIDs)](https://sanjaybhagia.com/blog/associating-oob-approval-workflow-with-custom-list-for-different-locale-lcids): Why the OOB Approval workflow template BaseId differs per locale, and how to build the right GUID from the site's LCID in hex to associate it. - [Updates are currently disabled in GET requests exception while provisioning multiple site collections](https://sanjaybhagia.com/blog/updates-are-currently-disabled-in-get-requests-exception-while-provisioning-multiple-site-collections): Why SharePoint throws 'Updates are currently disabled in GET requests' when a timer job creates several site collections, and the HttpContext fix. - [Incorrect values for User Fields while copying list items from one site collection to another](https://sanjaybhagia.com/blog/incorrect-values-for-user-fields-while-copying-list-items-from-one-site-collection-to-another): Fixing wrong user field values when copying SharePoint list items across site collections by remapping lookup ids with SPWeb.EnsureUser. - [Creating loosely coupled and generic process steps implementation](https://sanjaybhagia.com/blog/creating-loosely-coupled-and-generic-process-steps-implementation): Designing a loosely coupled process step framework in C# with Execute and RollBack methods for a SharePoint site provisioning workflow. - [Consuming Content Type Hub in custom web templates](https://sanjaybhagia.com/blog/consuming-content-type-hub-in-custom-web-templates): Why sites created from custom web templates can't consume the Content Type Hub, and how activating the hidden TaxonomyFieldAdded feature fixes it. - [Paged Custom Search Query using KeywordQuery](https://sanjaybhagia.com/blog/paged-custom-search-query-using-keywordquery): Paging SharePoint KeywordQuery results with RowLimit and StartRow to stay under the 10000 row search limit and avoid HRESULT 0x80040E01 errors. - [Update Personal Site Property in User Profile](https://sanjaybhagia.com/blog/update-personal-site-property-in-user-profile): PowerShell script to relink the PersonalSpace user profile property when SharePoint loses the connection between users and their personal sites. - [Update list items to trigger event handler through PowerShell](https://sanjaybhagia.com/blog/update-list-items-to-trigger-event-handler-through-powershell): PowerShell script that updates every item in a SharePoint list to re-trigger its event handler and push taxonomy values back into user profiles. - [Remove webpart from a page on Personal site using delegate control](https://sanjaybhagia.com/blog/remove-webpart-from-a-page-on-personal-site-using-delegate-control): Using a delegate control to remove the Recent Blog Posts web part from the default page when SharePoint provisions a user's personal site. - [Adding local variables on a page as a user control](https://sanjaybhagia.com/blog/adding-local-variables-on-a-page-as-a-user-control): Using a SharePoint user control to emit server-side values as inline JavaScript variables, available on page load without waiting for external scripts. - [AllowEveryoneViewItems - Enable anonymous access to files in list](https://sanjaybhagia.com/blog/alloweveryoneviewitems-enable-anonymous-access-to-files-in-list): How the AllowEveryoneViewItems property makes documents and attachments in a SharePoint list anonymously accessible, set via PowerShell, XML or code. ## Reviews - [Project Hail Mary](https://sanjaybhagia.com/reviews/project-hail-mary) — book, verdict: loved. My first sci-fi in a long time and an absolute delight — witty, approachable even without a science background, and impossible to put down. ## Pages - [About](https://sanjaybhagia.com/about): Who Sanjay is and what he works on - [Now](https://sanjaybhagia.com/now): What he is focused on right now - [Uses](https://sanjaybhagia.com/uses): The tools, apps and hardware he uses - [ParkingQuest](https://sanjaybhagia.com/projects/parkingquest): iOS app — live Park&Ride occupancy for Sydney commuters - [Calendar on Your Wall](https://sanjaybhagia.com/projects/calendar-on-your-wall): Web app — printable yearly calendars with your events