How to pass the Azure AI-900 Certification

The Azure AI-900, Microsoft Azure AI Fundamentals, is an entry-level certification that verifies foundational knowledge of artificial intelligence (AI) concepts and related Microsoft Azure services. This certification is ideal for individuals looking to validate their basic AI skills and understanding of Azure services that are applied in AI solutions.…

Umbracokalaset 2024

Earlier this week, I had the opportunity to be part of Umbracokalaset 2024, an event that brought together the Swedish Umbraco community in Stockholm. Organized by Toxic Interactive Solutions, in collaboration with Obviuse and Umbraco, the event was all about sharing knowledge and strengthening the Umbraco community.…

Working proactively with Responsible AI using the Threat Modeling framework

Microsoft Responsible AI is a framework developed by Microsoft to guide the ethical design, development, and deployment of AI systems. Its goal is to ensure that AI technologies are built and used in ways that are fair, transparent, secure, and respectful of privacy and human rights. Read more about the Responsible AI principles here.…

Conversational CMS: Builing an Umbraco Copilot using Semantic Kernel and OpenAI

I’ve been playing around a lot lately with Semantic Kernel from Microsoft. I've created a Copilot in the back office of Umbraco that can help editors work with their Umbraco content using Conversational CMS, hoping to reduce some of the tedious, time-consuming tasks in editors' everyday life.…

Dev Day Borlänge: Summary!

Today, I organized Dev Day i the Knowit Experience Borlänge office. We focused on Azure AI Services, AI Studio and I hosted a tutorial and live demo of Semantic Kernel, showcasing some of its capabilities and concepts, and the response was nothing short of a success.…

Umbraco 8 End-of-life: Why Upgrading from Umbraco 8 is Crucial!

I was recently interviewed by Knowit.se to discuss the benefits of upgrading from Umbraco 8 as it approaches its "end of life". In the interview, I highlight key reasons why upgrading is crucial for maintaining the stability, performance, and security of your website.…

I hosted a Microsoft Community Lunch Session on Azure AI Studio

This week, I had the pleasure of hosting a Microsoft Community Lunch Session at Knowit, with an audience of about 100 people. The focus of the session was on getting started with Azure AI Studio - a platform that has been generating a lot of buzz since it was release at Microsoft Build in May 2024.…

Get started with OpenAI in Azure AI Studio

A few months ago, at the Microsoft Build 2024 Developers Conference in Seattle, Azure AI Studio was made generally available after being in preview since November 2023. In this blog post I will guide you through getting started with Azure AI Studio and demonstrate how to send a prompt to a GPT model using the OpenAI API.…

AI Code Reviews using GitHub Actions

Lately I've been experimenting with automated AI Code Reviews using Github Actions triggered as part of our pull request process. Found this really nice action on the GitHub Marketplace called ”AI Code Review Action”, which after just a few minutes of configuration was up and running and gave some really nice feedback on initial testing.…

I'm hosting a session for wedoAI 2024

My session on how to get started with OpenAI in Azure AI Studio just got accepted for wedoAI 2024!…

I'm a 3x Microsoft MVP

I'm extremely grateful and proud to share that I’ve been awarded Microsoft MVP for the 3rd time in my career. Thanks Microsoft for this honorable recognition and this amazing community. Also congratulations to all you new and renewed MVPs out there!…

I wrote an article for Skrift Magazine on sustainability and core values: The art of lagom!

I wrote an article for Skrift Magazine! This was my third time writing for Skrift, but the first time in the "thought pieces" category. Not my usual comfort zone, I'm usually more on the technical side, but this is a topic that's close to my heart.…

.NET Aspire Lightning Talk Stockholm

I had the pleasure of hosting a lightning talk about .NET hashtag#Aspire today at Knowit Experience's Dev Day in Stockholm. A big thank you to everyone who attended and for all the great questions and buzz around .NET Aspire.…

Integrating Machine Learning and AI Predictions in Umbraco with ML.NET

Helping users find their way and provide them with quick and accurate answers to their questions is crucial for enhancing user experience and engagement. By integrating machine learning into your CMS, such as Umbraco, you can offer users intelligent predictions based on existing content.  In this blog post I will show how I implemented machine learning in Umbraco using ML.NET, enabling users to find the most relevant FAQ answers using AI predictions.…

Dev Day GBG: Summary!

I recently had the pleasure of co-organizing Dev Day in Gothenburg together with my good friend David Skoog, and what an incredible day it turned out to be! The event brought together Knowit developers to share knowledge, collaborate and be inspired. …

I’m speaker at Dev Day on Machine Learning and Azure AI Studio

I’m happy to announce that I will be speaking at Dev Day Gothenburg. I’ll be hosting a session on Machine Learning with ML.NET and SLM (Small Language Models) with a workshop on Azure AI Studio based on my tutorial on the same topic.…

I'm a 6x Umbraco MVP

I'm honored to announce that I’ve been awarded Umbraco MVP (Most Valuable People) for the sixth (!!) time in my career. Congratulations to all the new and renewed MVPs out there.…

ML.NET Lightning Talk Gothenburg

Last week, I had the opportunity to host a Lightning Talk at Knowit Experience Gothenburg, introducing the team to the basics of ML.NET and how to get started with machine learning.…

Machine Learning for .NET Developers: How to build your own AI using ML.NET

Artificial Intelligence (AI) is transforming the way we develop applications. As a .NET developer, you can use ML.NET from Microsoft to integrate machine learning (ML) into your .NET applications. In this blog post, I’ll walk you through creating a simple AI application using ML.NET in less than 5 minutes.…

Speaker at dot.festival in Oslo on .NET Aspire: The future of .NET

Today me and John Beijar went to Oslo to visit dot.festival where we joined 140+ attendees from Norway, Sweden, Denmark, Finland and Poland, discussing how we want to shape future digital solutions and the responsibility we have as digital creators. …

I'm nominated for the Open Source Contributor of the Year award at the Developers Day Gala 2024

I am very happy to announce that I have been nominated for the Open Source Contributor of the Year at the Developers Day Gala 2024!…

Speaker University of Borås: Makers of a Sustainable Future

Today me and John Beijar spent the afternoon at University of Borås, talking about Sustainable Tech.…

Oslo Umbraco Meetup speaker on .NET Aspire

I recently had the pleasure of speaking at the Umbraco Meetup in Oslo, where I talked about how .NET Aspire, Microsoft's latest love child, can be effectively combined with Umbraco in a microservice architecture.…

Elmah.io Lightning Talk

I recently had the pleasure of hosting a Lightning Talk at Knowit Experience in Gothenburg, where we dove into the world of logging tools with focus on elmah.io. elmah.io is the easy error logging and uptime monitoring service for .NET.…

.NET Aspire Lightning Talk Gothenburg

Since I returned to Knowit Experience as the new Head of Tech we’ve introduced a new speaker format called ”Tech Fika” in Gothenburg. This is a bi-weekly opportunity for anyone in the tech skill to share whatever they like in an unpretentious ”mini lightning talk” format.…

5 minute introduction to Message-Based Communication with Azure Service Bus

In this short blogpost we're diving into the world of message-based communication, particularly focusing on Azure Service Bus. If you've primarily worked with request-response communication models, you're in for a treat. Message-based communication can be an extremely powerful addition to your toolbox and Azure Service Bus makes it exceptionally straightforward.…

Unit Testing with ChatGPT

Don't like writing unit tests or simply don't have the time for it? Good news – now you don't have to! As a newbord AI enthusiast with a long-time obsession with unit testing, I couldn't resist the urge to try and combine these two topics. Check out my latest blog post "Unit Testing with ChatGPT," to discover how you can use ChatGPT to generate test cases and code for you.…

A proactive mindset: Next level customer care

By adopting a proactive mindset this allows us to focus on anticipating and addressing potential issues before they escalate. We believe that holistic customer care requires being one step ahead of problems and acting on them promptly.…

Developer of the year finalist 2023

I'm happy to share that I've been selected one of six finalists for the Developer of the Year award at the Developer Day conference in Stockholm, Sweden 13th of September.…

Asserting Equal vs Same vs Equivalent

In this article, I'm going to demonstrate three very common but possibly confusing assertion differences in the world of C# testing: Assert.AreEqual, Assert.AreSame and Should().BeEquivalentTo.…

Custom Umbraco NotificationHandlers

Whenever a content item is published in Umbraco a ContentPublishingNotification event will be triggered. By creating our own NotificationHandler we can hijack this event and cancel or extend the default notification when a user is publishing a content node in Umbraco.…

Using The Builder Pattern to improve Testability and Readability

Sometimes setting things up can get a bit messy, especially when we want to test coupled code with a lot of dependencies. This is where the Builder Pattern comes in handy - it helps us create objects in an easier and cleaner way, especially when they are a bit complex to set up.…

Azure Container Apps: The beauty of Kubernetes without the horror of Kubernetes

If you've ever dived deep into the world of Kubernetes, you know the challenges it can present. While it's a powerful tool, maintaining Kubernetes can sometimes feel a bit overwhelming.…

Tutorial: How to get started with .NET Aspire & Umbraco 13

.NET Aspire, the latest iteration in the .NET family, offers a modular, high-performance framework for building web applications.…

Tutorial: How to migrate an existing Umbraco website to .NET Aspire

In my previous article I shared a tutorial on how you can get started with .NET Aspire with a brand new Umbraco 13 website running on .NET 8. In this follow-up tutorial I'll cover how you can make the same transition to .NET Aspire but with an existing pre-Umbraco 13 website.…

Guest on tech Podcast 'Digitalterapi'

Last week I was a guest on tech podcast “Digitalterapi” talking about Umbraco, Open Source, Community and much much more..…

Moving smoothly between Optimizely and Umbraco CMS

As I mentioned in one of my previous posts, I had a presentation planned at a lunch meetup in the Knowit Gothenburg office, called "The Optimizely developers guide to Umbraco".…

Integration Testing an Umbraco API using .NET Web Application Factory

Lately I've been experimenting with the new WebApplicationFactory in .NET 6.0 together with custom Umbraco API controllers to verify that each API endpoint is up and running and that they return the expected output.…

THE ELEMENT TYPE VS. CONTENT TREE PARADOX!

This is a follow up post on my previous article: TRULY REUSABLE BLOCKS (FROM A BLOCK LIBRARY) IN UMBRACO 9 Why are we doing this? Why do we create a base document type with our block properties…

I’m an Umbraco Certified Master on version 9

Today I completed bridging my Umbraco certification status from version 8 to the latest version 9 and I thought I would share my bridging path and experience with you.…

C# 8.0 Default interface methods in under 60 seconds!

Last week I noticed a new feature in C# 8.0 called Default Interface Methods. Although the official documentation is great, it's quite extensive so I thought I would do this really short and simple breakdown of what this feature enables.…

I'll be speaking at the Umbraco Leeds Meetup, again!

Last year I did a presentation on Unit Testing at a Umbraco Meetup in Leeds and this year I have been invited once again, but this time I'll be doing my presentation about Moving smoothly between Optimizely and Umbraco that I did a few weeks ago in Gothenburg.…

CMS and Testing presentation at a local "mini-meetup"

Yesterday me and three of my coworkers arranged a "mini-meetup" for a local university here in Gothenburg called Medieinstitutet. We each did presentations that represented our skill: Frontend, Backend (me) and QA.…

I'm a 4x Umbraco MVP

I’m happy to announce that for the 4th time in my career I’ve been awarded Umbraco MVP! Once again a huge thank you Umbraco for this lovely award and for creating such an amazing community!…

Meetup presentation summary: Umbraco, Best of Bread and Composable DXP

Yesterday I was invited to do a presentation at a meetup at Knowit in Gothenburg. The target audience for this meetup was basically anyone that wasn’t a developer and wanted to know more about the various CMS & Commerce plattforms we are partners and work with.…

Performance issue found in Umbraco 9.5.1

The other week one of our teams discovered a performance issue on one of our Umbraco v9 sites. At first, we assumed the issue was related to something in our code, but after some investigation we found that this also was an issue in a clean install of Umbraco 9.5.1.…

Microsoft MVP Award: Unboxing!

Better late than never I guess. The other day it dawned on me that I’m actually a Microsoft MVP. Like for real!…

Umbraco Package Awards 2022 Jury member

Ever wondered what the process of nominating and selecting the Package Award winners is like? 2022 was my second year on the Umbraco Package Award jury panel, and in the name of transparency and openness, I thought I would share with you what this process looks like and how we selected this year's winning packages and contributors.…

Case-sensitivity reference error when running NPM build in Azure DevOps YAML Pipeline with Ubuntu vmImage.

Yesterday I was helping our frontend team to set up a new CI workflow moving from Teamcity + Octopus Deploy to Azure DevOps pipelines and I ran into a weird issue that I thought I would share the solution to in case someone runs in to the same issue.…

Unit Testing in Umbraco 9-10.x

The other day I got a friendly heads up from Umbraco Documentation Team member Sofie Toft that the official Umbraco Unit Testing documentation had not yet been verified against the latest major version of Umbraco (v10).…

How to add a user-friendly, accessible and GDPR compliant cookie consent control to your website in less than 5 minutes using CookieTractor

Today I installed a brand new cookie consent control to my website from https://www.cookietractor.com and I thought I would share with you how quick and easy it is to add a user-friendly, accessible and GDPR compliant cookie consent control on your website in less than 5 minutes (for real!).…

How to generate a demo license file for Optimizely (Episerver) CMS

Yesterday I got a question on how to generate a demo licens for Optimizely / Episerver CMS and instead of just answering that person personally in DM I thought I’ll document it here, that way maybe someone else might benefit from this information in the future.…

Having problems installing Docker for Windows in your Azure Virtual Desktop? Here's probably why!

As I might have mentioned, I’m using a Macbook and I recently switched from using VMWare for my Windows development (.NET Framework) to Azure Virtual Desktop and I have not regretted this decision for a second. However when setting up my Azure Virtual Desktop I had som issues installing Docker and I thought I would share the solution.…

Azure DevOps Pipeline error when using latest VSTest (17.3.0) default task configurations due to incorrect path filter-casing

Yesterday I was asked to take a look at one our clients Azure DevOps pipeline that stopped working all of a sudden. No changes had been made recently but from nowhere the VSTest pipeline task throws this error (followed by a bunch of other build errors).…

How to configure a Self-Signed Server Certificate for your local development environment

A lot of the times when I am working on a clients site locally I find myself in need of a Server Certificate for my local development site. Since all the clients other environments (QA, Stage, Production etc) is running HTTPS in makes no sense to run my local site over HTTP. Also a lot of clients use Identity Providers that requires me to communicate over HTTPS to be able to authenticate so not having a certificate is not an option.…

Watch out for this when you're doing an FTP Deploy for Azure App Services

Both these configurations are "non-defaults" so they are very easy mistakes to make.…

[SOLVED, Manual action required] Performance issue in Umbraco 9-10 when using ContentModel (or ModelsBuilder models) in custom controllers.

If you are using custom controllers with ContentModel or ModelsBuilder models you will experience massive performance issues as your projects scales. This issue is tied to how ASP.NET Core performs validation on object graphs and a fix for this will be shipped but not until v11 as this is a breaking change!…

Guest appearance on YouTube show UmbraCoffee talking about performance in Umbraco

Today I joined Marcin and Callum on their awesome YouTube show UmbraCoffee to talk about my recent findings and background around the performance issue in Umbraco 9-10 (which I wrote about earlier…

Using TestRunParameters in your NUnit tests using .runsettings

I've been getting a lot of traffic lately related to the google search phrase "nunit runsettings example" which at the moment leads to this blogpost I wrote on how to use Playwright with NUnit, which doesn't really cover how to set up .runsettings but rather how you can toggle headless mode in Playwright (totally different topic). So I thought I would share a little tutorial on how you can set up a new NUnit project and use .runsettings and TestRunParameters in your tests.…

Blogging for Dev.to

Coming back from a seven month long parental leave I thought I would take up blogging because I felt during these last few months that I really miss writing, especially technical blog posts. Since English is not my first language, writing is a great way for me to practice not only my writing skills but also the way I express myself in English...…

Logging HttpRequests using DelegatingHandler with a named HttpClient and HttpMessageHandlers in Umbraco

Ever found yourself logging the same things over and over again in your Umbraco application when doing HttpClient requests? Wouldn't it be nice (if we could wake up) and all of our request where automatically logged for us in one unified way throughout our entire application?…

5th year teaching .NET Testing at local university college YRGO

Today I had the privilege of lecturing for the 5th year at Yrgo University college on the subject of .NET Testing. As always, the goal has been to give students a positive impression of testing early in their career and that writing tests is not something you "should" or "must" do but something you WANT to do because it is a fun and challenging part of being a developer.…

NUnit tests is not found or do not run in Visual Studio's Test Explorer

Having problems with your NUnit tests not running as expected in Visual Studio's Test Explorer? Even wiered, the tests might work for other members of your team but for some reason not for you?…

Comparing mocking frameworks: How to handle optional parameter with NSubstituite, Moq and FakeItEasy

Depending on which mocking framework you are using you might have to handle optional parameters differently and in this short article I will compare and demonstrate the differences in the three major mocking frameworks NSubstitute, Moq and FakeItEasy.…

Loading this assembly would produce a different grant set from other instances

The other day one of our legacy applications threw this strange error during a production deploy: "Loading this assembly would produce a different grant set from other instances". This .NET 4.6 application is a load balanced SOAP API and strangely this only occured on 1 of the 3 frontend servers so when browsing the frontend it initially seems healty but every other random request would fail and show this error.…

How to set TransactionScope timeout in code, application and server wide

The other day we got a bunch of these transaction exceptions logged on some of our production servers: "The operation is not valid for the state of the transaction". At first this exception was a bit cryptic, but when investigating it further is had this following inner exception: "Transaction Timeout".…

Loose vs. Strict mocking behaviour

I thought I would demonstrate the difference between Loose and Strict mocking behaviour when using the Moq Framework. By default when you create a new mock and don't specify a MockBehaviour it will be assigned MockBehaviour.Default, which equals to MockBehaviour.Loose.…

Moq vs. NSubstitute vs. FakeItEasy

Today I though I would do some syntax comparison between a few of the biggest Mocking Framework in .NET: Moq, NSubstitute and FakeItEasy. Although these framework have slight functional differences they pretty much do the same thing but in different syntax and lingo.…

Tutorial: How to setup a .NET Minimal API with integration testing using WebApplication Factory and NUnit

In this article I will share how you can setup an API using less than 20 lines of code using .NET Minimal API. Next we are going to setup an NUnit test project and using .NET WebApplicationFactory we will call the API endpoint and parse the resonse as an products array and compare the actual response to an expected json file embedded in our source code.…

How to become a better mentor - 24 days in Umbraco

In case you missed it make sure you read my contribution to this years 24 days in Umbraco, the yearly Umbraco advent calendar. This was my 3rd year writing for 24 days and this years edition was about how to improve yourself as a mentor for junior or aspiring developers.…

Adding an API Security Definition and Requirement using Swagger UI

In this tutorial I will cover how you can setup an API with Swagger and then add security definition and requirement to pass an api token as an http header with every API request. Lets get to it!…

Characterization Testing Explained

This is a technique I’ve been using for years but it wasn’t until recently that I realized that it actually has a specific name. Using characterization testing we lock the current behavior in one of several tests before we go refactor code (usually untested legacy) to be comfortable that our improvement didn’t break any existing behavior.…

Using the Fluent Builder Pattern to improve test readability and maintenance

Using this pattern we create an test object builder that will centralize redundant (and sometimes complex) logic that we don’t want to have in each and every one of our tests. This will make our tests slimmer and more focused on what is actually important for the state of which is being tested.…

Could not find testhost

A while back I wrote an article on this subject where you have NUnit tests not running in Visual Studio and how to fix it. In this blogpost I will share the same soluition expect with xUnit since it involves some other packages and error messages it might not be clear that it is a related issue.…

Unit Testing private methods in C#

Should private methods in C# be Unit Tested? Generally you don’t write unit tests for private methods since they are not accessed from outside the implementation class (private methods are considered implementation detail).…

Google just introduced a brand new (experimental) feature called ‘Content Ideas’ so you’ll never run out of inspiration!

This is a brand new feature (available to a selected few) in Google Search Console where you get topic ideas based on Google Search queries that are specific to your website (only available until March 28, 2023).…

Prometheus monitoring stopped working

Today our team ran into a strange issue when updating one of our Windows servers when all of a sudden our Prometheus monitoring stopped working. It turns out that this service, which should start automatically at startup, sometimes has issues starting up when Windows is performing an Windows Update forced restart.…

Add a reference to ".NETFramework,Version=x" in the "TargetFrameworks" property of your project file and then re-run NuGet restore?

Sometimes when upgrading .NET framework versions you might get this really strange error in Visual Studio: -"Add a reference to ".NETFramework,Version=v4.8" in the "TargetFrameworks" property of your project file and then re-run NuGet restore?"…

Getting started with Snapshot Testing using NUnit and Snapper

Snapshot testing is a valuable technique for testing software applications. Using this technique we can capture the state of an application at a specific point in time and compare it to a previously recorded state, known as a snapshot.…

Getting started with E2E Testing using NUnit and Microsoft Playwright

In this tutorial style article I'll cover the process of setting up a .NET 7 project and perform E2E (end-to-end) testing using NUnit and Microsoft Playwright. With these tools, you can write automated tests that run in a real browser, allowing you to perform end-to-end testing of your web applications.…

Unit vs. Integration Testing

By understanding the essential differences between unit and integration testing, we as developers can make better decisions about when and how to use each type of testing to ensure the quality and reliability of our software.…

Tech Lead Digest Issue #121

It’s come to my attention, thanks to several friendly DMs, that my article “How to become a better mentor” was featured in the #121 issue of the Tech Lead Digest: "A carefully curated weekly…

Get current assembly version of your Umbraco website

At work we use TeamCity as a part of our Continuous Deployment procedure for all of our Umbraco websites (even Umbraco Cloud) and one build step I find particularly useful is the one that we call…

Skrift Issue 69

My Unit Testing project is currently highligthed in the "Around the web" section on Skrift Magazine. It's also mentioned it in the lastet issue of their newsletter.…

Load Balancing Umbraco using Kubernetes

Something that’s been on my mind for quite some time now is how Umbraco fits in the world of Kubernetes and Containerization. See there’s this notion that Kubernetes and stateful applications such as a CMS do not go hand in hand, but what if they could?…

Knowit Experience becomes Umbraco Gold Partner

It’s official! The company that I work for, Knowit Experience, is now an Umbraco Gold Partner. Knowit Experience is the leading customer experience agency in the Nordic region with 900 experts operating in four countries.…

Bumping the Client Dependency Framework version

If you are having issues in the UI  of Umbraco (perhaps after deploying, upgrading, creating your own custom editor, using a third party package or you are doing something else that involves custom css or javascript in the back-office) an experienced Umbraco developer will most likely tell you to “Bump your CDF version!“.…

Reading your Umbraco logs using PowerShell

Call me a nerd but I prefer to do as much as possible using PowerShell these days. Even the smallest of tasks that might even go faster to go through a UI I try to find a way to do it using PowerShell.…

Make love not poor editor experiences

This is a topic close to my heart and probably one the strongest reasons why I love working with Umbraco so much. When it comes to creating amazing editor experience there's a lot of things Umbraco gives us out of the box such as grid layouts, block editing, creating custom forms etc. but there are a few things we can do ourselves to improve the experience even move.…

Why we became an Umbraco Gold Partner (Repost in Swedish)

This week I've been really busy blogging. Not only did I write three blogpost for my own blog, I also wrote a blogpost for Knowit.se on why we became an Umbraco Gold Partner.…

I’ll be speaking at the Umbraco Leeds Meetup

I’ll be speaking about Unit Testing and Umbraco at the Umbraco Leeds Meetup on the 6th of April. In this session I’ll be covering the basics of Unit Testing, how to get started and talk a little about my work with the official documentation and GitHub project on Unit Testing in Umbraco.…

Locked yourself out of Umbraco? No problem!

In Umbraco if you enter your password wrong 5 times you are locked out from the backoffice. This is usually the case when a clients calls saying they can't login (even if they deny having entered the wrong password several times)…

Five tricks to speed up your Unit Testing today

One of the main reasons I hear for not writing tests is -"We don’t have the time!" and that it feels like it would take longer time to write code with test than without. But there are a few tricks you can apply to speed up your Unit Testing today.…

Stress-free production deployments

I remember in the early days of my career the stress I would have before each production deploy. I never had a good feeling in the stomach on those days, constantly fearing that something would blow up or even worse: that data would be lost forever! Today I work with some of the biggest clients in the country and deploying to production is as stress-free as getting a cup of coffee. Here's how!…

Getting started with Unit Testing #1: Start fresh!

A lot of developers who embark on the Unit Testing journey will go: -"Okay, I'll write a test in my current project just to see how it feels!". This is almost always a bad idea and chances are you’re going to get stuck and give up. And here's why..…

Getting started with Unit Testing #2: Don't get stuck!

A mistake you might do as a beginner tester (I probably did it myself in the beginning) is that you start of hopefully to a great start, testing is going great and you think you’ve got the hang of it…

I hosted an Umbraco meetup at Knowit Experience

The session was called “A non-technical presentation of a technical platform” and it was a “no tech-lingo” session targeting sales, marketing and people in direct contact with end clients.…

NUnit vs. xUnit

The endless battle between the two testing frameworks NUnit and xUnit is a hot potato and in this blog post I intend to give my two cents on this topic.…

Unit Testing Regular Expressions

Not only are unit tests great for securing the behaviour of your code but they also serve as form of living documentation and one area where I find this especially true is when covering regular expressions with your unit tests.…

Umbraco Leeds Meetup Summary

So yesterday was finally the day for my presentation at the Umbraco Leeds Meetup about “Getting started with Unit Testing in Umbraco”.…

Unit Testing an Url Segment Provider in Umbraco

Using an IUrlSegmentProvider you can modify the url segment that Umbraco generates for any piece of content based on whatever conditions you like. This week I created a test example for this ProductPageUrlSegmentProvider and updated the GitHub project and I'll be submitting a PR to the Unit Testing documentation.…

Testing Umbraco Composers

Something I’ve been wanting to write a test for but haven't come around to yet is the Umbraco Composer that was introduced in version 8. This could look something like this.…

Overriding the preview feature in Umbraco

When building a headless solution your Umbraco installation might serve as an API and does not have any frontend attached to it. In those cases the default preview feature in Umbraco could become useless.…

I’m a speaker at Umbraco Codegarden 2021

This week I got some exciting news: My session on “Getting started with Unit Testing in Umbraco” has been accepted for Umbraco Codegarden 2021!…

Showing a maintenance banner on your Umbraco site

Something we do for most of our sites is setting what we call a deploy flag during our deployments and then have our frontend render a maintenance banner at the top of the website. By showing a maintenance banner we can inform the visitor that at the moment we are performing planned maintenance and that they might experience disturbances.…

I’m an Certified Umbraco Content Manager

As an Umbraco MVP one of many benefits is a free certification course of your choice. Since I've already taken all the certifications there is from a developers perspective, I chose to sign up to the Content Management Course.…

Starting a new Umbraco project

This week I was curious to hear how the community prefers to start new Umbraco projects so I started a poll on Twitter, and the results from that poll will be revealed at the bottom of this post. But first I thought I would cover the different option and give my two cents on each alternative.…

Preparing for Codegarden 2021

I got a bit of a wakeup call today when I realized that Codegarden 2021 is less than three weeks away! As I’ve mentioned in a previous post, this year I will host a session at Codegarden on Getting started with Unit Testing in Umbraco.…

Knowit Experience won Umbraco Awards: Best Designed Site

Last weeks Codegarden started on Wednesday with the Umbraco Awards and we were very happy when it was official that Knowit Experience won first price in the category "Best Designed Site" with the site for GöteborgsOperan.…

I’m a 3x Umbraco MVP

As mentioned at last week was Codegarden, the official Umbraco Tech-conference, Knowit Experience won an Umbraco Award for Best Designed Site for Opera.se. Not only that, but I was also one of the lucky ones to receive an Umbraco MVP (Most Valuable Person) Award. This was the third time in my career that I’m awarded Umbraco MVP which feel unreal just to be saying. I feel just as proud and grateful today as I did the first time back in 2016.…

Testing the untestable with the Adapter Design Pattern

During my session at last weeks Codegarden on ‘Getting started with Unit Testing in Umbraco’ I got a really good question in the Q&A afterwards, and I thought I would share the question and elaborate on my answer: -“What tips do you have for mocking services that are overly complex or have lots of dependencies that can't be null?”…

Umbraco v9 findings

This week I had a little room left in my schedule for studying new tech and obviously I took that time to get up to speed on Umbraco’s new major version built on dotnet core.…

Mocking Property Values in Umbraco 9 (and Umbraco 8)

So I just got back from my summer vacation and I thought I would kickstart this blogging thing with a short and straight-forward blogpost that's easy to digest for anyone (like me) coming back from a long break from coding.…

Mocking the UmbracoHelper in Umbraco 9

I’ve always had somewhat of a love-hate relationship with the UmbracoHelper, mostly because until recently it has been a lot of work mocking this little helper. Until now!…

Rendering products from an external source using a ContentFinder in Umbraco 9

This week I found the time to experiment more with my Umbraco 9 Demo Site, and this time I wanted to build the products section that most Umbracians are familiar with from the original demo site from…

Putting Umbraco 9 to the test

In case you missed it, I wrote a blogpost recently for Umbraco.com sharing some of my initial thoughts and findings when exploring the new Umbraco 9 version.…

Get started with Umbraco 9

I was invited to join the celebration of the new Umbraco 9 version recently and in the Umbraco 9 Launch Extravaganza had prepared a little presentation on how to get started with Umbraco 9.…

Troubleshooting a pending pod in a Kubernetes cluster (AKS)

Last week I had an interesting issue with one of our clients AKS clusters, and in the spirit of sharing I thought I would document the solution and share my findings. I find that when it comes to issues in Kubernetes it’s usually not the solution itself that is the tricky part, which is usually just a single command line, but rather finding information and troubleshooting that I find is the most interesting to read about.…

Teaching Unit Testing at a local University College

Today I had the pleasure of lecturing .NET Unit Testing at YRGO, a local University College in Gothenburg. This was actually the fourth year lecturing at YRGO and it’s something I really enjoy doing next to my “regular” work assignments. This session was based a lot on my session from my CodeGarden talk earlier this year.…

Unit Testing with AutoFixture to generate TestCase data

When writing unit tests I often find myself having to come up with these kind of random test case data. But I recently discovered a package called AutoFixture which not only replaces all of the test case data in my tests but also saves me the trouble of having to come up with these random values myself.…

The Umbraco 9 Unit Testing Documentation

By the end of last week I got my #hacktoberfest pull request to Umbraco merged and this morning it was finally live: The Umbraco 9 Unit Testing Documentation!…

Knowit Experience becomes Umbraco Contributing Gold Partner 2021

Finally it’s official! Knowit Experience Sweden just got awarded Umbraco Contributing Gold Partner 2021!…

Site Variables in Umbraco 9

Lately I've been experimenting with a concept of Site Variables in Umbraco 9 which I thought I would share with you today.…

Using Microsoft Playwright and NUnit to automate search behaviour

I have been experimenting a lot with different UI testing frameworks such as Selenium, Cypress and Playwright in a public GitHub project and I’ve really come to fancy Microsoft.Playwright for .NET in combination with NUnit.…

Skrift Issue 79

Big thank you Skrift Magazine for currently featuring my blog post on Umbraco Project Structure in you "Around the web" section!…

Comparing different UI Testing frameworks (Selenium, Cypress and Microsoft Playwright)

So I decided that 2022 would be the year when I will start to implement more UI Testing in my projects. But, which framework should I choose?…

Trust your tests!

Tests are meant to replace our browser clicking and instead give us instant and reliable feedback if our code is working or not. The browser is just a presentation layer. Trust your tests!…

Testing an Umbraco Dictionary value using ICultureDictionary and UmbracoHelper

This week I finally found time to work on converting the Umbraco Unit Testing documentation from v8 to v9. The v9 version had some basic examples that I created a while back, but I want to bring all the examples from the v8 version in to the lastest version.…

Integrating Papertrail logging in a .NET (NLog) application

I’ve really come to enjoy Papertrail as an online log viewer. It’s super quick to setup and I can manage and view logs from multiple project and environments in one simple UI with searching, filtering etc.…

THE OPTIMIZELY DEVELOPERS GUIDE TO UMBRACO

Next week I'll be doing a talk at Knowit on how to move smoothly between Optimizely (Episerver) and Umbraco from a developers perspective. This is a presentation I've planned on doing for years and finally got around to.…

How do you pronounce Umbraco?

Last week I created a Twitter poll to try to get an answer to how most community members pronounce Umbraco.…

UmbraCoffee Guest Appearance

One thing I've always wanted to do is be a guest on UmbraCoffee, the weekly YouTube show focused on the world of Umbraco. So when Marcin reached out and asked if i wanted to be part of episode #154 it was a no-brainer. So now I can finally cross that one of my bucket-list.…

24 days of Umbraco: Your first pull request

You know that warm feeling you get when you’ve submitted a pull request to Umbraco and now you just got it approved and it's ready to be merged.. No? You’ve never done a pull request to Umbraco? Don’t worry, we’re about to change that today.…

Top 10 GitHub Contributor

I made the 2020 Top 10 GitHub Contributors list for the Umbraco Documentation, finishing on 7th place. This was announced on Umbraco.com’s blog by Sofie Toft Kristensen:…

Differences found when upgrading Umbraco 9 from BETA-003 to RC-004.

Earlier this month I finally had some time to upgrade the Umbraco 9 Demo site from the beta to the latest RC version, and while doing so I got some breaking changes that I had to adjust the code in order for my project to work, and I thought I would share these finding in this really small blogpost.…

I'm a Microsoft MVP 2022!

Last week I opened my email and got a very pleasant surprise: I've been awarded Microsoft MVP 2022!…

Umbraco project structure

Recently I got to lay the foundation for a new Umbraco 9 project and so I started to question and think about the setup I have been using so far and if it might be possible to improve somehow.…

Truly reusable Blocks (from a Block Library) in Umbraco 9

As your are probably aware of, Umbraco does not have reusable blocks out of the box. However, there are tricks to how you can enable reusable blocks in Umbraco and in this blogpost I’m going to show you how. And it doesn’t even require any coding, all of this is configurable from the back-office.…

Bread and Butter Testing

Ever heard the expression Bread and Butter Testing? Based on a quick Google Search I wouldn’t be too surprised if you haven’t and it could very much be a local expression* but I thought I would share what this expression means and how you may use it.…

How to test internal classes

When you're writing unit tests you may sometimes find yourself in a situation where you need to be able to access an internal class from within another project such as your *.Tests project.…

MVP Holiday Care Package

Today I recived a package from Odense, Denmark from the lovely Umbraco HQ. Every Umbraco MVP (Most Valued People) recived a New Years package just as we did for Christmas. Mine however arrived 2 weeks after New Years, for which I can thank the Swedish Postal Office for their crappy service.…

Rotating certificates in Azure Kubernetes Service (AKS)

Every once and a while certificates on the Azure Kubernetes Service need to be rotated. If you dont you will receive this error when you try to connect to a cluster.…

Umbraco Cloud performance

I must say I'm impressed with the performance of this website. This site is built with the Articulate blog plugin and it’s resting on Umbraco Cloud.…

Getting started with Unit Testing in Umbraco just got a whole lot easier!

Around two years ago Umbraco version 8 was released and I was scanning the internet trying to find some documentation on how to do Unit Testing in version 8, without any luck. No examples or tutorials had yet to be made for this and the official documentation did not have a section on Unit Testing. So I thought: How hard can it be?…

Parallelism: NUnit vs. xUnit

Running your tests in parallel can significantly improve the speed of your test runs, but it could give you occasional problems especially if you're working on static implementations. Also turns out that depending on which testing framework you're using parallelism might be handled differently.…

Contribution of the week

My little side-gig was featured in this weeks episode of #UmbraCoffee as “Contrib of the week”. Thank you so much for highlighting it and for all your kind words.…

Starting to Unit Test: Not as Hard as You Think

I thought I would share a recommendation for a really great book that I think anyone who is new to Unit Testing should read: Starting to Unit Test: Not as Hard as You Think by Erik Deitrich. I read this book many years ago but I remember it to this day because it was an eye opener to what Unit Testing essentially is.…

Umbraco Unit Testing Updated: February 1, 2021

I had a little sparetime yesterday so I extended the UmbracoUnitTesting project with three additional tests examples and so I've also submitted these tests as a pull request to the Umbraco Documentation.…

API Testing using Test Driven Development (TDD)

This week I’ve been working on an integration to an external provider used for newsletters subscriptions and I’ve realised that if there’s one area where TDD is a match made in heaven it’s when you're doing API Testing.…

Using Umbraco Health Checks as Integration Tests, Revisited!

Almost every one of our projects moves towards a microservice architecture and our applications are rarely these huge web apps anymore, but instead they are a bunch of applications working together in a cluster of apps.…

Docker Deep Dive

I want to recommend a really great book for anyone who wants to learn or become better at Docker. See I’m not a Docker ninja, I’ve fiddled with Docker on a few occasions but I never really had the pleasure of being involved in a project where I would need to use it. So my knowledge hasn’t really gone any deeper than the basics.…

HasValue is not a nullcheck

I stumbled across this “issue” a while back when one of our sites would break for mysterious reasons which turned out to be related to how we'd used the HasValue extension method.…

UmbraCoffee #162

The guys at UmbraCoffee Marcin and Callum are the best. Last Friday some of my blog posts where highlighted under a new section of the show called “Adolfi Appreciation Time”.…

Configuring a TLS certificate in Kubernetes

This week I was given the assignment to update a TLS certificate on one of our Kubernetes clusters from a .pfx file and so I though I would share how I solved it and hopefully it can help someone else in the same situation.…

Fixing "the data was truncated" error on an Umbraco Label

If you need to display readonly data in Umbraco the datatype you are looking for is the Label datatype. With this datatype it is not possible to input a value for an editor in the back-office of Umbraco, but you can get & set this value through the ContentService API.…

How I migrated my Umbraco 8 website to Umbraco version 13

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue metus eu ex varius, eget egestas est cursus. Proin maximus urna eget odio lacinia, id cursus lorem pretium.…