Recipe UOMs

Introducing sharp-recipe-parser

For almost four years now, I have maintained the Sharp Cooking app. From the beginning, one of the features I wanted to provide was ingredient UOM conversion. In version 1.4 of the app, a preview of the UOM conversion feature was made available. In this post, I will describe the process and how it was achieved. Before we get into UOM conversion, we first need to break down an ingredient line into its components. Recipe ingredient lines primarily consist of the quantity, the UOM, the ingredient, and any additional instructions. It should look like this: ...

August 5, 2023 · 3 min · LPains
Identity

Azure Pipeline service principal detail without AD Access

Azure Pipelines are a powerful tool for automating CI/CD workflows, and the AzureCLI task allows you to execute scripts using the Azure CLI. When working with service principals, it’s essential to have their client ID, secret, and object ID at hand. While obtaining the client ID and secret is straightforward using the addSpnToEnvironment property, retrieving the object ID can be a bit more challenging. In this blog post, we’ll explore a workaround to easily fetch the object ID for your service principal, even if it doesn’t have direct read access to Azure AD. ...

July 25, 2023 · 2 min · LPains
Infinity

An opinionated guide to choosing between Azure DevOps and Git Hub

Choosing the right DevOps tool can streamline your development processes and accelerate time to market for features. Two of the most prominent options available today are Azure DevOps (ADO) and GitHub. In this very opinionated post (you’ve been warned), I will guide you towards picking the right tool for your situation. What about other options? We might discuss other options in the future. I am assuming you are familiar with both tools already. If not, please review Get started with Azure DevOps and Get started with GitHub. ...

July 4, 2023 · 6 min · LPains
Cyber Security

Azure App Gateway Deployment with Bicep

Deploying an Azure App Gateway can be a daunting task, especially when creating a reusable template for it due to the verbosity of the template. In this post, I will describe how to create and execute a Bicep template for an externally visible web app with an Application Gateway. By the end of this post, the following requirements will be met: Web app hosted in App Service with Azure-provided certificate for TLS Web Application Firewall (WAF) with OWASP 3.2 and an example exception TLS cert for App Gateway stored in Key Vault TLDR; See the Bicep templates at BlogSamples. ...

June 23, 2023 · 4 min · LPains
Recipe Book

Using OCR to scan recipes into Sharp Cooking

Sharp Cooking app can currently import recipes directly from websites and backup files, making it easy to create a personal collection of recipes. However, it does not currently provide an option to scan recipes from a book or an image. This has been a long-requested feature that I am now attempting to add to the app, and will document the experience in this post. How? The first thing that comes to mind when trying to extract text from images is OCR. Modern OCR is in fact a type of Artificial Intelligence (AI), usually under the branch of Machine Learning (ML). There are quite a few options available to perform this task. In particular, I reviewed options that could be directly integrated into Sharp Cooking app or API. ...

March 12, 2023 · 9 min · LPains