Skip to main content

Posts

Streaming mp3s from Azure blob storage gotcha

Have been wrestling with an issue one and off for a few weeks where have found mp3 files that previously played correctly in a web browser were having some issues relating to streaming. There's an example here . What I found - hopefully resolved now if you try the link - was that the audio would play, but the play bar that updates the position on the track wouldn't move, nor could the user navigate to parts of the audio to review it. We're using jplayer and have the mp3 files hosted in Azure blob storage. All had worked fine for several years, but recently could see this issue on Chrome, even though they still played as expected in Edge. So must have been related to a relatively recent Chrome update. The resolution though turned out to be a setting on the blob storage account, that I was led to via this Stackoverflow answer , that indicated setting the DefaultServiceVersion to an appropriate value might resolve it. And sure enough, when querying the current value...

Refactoring an interface to facilitate unit testing

Short post to follow, generalising something I've just done in an active project that seems to have general relevance. I had an interface and class like this, that wasn't easy to put under a unit test. interface ISomething { string GetValue(); string GetComplicatedConvertedValue(); } class MySomething : ISomething { string GetValue() { // Get value from something that's a simple one-liner call but not easy to mock or stub (in my case, Sitecore settings) ... } string GetComplicatedConvertedValue() { var rawValue = GetValue(); // Do some processing on the raw value that ideally we'd like under unit test, and return it ... } } One answer I realised is that, as the main value for testing this class is in the second method - retrieving the raw value is hard to test, but little value as it's a one liner into platform functionality - I can just remove that from the interface, and...

Tackling Common Concerns with Azure Function Patterns

I've recently had (or perhaps am about to have if you have found this early) the pleasure of talking at the Intelligent Cloud Conference in Copenhagen, in May 2018, on the topic of Tackling Common Concerns with Azure Function Patterns I've collated here a few links to resources discussed in my session. First, find a copy of the slides here (in pptx, so you may find fonts a bit off without our company one) , or, perhaps better, as a PDF here . Then links to GitHub repos containing the full implementations of the patterns discussed in the talk, and from where the code samples presented are drawn. Azure functions demos Queue based load levelling demo Some tools mentioned in the talk: Azure storage emulator Azure storage explorer Lastly, the Azure functions documentation .

Verification of Sitecore Helix Architecture via a Fitness Function

Recently I've been reading - and recommend - the book Building Evolutionary Architectures by by Neal Ford,‎ Rebecca Parsons and Patrick Kua, where they discuss the concept of a fitness function . The idea here is that, as well as implementing the business requirements, a solution will also need to address certain non-functional concerns, such as security, performance, reliability and maintainability. Some of these can be measured or validated, and therefore tested, and ideally, tested in an automated way. Within a Sitecore project I'm working on, we are adhering to the Helix principles that in part addresses the organisation of projects with a Visual Studio solution. You end up with many individual projects, each within a layer - foundation, feature and project. The foundation layer is considered the highest level and most stable. Projects within this layer may have dependencies on each other, but not on any at the lower levels. Feature layer projects are intende...