Learning F#: How to make a snake game in the console

by Karl Solgård

My favorite way to learn new things is by diving headfirst into a concept and start hacking away! The classic mobile game Snake should be a good challenge for a beginner F# developer.…

Logging SSL certificate data to Azure Log Analytics

by Karl Solgård

There's no built-in way to log SSL data with Azure Application Insights. APIs for SSL analytics exist and that data could be sent in with the "Azure Monitor HTTP Data Collector API".…

.NET Tip: Feature toggling inside DI-containers

by Karl Solgård

A pivotal moment in the history of an application is when a service changes drastically and deployment becomes a subject of stress and uncertainty. The service might be deemed as unhealthy in a production environment whereas it worked just fine in the test environment.…

Supporting multiple valid issuers in identity server with JWT tokens

by Karl Solgård

Changes in software are inevitable. Every part - even the most permanent - of a system might change at some point. The issuers of JWT tokens in your identity server is an example of such a part. When we look at an openid configuration one can find various information about…

Making an arcade cocktail table - Raspberry pi 3B+ and Retropie build

by Karl Solgård

While on a company outing with NOVACARE to a nearby arcade pub, I came across a table with a built-in arcade system. I thought to myself that this would make a great piece of furniture in my house. I already own a Raspberry pi 3 and I have a spare…

BrowserStack Appium & Visual Studio AppCenter test automation

by Karl Solgård

Regression testing for mobile apps can be tough. The wide array of phones and OS versions makes testing for mobile applications a time consuming and tedious task. Luckily, tools like BrowserStack [https://www.browserstack.com/] and Appium [http://appium.io/] exist to make our lives a bit easier. App Automate…

Streamlining TypeScript development with webpack dynamic imports

by Karl Solgård

HTTP/2 is upon us. Lazy-loading resources doesn't have the same performance disadvantages as in HTTP/1. This allows us to prefer loading many files on demand rather than loading a big blob of JavaScript on the initial load. Let's look at a pattern that simplifies…

Threading issues in Entity Framework Core 3.0 health check

by Karl Solgård

Following the exciting release of .NET Core 3.0, I was expecting that our services would handle the upgrade from 2.2 to 3.0 with ease. After the upgrade, however, the services sometimes responded with "Unhealthy" and a 503 status code! > The connection was not closed.…

Set alerts on crashed Kubernetes pods in Azure Kubernetes Service

by Karl Solgård

It's not always easy to tell what is happening inside a kubernetes [https://kubernetes.io/] cluster. There are many alternatives like prometheus [https://prometheus.io/] that can do alerting and monitoring for you. However by using AKS [https://azure.microsoft.com/nb-no/services/kubernetes-service/] (Azure Kubernetes Service) you…

Handy KQL queries for .NET applications in Application Insights

by Karl Solgård

In Novacare, we utilize Application Insights [https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview] to monitor our applications. Application Insights uses a query language called Kusto Query Language [https://docs.microsoft.com/en-us/azure/kusto/query/] (KQL for short). Sometimes it's hard to know what data to…