Observations about IT and wine

AI powered wine fair guide

Agentic AI, or agents for short are all the rage these days. As I showed in my previous post, they can come in quite handy when it comes to quickly and easily analyzing and making sense of data and help generate the insights you are looking for.

With my wine cellar already imported, I began to wonder what else my little AI helper might do for me. Zurich hosts several sizeable wine fairs each year (see my article here for more info), but making the most of them can be surprisingly tricky. Sure it’s easy to wander in unprepared and leisurely drift from stall to stall (or wherever one happens to find free elbow-room) but if you’re actually interested in finding wines that are right up your nose or those that are complete novelties, you’ll need to carefully study the brochure and then plan a route, lest you be running around like a headless chicken looking for the 10th booth with something like wine or vino in the name. So what to do? Easy: Let AI do the heavy lifting.

AI sommelier

Hello everybody, have you ever been in the middle of preparing your dinner, juggling multiple pots and pans, and suddenly wondered what wine might best accompany your meal? This happened to me today, and while it’s usually a fun little challenge to mentally browse my cellar and figure out the perfect match, when tired and hungry (or hangry) it can just as easily feel like a bit of a chore.

Advanced Azure Policy Techniques #4: Targeting policies using scopes and tags

Hello again! Today, I want to shine a light on a powerful but often overlooked Azure Policy mechanism: resource tags. While widely available, they’re rarely used to their full potential, especially when it comes to policy scoping. What do Azure resource tags have to do with policies you might ask – the short answer is that since tags can be described as both meta and child resources that are available on every Azure resource and service offering, this makes them a prime candidate for laser–focused policy scoping.

A wee journey through Fèis Ìle 2025 — Part 1: Making whisky

Today, let’s step away from the world of wine and dive into another revered liquid: whisky. More specifically, I’d like to take you to Islay — a small Island west of Glasgow that is famous for its natural beauty and peated whisky. I had the chance to spend a few unforgettable days on this magical island, just in time for the Fèis Ìle whisky festival, that had connoisseurs of the peaty pour come from far and wide in pursuit of the perfect dram.

Advanced Azure Policy Techniques #3: Of Policy Endpoints and Subresources

In the third edition to the series, I would like to explain how we can actually determine when a policy can or should be used to achieve our goal.

First, let’s recall how Azure Policy works: By interacting with the Azure Resource Manager (ARM) API. This already shows us the first limitation: We will not be able to use a policy to restrict the behavior of an Azure resource or service if the level that we want to restrict is not accessible via the ARM API. This includes for example:

Wine Certifications

Most journeys into the world of wine share the same simple beginning: We enjoy a few glasses (or bottles) and decide which wines we liked and which we didn’t. However it usually does not take long to realize that even though we liked this one particular Cabernet Sauvignon very much, the next one we tried was truly awful - perhaps it was much too sour or had unbearably coarse, gritty tannins.

Advanced Azure Policy Techniques #2: Using requestContext to target specific apiVersions

In the second post of this series, I want to show you an example of using a function inside a policy definition to restrict the scope. Based on personal experience, policy functions are often somewhat neglected but have received significant development over the past few years. As you can see in the official documentation Azure policy supports a wide range of functions, including:

  • copyIndex()
  • dateTimeAdd()
  • dateTimeFromEpoch
  • dateTimeToEpoch
  • deployment()
  • environment()
  • extensionResourceId()
  • listKeys()
  • listSecrets()
  • reference()
  • resourceId()

Many of these functions are also available for ARM templates, such as copyIndex(), listKeys(), and resourceId(), and are very practical for operations targeting complex deployments with multiple, interdependent resources. However, a function that is perhaps less well-known is requestContext().

Food and wine starter recipes #1

As I explained in my previous post, a perfect marriage of food and wine can elevate both and unlock a whole new level of culinary enjoyment. But starting out can seem like a daunting task. What wines match with which recipes?

I’m by no means a master chef, but I’ve written down a few of my favorite recipes - easy and straightforward to make - and included some suggested wine pairings to help anyone else exploring this path.

Diagram as Code

Communication is one of the key skills of any good solution architect. Not only should you be able to create sound, secure and performant software designs but you also need to be able to communicate these to stakeholders.

To visualize these complex solutions, diagrams are a handy tool and there are a lot of different software offerings out there that help with this exact use case - most popular perhaps Microsoft Visio and Enterprise Architect.

Advanced Azure Policy Techniques #1: Extend Arrays Using DINE

This is the first post of a series showing some more advanced Azure Policy techniques that might not be featured so frequently, but can be very useful if the situation requires it.

Have you noticed that if you use a DINE policy to update a property on an existing resource where the property type is an array, it will overwrite the existing array with the one that you configured in the DINE policy? That behavior makes sense if we look at what a DINE policy is supposed to do - update a resource using a deployment template.