Application Insights & Azure Table Storage CreateIfNotExists Errors

When working with Azure Table Storage and Application Insights you might have noticed a lot of dependency errors, logging a 409 Conflict event everytime the CreateIfNotExists() method is called to make sure a table is available.

This is because the Azure.Data.Tables SDK will simply try to create a new table — and will hide the error if it already exists. While you don’t notice this in the code, by default Application Insights will catch this and clutter your logs with errors you probably don’t want.

Continue reading Application Insights & Azure Table Storage CreateIfNotExists Errors

Documentation in GitHub Pages with mkdocs & readthedocs Theme

Recently I wanted to migrate the documentation of my C# WordPress library WordPressPCL from the GitHub wiki to something more flexible. With version 2 of the libaray coming soon the idea was to move all the docs into a static site hosted with GitHub Pages and managed in Markdown files. Luckily with mkdocs it’s pretty straight forward to get this up-and-running quickly.

Here’s what I wanted:

  1. Docs as markdown files in main repository with readthedocs theme
  2. Automatic build of the static website using GitHub Actions
  3. Deployment of static website to GitHub Pages
Continue reading Documentation in GitHub Pages with mkdocs & readthedocs Theme

Which Azure Table Storage .NET SDK should I use?

When working with Azure Table Storage (ATS) in C# / .NET there are currently at least four NuGet packages offered by Microsoft for working with tables. It gets even more complicated as there’s an Azure.Storage SDK (currently in Version 12) that works with all Azure Storage Account related services — except Table Storage. Additionally Microsoft mostly talks about the CosmosDB Table API, but all libraries also work with the regular ATS since the APIs are identical.

So what are our options and which one should I choose?

Continue reading Which Azure Table Storage .NET SDK should I use?

Deploying Angular to Azure BLOB Storage using Azure DevOps pipelines

Using the Static website feature Azure Storage Account is a cheap and convenient way to quicky deploy an Angular app (or any kind of SPA for that matter). And since I’m creating such a pipeline on a fairly regular basis I though it might come handy share my default approach for doing that.

Continue reading Deploying Angular to Azure BLOB Storage using Azure DevOps pipelines

Branch Name as Variable in Azure DevOps Pipelines with YAML

In many CI/CD scenarios it’s necessary to adjust the build, test or deployment process depending on which GIT branch has triggered the pipeline. In our case we build lots of Angular apps automatically with their desired target environment, e.g.

ng build --configuration="production" or
ng build --configuration="staging"

depending on where the artifact should be deployed afterwards. This can be achieved by adding some YAML that looks like this:

Continue reading Branch Name as Variable in Azure DevOps Pipelines with YAML

Bluetooth Low Energy BLE devices with Azure IoT Edge

One of the major reasons for utilizing an Azure Iot Edge Gateway is to connect devices to the internet that can’t directly establish a connection themselves. A very common case are Bluetooth beacons, that can provide sensor data through a Bluetooth Low Energy (BLE) connection but are not able to send this information directly to an Azure IoT Hub.

For this scenario a bridge or gateway is required to create an IoT message from the Bluetooth payload. This is called Protocol Translation and can be achieved by creating a custom IoT Edge Module. Interestingly enough Microsoft has still not managed to provide a sample or best practice on how to do this with the IoT Edge Runtime V2, so here’s how we did it in our latest IoT project.

Continue reading Bluetooth Low Energy BLE devices with Azure IoT Edge

Azure IoT Edge Identity Translation: Getting Started

In a lot of IoT solutions Gateways play important roles. They can help connect downstream devices to the Cloud through Access Points, provide offline caching capabilities or translate protocols that are not suitable for direct internet access like Bluetooth. With Azure IoT Edge Microsoft has a great product for these kinds of devices which allows you to deploy custom docker modules for different kinds of tasks like evaluating data on the Edge before sending everything to a connected Azure IoT Hub.

Continue reading Azure IoT Edge Identity Translation: Getting Started

Stop using npm install in your CI/CD pipelines

TLDR: npm install can update your npm packages potentially destabilizing your build process by using untested dependency versions. Use npm ci instead!

If you’re like me you might have several node-based apps, nicely configured to be built and deployed using automatic build & release pipelines.

So one of the first things you’re probably doing in that build pipeline is installing all required dependencies from npm, with your process looking something like this:

Continue reading Stop using npm install in your CI/CD pipelines

Building static websites with Azure Functions, mustache & Azure Storage

In this post I will show you how to turn some dynamic data into a static website using a timer-triggered Azure Function (written in nodejs) & mustache with static website hosting for Azure Storage.

For this demo I’ll create a simple, personalized start page showing some headlines I grab from a WordPress site and also adding a few links I often use. There are certainly way more interesting and useful scenarios for this but it should help you get started with your own ideas.

Continue reading Building static websites with Azure Functions, mustache & Azure Storage

Remember to set the Content Type when using Static website hosting for Azure Storage

Currently I’m playing around with the new Static website hosting for Azure Storage feature which has recently been launched in public preview. This allows you to serve static web content (HTML, CSS, JS, images) directly from a dedicated blob directory inside Azure Storage without setting up any kind of web app or proxy function.

Continue reading Remember to set the Content Type when using Static website hosting for Azure Storage