Post Archive

2021

Tagging Git History from Azure DevOps Release pipelines

In order to generate a tag in git that marked the commit of the source code that was actually released to my Production Environment. I create this small powershell command that is able to mark the commit using the Azure rest API. The benefit of this approach is that I don’t need to clone the repository in my Release pipeline and no external components or dependencies are required.

Read More

Back to Top ↑

2020

Canvas App can’t see ModelDrivenFormIntegration.Item at App Start

I started working on a canvas app using the Microsoft Power Platform. My application is placed on a Model driven form as a custom control. It was supposed to integrate with data provided by the Model Driven form and then prompt the user to either edit or create the data, presenting a separate screen for each task. At first I thought that the OnDataRefresh event would fire at the time that the model driven data finished loading in the background. It turned out that it isn’t possible to navigate to another screen from within the OnDataRefreshAction, so I needed to come up with another way.

Read More

Passing parameters to Power Automate from CanvasApp

Recently while developing a CanvasApp using the Microsoft Power Platform I came across an error message at the point that I was calling a Power Automate workflow. The workflow had been working up until this point but I added a new parameter, and now things weren’t working.

Read More

Back to Top ↑

2019

How to implement the Queue Collector within an Azure function

Whilst working with Azure functions you may come across a situation where you need to return multiple items to a queue, it isn’t immediately obvious how to do that. Placing a message on the queue from within an Azure Function typically involves placing the attribute [return: Queue("function2Queue")] on the main function body. But to add many messages you must add a parameter decorated with [Queue("function1Queue")] ICollector<__type__> to the definition of the Run method.

Read More

Validate JWT Token signed with RS256 for use within Microsoft Dynamics 365 CRM

How to secure an external web API call for use within Microsoft Dynamics 365 CRM Portals. With the April 2019 release of Microsoft Dynamics a new feature was added that provides an endpoint that can be used to obtain secure access tokens that contain user identity information. The addition of this feature provides a solution that can be used to call external Web API’s on behalf of the user that is logged into the CRM application. JWT diagram

Read More

Back to Top ↑

2018

Bluetooth connected Navigation display

The goal of this project is to create a low cost display that can be mounted to the handlebars or fairing of any motorcycle to provide a display of the riders route navigation. GPS navigation is performed via an app running on the users smart phone. Directions are communicated over Bluetooth from the the phone to the display module discussed below. The display is designed to be minimally distracting and provides the following information to the rider: screen shot 1

Read More

.Net Library for DLS & NTS Survey systems used in Western Canada

Working with Oil and Gas well location data in Western Canada is challenging due to the prevalence of many different identifier types that are used to represent the location of a given well, we have DLS, NTS & UWI. I developed a library that contains types that represent the various grid systems. These types perform validation of input values to ensure that the values are valid. The types can also perform conversion between geographic locations and the survey system locations. dls_map

Read More

.Net Library for Finite Element Analysis

Finite element analysis is a really cool technique that can be applied to solve lots of engineering problems. Imagine that you’re job is to model how a structural part will react when a force is applied to it. Within the material there could be trillions of atoms that are interacting with each other, some pushing and some pulling one another, how would you begin to compute those areas that are high stress? That is what finite element analysis does for us, we can break down the impossibly large problem into smaller pieces by meshing the physical structure and then computing the interactions of each node in our mesh, think of it as eating the elephant one byte at a time. result

Read More

Notebook: What I learned designing a neural network that plays an arcade game

My goal for this project was to become more familiar with how neural networks operate, and to understand the sorts of problems that they can be applied to for future projects. That is why for this project I opted not to use the a prebuilt machine learning library framework, but instead opted for an approach where I build up the math types using raw c#. Luckily I had a project left over from many years ago in which I developed a Matrix type and coded many of the math operators. I felt that going down this road gave me a deeper insight into how a neural network works at the bare metal.

Read More

How-To: Install Home Assistant on a Netgear ReadyNAS

A quick reference guide for how to perform the necessary steps to install homeassistant on a NetGear ReadyNAS. The purpose of this guide is to record the steps required to install Home Assistant on a NetGear ReadyNAS running OS 6.9.3.

Read More

Configure your Angular applications with Server Environment Variables

To configure an angular client to receive environment variables as set on the host Server. This allows us to promote our code base between environments without altering our client files. This could also be used in a scenario where we take advantage of Azure slotting to provide slot persistent settings to the client during a swap.

Read More

Levenshtein Edit Distance Algorithm

There are many algorithms in Computer Science that help us to understand our data in meaningful ways. Edit distance algorithms are one such set of tools. They tell us the minimum number of edits that must be made in order to turn a source input string into a destination string, thus the ‘distance’ from out source to our destination.

Read More

Homebrew Gear Position Indicator

Sometimes you can’t buy the exact thing you want from a store, this is a wonderful opportunity where we can play with some new tools. Let me show you a hardware project where I designed the circuit and coded the firmware so that I could add a gear position indicator to my Motorbike. installed

Read More

Back to Top ↑

2017

Using HTTP Content-Range headers to resume file uploads

Resumable file transfers are sometimes necessary in situations where a large amount of data must be sent over a network that experiences intermittent outages. This could be the case when a remote worker at a rural job site has tethered their laptop via a weak cellular signal and needs to upload a large file package back to home office. In many cases using an FTP server may not be an option due to corporate policy or perhaps you are building a service that must perform addiational processing at the ment that a file is completely transfered.

Read More

Back to Top ↑