Blog posts

This page lists all my blog posts chronologically (newest first).

Rendering correct Arabic glyphs in PDF (using PDFSharp)

Apr 08, 2019 by Stefan Holm Olsen

I were recently tasked with creating code to render PDF files containing Arabic words using PdfSharp. Unfortunately, PdfSharp does not support Arabic or other right-to-left languages. Here is the workaround I made up.

Applying cloud logging to InRiver iPMC extensions for easier analytics

Jan 22, 2019 by Stefan Holm Olsen

I was missing some features and scalability from the built-in InRiver iPMC extension log. Therefore I did an integration that demonstrates how to log events, exceptions and metrics to Azure Application Insights (using it as a supplementary log service).

Sending emails from Episerver Commerce with SendGrid

Oct 31, 2018 by Stefan Holm Olsen

For a long time, transactional emails have been sent directly from Episerver, by rendering and sending a CMS page as an email. In this post I suggest another approach, where we simply tell SendGrid which template to use and what data to put in the template placeholders.

Using GraphQL with Episerver Commerce

Jul 28, 2018 by Stefan Holm Olsen

Since moving to Dubai, I have heard and read a lot about GraphQL as a new model for implementing API's for web and native apps. However, I have not yet seen it applied to Episerver CMS or Commerce. So, for this blog post, I created a small demonstration of a GraphQL API, based on Episerver's Quicksilver sample site. Read about the outcome here.

Why I use Yandex.Metrika for website analytics

Jun 22, 2018 by Stefan Holm Olsen

Last month I switched from Google Analytics to Yandex.Metrika as my analytics suite.In this blog post, I explain why I chose Yandex.Metrika and why I believe it is a great and powerful tool.

To rewrite Git history: add and edit files back in time

May 18, 2018 by Stefan Holm Olsen

When I finished preparing the code for another blog post, I had to add a LICENSE and a README file to the Git repository of my code. Adding those files to the very first commit and adding a copyright notice to all C# source files, required rewriting of Git history. In this blog post, I share the scripts I used myself.

An efficient and open sourced inbound connector for InRiver iPMC

May 09, 2018 by Stefan Holm Olsen

I created an open sourced inbound connector to demonstrate how to make a simple, yet powerful, integration for loading large XML documents with product data into iPMC. After doing thorough profiling of the code, I also incorporated several performance optimizations.

Analyzing InRiver images using Azure Computer Vision API

Jan 21, 2018 by Stefan Holm Olsen

What if product managers wants to have all images tagged in InRiver, but does not really like to do it manually? How can that be automated using artificial intelligence in the cloud? In this blog post I create a new InRiver iPMC extension that integrates to Azure's Computer Vision API.

Transforming an InRiver field value using a table in Azure Table Storage

Jan 07, 2018 by Stefan Holm Olsen

In InRiver some fields have raw values that need to be transformed because of a target system. It could be that all color codes should be consolidated to just 20 color groups. But how to do that? And where to store all the transformation combinations? In this blog post, I demonstrate how to implement an InRiver iPMC extension that transforms field values using a custom table in Azure Table Storage.