Optimizely CMS: List content recursively on a page - and list the visitor groups used
Quite often a lot of the content on pages in Optimizely Content cloud (aka Episerver CMS) is structured in blocks placed in content areas. And often even blocks in blocks. Sometimes it's needed to quickly get a list of all the content items on a page - and sometimes you might also be interested in which visitor groups are used. Here is a couple of extension methods to help you with that.
Anti-Pattern: Don't modify Optimizely CMS (Episerver) content objects in the Controller
Using your content object (CurrentPage / CurrentBlock) as a makeshift viewmodel where you change settings or extend it with user data in the controller before passing it to the view, is unfortunately (and to my surprise) a pretty wide-spread practice among developers implementing Optimizely (Episerver) web sites. But it really needs to stop.
New Project: Optimizely (Episerver) Health Checker
Wouldn't it be nice if there was just one place you could go and get an instant overview of the health of your Optimizely (Episerver) installation? With checks that are both technical, functional, business and covers product, addons and implementation? Here it is. Or at least the start of something that could be very useful.
Using custom domains when developing in Visual Studio using IIS Express
A classic problem when building asp.net applications in visual studio and IIS Express is how to configure it so you can use a custom domain name, in case the default "localhost:port" doesn't suit you. I might be getting old, but every time I need to do this, I spend time looking it up in multiple places and trying to remember what I did last time - so this blog post is a simple guide on how to do it - both for my own future benefit and perhaps yours.
Episerver Forms: Avoiding spam with a honeypot
Spam comes in many forms and can be really annoying. Often, when you put a form on your website it will be found by spam bots that will post lots of spam in the form. A common defense is CAPTCHA's, but they are annoying the real users and typically not WCAG compliant. Here, I'm showing a simple Episerver implementation of another approach that works wonders for me - the honeypot.
Reading very large gzipped json files in c#
This is a little code snippet that I often find quite handy. It's a piece of c# code that opens a gzipped json file and iterates through the items in it. Since it takes it piece by piece (as opposed to loading everything in memory) it's can pretty much handle files of any size.
Showing the right block types at the right time
Often, it can be handy to have very exact and dynamic control over what editors can see or do. One of my weapons of choice for this is the good, old and trusted Virtual Roles. In this scenario we have a multi-site Episerver, where some of the block types it should only be possible to use on one of the sites.
Enrich Episerver Forms with additional system fields
Episerver forms adds a couple of system columns to each form submission when you export the submissions. But it happens that the people that need the form submission reports want additional data - for example the url of the page the form was on - and for some reason they don't know all Episerver page Guids by heart.