# Henrik Lau Eriksson

Henrik Lau Eriksson on the conduct of code

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Creating custom PowerToys Run plugins

DevFeed: [Creating custom PowerToys Run plugins](<https://devfeed.tech/articles/creating-custom-powertoys-run-plugins-20777.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/creating-custom-powertoys-run-plugins/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2024-02-13T22:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Microsoft PowerToys](<https://devfeed.tech/topics/powertoys.md>), [Development](<https://devfeed.tech/topics/development.md>), [Visual Studio](<https://devfeed.tech/topics/visual-studio.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [WPF](<https://devfeed.tech/topics/wpf.md>), [NuGet](<https://devfeed.tech/topics/nuget.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [github](<https://devfeed.tech/tags/github.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [net](<https://devfeed.tech/tags/net.md>), [nuget](<https://devfeed.tech/tags/nuget.md>), [nuget-package](<https://devfeed.tech/tags/nuget-package.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [powertoys](<https://devfeed.tech/tags/powertoys.md>), [run](<https://devfeed.tech/tags/run.md>), [visual-studio](<https://devfeed.tech/tags/visual-studio.md>)

### AI overview

A step-by-step guide to creating community plugins for PowerToys Run, covering project setup, Visual Studio, WPF dependencies, metadata, and NuGet packages.

### Source excerpt

A step by step guide on how to create community plugins for PowerToys Run

## Retry flaky tests with dotnet test and PowerShell

DevFeed: [Retry flaky tests with dotnet test and PowerShell](<https://devfeed.tech/articles/retry-flaky-tests-with-dotnet-test-and-powershell-20782.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/retry-flaky-tests-with-dotnet-test-and-powershell/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2023-03-26T19:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [PowerShell](<https://devfeed.tech/topics/powershell.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Smoke Tests](<https://devfeed.tech/topics/smoke-tests.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [Selenium](<https://devfeed.tech/topics/selenium.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [cli](<https://devfeed.tech/tags/cli.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dotnet](<https://devfeed.tech/tags/dotnet.md>), [flaky](<https://devfeed.tech/tags/flaky.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [mstest](<https://devfeed.tech/tags/mstest.md>), [nunit](<https://devfeed.tech/tags/nunit.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [powershell](<https://devfeed.tech/tags/powershell.md>), [retry](<https://devfeed.tech/tags/retry.md>), [selenium](<https://devfeed.tech/tags/selenium.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>), [xunit](<https://devfeed.tech/tags/xunit.md>)

### AI overview

This tutorial presents a PowerShell script that uses dotnet test and TRX result files to track failed tests, retry them, report the final result, and allow a configured percentage of failures. It demonstrates the script with NUnit, MSTest, and xUnit.

### Source excerpt

Introducing test.ps1, a script for running flaky tests - Keeps track of failing tests and retries them - Notifies the test framework of the current retry iteration - Makes it possible to accept a certain percentage of failing tests - Outputs the test result in a coherent way

## Introducing LoFuUnit

DevFeed: [Introducing LoFuUnit](<https://devfeed.tech/articles/introducing-lofuunit-20780.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/introducing-lofuunit/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2019-12-29T19:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>)

Tags: [bdd](<https://devfeed.tech/tags/bdd.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [net](<https://devfeed.tech/tags/net.md>), [nuget](<https://devfeed.tech/tags/nuget.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This tutorial introduces LoFuUnit, a .NET and C# testing framework based on local functions. It demonstrates writing unit and BDD-style tests, using NUnit integration, and creating auto-mocked tests with LoFuUnit.AutoNSubstitute.

### Source excerpt

Testing with Local Functions in .NET / C# with your favorite Unit Testing Framework

## Introducing Jekyll URL Shortener

DevFeed: [Introducing Jekyll URL Shortener](<https://devfeed.tech/articles/introducing-jekyll-url-shortener-20779.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/introducing-jekyll-url-shortener/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2018-11-01T06:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [hosting](<https://devfeed.tech/topics/hosting.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [dns](<https://devfeed.tech/tags/dns.md>), [domain](<https://devfeed.tech/tags/domain.md>), [github-pages](<https://devfeed.tech/tags/github-pages.md>), [google-analytics](<https://devfeed.tech/tags/google-analytics.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [http](<https://devfeed.tech/tags/http.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [repo](<https://devfeed.tech/tags/repo.md>)

### AI overview

A tutorial on creating a personal URL shortener with a Jekyll and GitHub Pages template repository. It covers domain configuration, repository setup, short-link creation, and tracking with Google Analytics, and explains that redirects use an HTML HTTP-REFRESH meta tag rather than HTTP redirect status codes.

### Source excerpt

Building a URL Shortener with Jekyll and GitHub Pages

## Easy Approach to Requirements Syntax and the segue to Behavior Driven Development

DevFeed: [Easy Approach to Requirements Syntax and the segue to Behavior Driven Development](<https://devfeed.tech/articles/easy-approach-to-requirements-syntax-and-the-segue-to-behavior-driven-development-20778.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/easy-approach-to-requirements-syntax-and-the-segue-to-behavior-driven-development/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-07-31T20:00:00Z

Content type: article

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Requirements](<https://devfeed.tech/topics/requirements.md>), [Behavior-driven development](<https://devfeed.tech/topics/bdd.md>), [Specifications](<https://devfeed.tech/topics/specifications.md>), [User Stories](<https://devfeed.tech/topics/user-stories.md>)

Tags: [bdd](<https://devfeed.tech/tags/bdd.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [event](<https://devfeed.tech/tags/event.md>), [feature](<https://devfeed.tech/tags/feature.md>), [features](<https://devfeed.tech/tags/features.md>), [format](<https://devfeed.tech/tags/format.md>), [precision](<https://devfeed.tech/tags/precision.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [simple](<https://devfeed.tech/tags/simple.md>), [specflow](<https://devfeed.tech/tags/specflow.md>), [specifications](<https://devfeed.tech/tags/specifications.md>), [state](<https://devfeed.tech/tags/state.md>), [test](<https://devfeed.tech/tags/test.md>), [user-stories](<https://devfeed.tech/tags/user-stories.md>)

### AI overview

The article introduces Easy Approach to Requirements Syntax (EARS) as a structured way to write requirements and examines how its templates may help translate user stories and acceptance criteria into Behavior-Driven Development tests. It describes five requirement types and the problems EARS aims to reduce, including ambiguity, vagueness, complexity, omission, duplication, wordiness, inappropriate implementation detail, and untestability.

### Source excerpt

I was attending a conference six months ago and listened to a talk about quality. During the talk, I was introduced to EARS -- Easy Approach to Requirements Syntax. This way of writing requirements struck a chord with me, given my prior experience reading and writing requirement specifications.

## Managing content for a JAMstack site with Netlify CMS

DevFeed: [Managing content for a JAMstack site with Netlify CMS](<https://devfeed.tech/articles/managing-content-for-a-jamstack-site-with-netlify-cms-20781.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/managing-content-for-a-jamstack-site-with-netlify-cms/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-06-30T12:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Jamstack](<https://devfeed.tech/topics/jamstack.md>), [Content Management System](<https://devfeed.tech/topics/cms.md>), [Netlify](<https://devfeed.tech/topics/netlify.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [azure functions](<https://devfeed.tech/topics/azure-functions.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>)

Tags: [azure-functions](<https://devfeed.tech/tags/azure-functions.md>), [cms](<https://devfeed.tech/tags/cms.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [github](<https://devfeed.tech/tags/github.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jamstack](<https://devfeed.tech/tags/jamstack.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [modern-web-development](<https://devfeed.tech/tags/modern-web-development.md>), [netlify](<https://devfeed.tech/tags/netlify.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

A tutorial on using Netlify CMS as a headless, Git-based content management system for a JAMstack site built with Hugo, jQuery, and Azure Functions. It explains the architecture, setup steps, GitHub OAuth configuration, and required site code changes.

### Source excerpt

Content for the modern web development architecture:

## Building a JAMstack site with Hugo and Azure Functions

DevFeed: [Building a JAMstack site with Hugo and Azure Functions](<https://devfeed.tech/articles/building-a-jamstack-site-with-hugo-and-azure-functions-20776.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/building-a-jamstack-site-with-hugo-and-azure-functions/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-05-31T20:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Jamstack](<https://devfeed.tech/topics/jamstack.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [azure functions](<https://devfeed.tech/topics/azure-functions.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>), [API](<https://devfeed.tech/topics/api.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [azure](<https://devfeed.tech/tags/azure.md>), [azure-functions](<https://devfeed.tech/tags/azure-functions.md>), [build-times](<https://devfeed.tech/tags/build-times.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jamstack](<https://devfeed.tech/tags/jamstack.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [performance](<https://devfeed.tech/tags/performance.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on building a JAMstack site with Hugo, jQuery, and Azure Functions. It explains how Hugo generates markup, jQuery provides client-side JavaScript, and Azure Functions implement APIs, using a jam-recipe site as the example.

### Source excerpt

Modern web development architecture:

## Serverless with Azure Functions

DevFeed: [Serverless with Azure Functions](<https://devfeed.tech/articles/serverless-with-azure-functions-20784.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/serverless-with-azure-functions/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-04-30T10:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [azure functions](<https://devfeed.tech/topics/azure-functions.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [azure](<https://devfeed.tech/tags/azure.md>), [azure-functions](<https://devfeed.tech/tags/azure-functions.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [cli](<https://devfeed.tech/tags/cli.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [github](<https://devfeed.tech/tags/github.md>), [nuget](<https://devfeed.tech/tags/nuget.md>), [serverless](<https://devfeed.tech/tags/serverless.md>)

### AI overview

A practical account of migrating an ASP.NET Core Web API to Azure Functions. It explains using the Azure Functions CLI for local project creation, development, testing, running, and debugging, then deploying the project to Azure Functions with continuous deployment through GitHub. The article also discusses Azure Functions support in the CommandQuery packages and managing dependencies to match the hosting environment.

### Source excerpt

I set out to learn about Azure Functions and this is the knowledge I have gathered so far.

## Secure and explore ASP.NET Core Web APIs

DevFeed: [Secure and explore ASP.NET Core Web APIs](<https://devfeed.tech/articles/secure-and-explore-asp-net-core-web-apis-20783.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/secure-and-explore-aspnet-core-web-apis/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-03-31T21:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [Web APIs](<https://devfeed.tech/topics/web-apis.md>), [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [Postman](<https://devfeed.tech/topics/postman.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [API](<https://devfeed.tech/topics/api.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [asp-net-core](<https://devfeed.tech/tags/asp-net-core.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [postman](<https://devfeed.tech/tags/postman.md>), [rest](<https://devfeed.tech/tags/rest.md>), [swagger](<https://devfeed.tech/tags/swagger.md>), [web-apis](<https://devfeed.tech/tags/web-apis.md>)

### AI overview

A tutorial on creating an ASP.NET Core Web API, securing its controller actions with JSON Web Tokens, and exploring the API through Swagger UI and Postman. It also describes JWT configuration and request-pipeline setup.

### Source excerpt

How to create a ASP.NET Core Web API, secure it with JSON Web Tokens and explore it with Swagger UI and Postman.

## Automocking and the Dependency Inversion Principle

DevFeed: [Automocking and the Dependency Inversion Principle](<https://devfeed.tech/articles/automocking-and-the-dependency-inversion-principle-20775.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/automocking-and-the-dependency-inversion-principle/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-02-28T20:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [IoC (Disambiguation)](<https://devfeed.tech/topics/ioc.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [framework](<https://devfeed.tech/tags/framework.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [testing](<https://devfeed.tech/tags/testing.md>), [xunit](<https://devfeed.tech/tags/xunit.md>)

### AI overview

This tutorial explains how to adapt an automocking base class for C# code that uses internal classes. It shows how friend assemblies, public interfaces, an IoC container, and injected real or fake dependencies can support unit testing while preserving dependency inversion.

### Source excerpt

I had reason to revisit the automocked base class from a previous blog post. I am working with another code base and have new opportunities for automocking. We have a lot of internal classes. Approximately 30% of the classes are marked as internal. The old approach did not work anymore.