One of the interesting things that’s arrived with Sitecore v10.1 is a new approach to how items get updated when you change versions. This change is aimed at containerised deployments, and I’m in the middle of a containerised project. So I figured I should take a look… Continue reading
Category Archives: C#
Why do I have forbidden sockets?
I was tinkering with some C# code that uses TcpListener
s recently, and hit on a strange issue where my code would run fine on on machine, and fail on another. It took me a while to find an answer in Google, so here’s a reminder to my future self: Continue reading
Peeking into search queries
An issue I’ve bumped into a number of times over the years, is that sometimes developers want to be able to look at the query that got generated when they did something with Sitecore’s ContentSearch APIs. The traditional answer of “go look in the logs” is one way to deal with this, but some recent project work got me wondering if there were alternatives… Continue reading
Broken Unicorn synchronisation
Ever had a tool that works reliably suddenly not work? I had a problem like that recently, and it lead to some experimentation that I think I may need to come back to later. So this is mostly so I can remember what I was doing when I get back to this. But as we move toward a more “platform agnostic” with more use of .Net Core on Linux, maybe there’s something here that might help you too… Continue reading
An interesting diversion into procedural generation…
Outside of work I’ve been looking for non-Sitecore things to experiement with recently, and my eye was caught by a bit of interesting game development technology. I came across a discussion of using code to generate game data with a technique called “Wavefunction Collapse”. It’s a simple concept, but it has some interesting results, so I thought I’d have a go at an implementation myself. Continue reading
A tool to help you build config patches
Recently, I caught sight of a discussion in Sitecore Slack where the lack of tooling for helping you build config patch files came up. For some reason that struck a chord with me, and having mulled over it a bit, I decided I’d have a go at making something to see if it could be done… Continue reading
A subtle clash-of-namespace bug in Commerce
Recently I got the opportunity to do Sitecore’s “Implementing Experience Commerce” training course, and get certified in the details of how Commerce works these days. While I was doing the lab exercises for the course I hit an interesting bug, which seemed like just the sort of thing that others might encounter.
So if you’re extending the Commerce OData APIs, watch out: Continue reading
Thinking about errors in code pipelines
A while back I wrote a couple of posts on the subject of how code pipelines can work in a more functional .Net world. I’ve made use of those patterns in some code of my own, and I’ve found these posts have generated quite a lot of questions from readers here and followers on twitter. But I’ve never been quite happy with the implementation in my own code… Continue reading
Unit testing computed fields
Quick one today. I was writing some code for Sitecore Computed Index fields recently, and it took me more Google Effort than I felt it should have to work out how to write unit tests with FakeDB to verify the code worked. If you want to do that without spending a while searching, the answer is pleasingly simple: Continue reading
Simple background scheduling
Every so often I come across the need for some simple code to schedule a bit of work in the background of an application. Sometimes because a service (for integration tasks, perhaps) needs to kick off processing every so often, or sometimes because some background part of a larger program needs to happen in parallel with the main execution. A common part of these requirements is that the task should run every so often, but two instances of the task should not overlap no matter how long the background processing takes.
A few times I’ve come across projects with subtly broken implementations of this requirement, so I thought I’d write down a simple approach that has worked for me. That way next time I need it, I won’t have to go digging through git repos… Continue reading