Stefan Holm Olsen

Blog posts

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

On exporting product catalogs to Google or Facebook

Digital marketers of today might want to work with dynamic product ads on platforms like Google and Facebook. This requires a machine readable product catalog file. To showcase how to make that data available, I created a tool for EPiServer Commerce, which generates and provides such a file.

Redis can be an EPiServer event broker too

When EPiServer runs in a load-balanced environment, the servers rely on exchanging event messages. EPiServer supplies four event providers. This post is about implementing a new event provider, using Redis as a broker for remote event messages.

Bitcoins as a payment option in EPiServer Commerce

I have heard a lot about Bitcoins and other cryptocurrencies. About what they are, what they can do and how much they will revolutionize payments and money transfers. So, as an experiment I decided to create an EPiServer Commerce plugin to accept payments in cryptocurrencies.

Ensuring the right AJAX content language using a filter attribute

How can an AJAX service serve texts (error messages, label texts, product descriptions) or images from a multilingual EPiServer site? How to make sure that the server returns content in the correct language?

A custom exception handler for EPiServer pages

Read about a way to generically handle exceptions so they show a friendly error message to visitors, and a detailed stack trace to certain user groups.

Adding dynamic HTML to property templates in EPiServer

When developing websites, sometimes adding extra attributes to certain HTML tags is needed. This is about how to do that dynamically on EPiServer properties, extending the Display Templates.

Using AuthorizeAttribute for modules in a multi-tenancy web platform

Imagine that you are developing a web platform (maybe even a SaaS product) to support multiple customers. It could be built as a multi-tenancy application, that offers a basic subscription and a variety of optional add-ons. How could authorization of access to each add-on be easily implemented?

Migration from Subversion (SVN) to Git

I once did a big migration of an old Subversion (SVN) repository to a new Git repository, migrating all of the version history. This post is about how to do that.

Cache busting with ASP.Net MVC

Whenever a webpage have links to pre-compiled frontend files, we as developers can make the web browsers, as well as proxy servers, cache (save) the files for a very long time. But what happens when you make changes to one of those files on the server? How can we do both extremely long caching and invalidate the cache at any time?

How to replace session state in a scalable environment?

In all the projects I have worked on for various clients, we had to load, cache and make use of a user's profile data in the application. How to do that in a very efficient and scalable way, is something I care for a lot. Here are my thoughts and ideas about that topic.