Developer Consultant Educator

Eric has a broad experience that covers topics from ZX Basic to .NET. With projects spanning from business applications to nuclear power plant systems he developed the ability to adapt and evolve with the rapid changes in the tech landscape.

Eric Johansson

That knowledge is something that he shares freely as a content creator and public speaker. Eric is passionate about making complex topics accessible to all level of learners, which you can see in his style of teaching in his livestreams, tutorials and conference sessions.

Apart from being a techie, he's also a servant to Zelda, an adorable cat.

  • Microsoft MVP Award
  • Progress Telerik Champion Award

Latest Posts

Unable to load blog posts. Please try again later.

Open Source

Blazor Blocks

Blazor Blocks is a WYSIWYG block editor for Blazor.

There are quite a few "simple" WYSIWYG editors, but I was missing a way of laying out and creating fully responsive pages, not just blocks of text and images.

Blazor Blocks introduces the concept of a block, which is a self contained type of content rendered, which can be placed in columns and rows of your own design. It's a bit like a page builder, but for Blazor. Some examples of blocks are normal WYSIWYG editors, images, titles, code, quotes, video links, embeddable content and more.

The entire project is built with 0 dependencies, which means that while it comes with a default set of row and column definitions, it is easy to substitute them for your own.

While the project isn't on Nuget quite yet, you can find the source code at GitHub. The project is actively taking Pull Requests and contributions.

Blazor Blocks

Deepgram .NET SDK

Deepgram is a speech-to-text service that is easy to use and has a great free tier. What they didn't have was a great .NET API; what they had was basically a direct port of their NodeJS API, which was not very .NET friendly and didn't follow common design patterns in .NET.

Me and a few others have, with Deepgrams blessing, worked on creating a new SDK for using Deepgram from .NET.

You can find the official repository at GitHub.

Deepgram .NET SDK

String.Until / String.SubstringOrShorter

A small and simple package available on Nuget.

String.Until is an extension method for the string class which will look for a character or substring and then return everything up to that point. If nothing is found, it returns the full string.

String.SubstringOrShorter is an extension method that works like Substring but won't throw an exception if the requested string length is outside of the strings length.

Both of these are very simple to implement yourself, but also annoying to keep doing over and over.

Find the Thindal.Strings package on nuget.org, or look in your packages.

String.Until / String.SubstringOrShorter

Extensions

Don't Doxx Yourself

It's easy to mess up when streaming, presenting or showing code. Lower the risk by hiding your configuration values until you actually decide to show them.

This extension hides all values in xml and json files. You can click a button to toggle the boxes so you can edit the values, but if you close & reopen the file the values are hidden again.

The schema is always visible even when the values are hidden.

Example showing what Don't Doxx Yourself looks like

Get NoDoxx at the Visual Studio Marketplace or contribute to the project on GitHub.

Don't Doxx Yourself

Conferences, Sessions and Talks

The road taken; from Framework to .NETx

Do you have a .NET Framework project out there that's really looking to be updated to dotnet? Have a look at the path we chose when upgrading a production web shop running on WebForms with every imaginable anti pattern, into a modern framework with a MVC public site and a Blazor administration interface. On this trip we will go through subjects like analysis, planning, architecture, some best practices and what will you need to do to move it from on premise or Infrastructure As A Service to a fully managed Platform hosted solution.

Find the slides and the Demo application on GitHub.

The road taken; from Framework to .NETx

From Chaos to Order - Using the Repository Pattern the Right Way

If you've ever struggled with your data access being a mess, hard to follow, and even harder to test, perhaps using the tried and true Repository pattern might be the right choice for you!

In this beginner-friendly and code heavy session, we will break down the principles behind the repository pattern and how combining it with other patterns like Unit Of Work will make sure that you keep our data consistent, robust and testable.

In the end, we will dive into some code examples and have a working, basic implementation of a repository with the necessary plumbing for your next application.

Find the slides and the Demo application on GitHub.

From Chaos to Order - Using the Repository Pattern the Right Way

Turning the Dynamic Static

While it's easy to host dynamic websites with different SPA frameworks and Azure Function calls, a static HTML website will often come out ahead when it comes to loading speed and SEO since they are smaller and do not require any backend calls.

By using open-source tools and Blazor with the right render mode, you can build a dynamic website hosted on your development computer or homelab server. Once the site is built, it can be exported to pure HTML, removing the need for dynamic server calls, making the website lightweight and SEO-friendly. This combination of Blazor and static HTML provides the best of both worlds: dynamic content during development and fast, static pages for the end-user.
And even keep some dynamic content too!

This is how I constructed my personal website supporting daily updates and dynamic content, using minimal dynamic logic.

Turning the Dynamic Static

Angular & Blazor — A Comparative Guide to Key Features and Functionalities

There are a lot of options when it comes to front end frameworks in your .NET stack. Let’s take a closer look at two very popular options, Blazor and Angular. We are going to walk through some demos live for how to do very basic things like routing, event and data binding, and deferred loading. Once the basics are covered we’ll move on to more complicated and exciting horizons, like SSR, Hydration, and Partial Hydration.

Alyssa Nicoll is a Senior Developer Advocate at Progress and a Google Developer Expert for Angular who is passionate about bridging gaps in technology, specializing in web development, particularly in Angular, .NET MAUI, and UI/UX Design.
Eric Johansson is... Me!

Specific Angular & Blazor topics we will cover:

  • Architecture
  • Routing
  • Control Flow
  • Data & Event Binding
  • Deferred Loading
  • SSR (Server Side Rendering) 🔥
  • Hydration & Prerendering
Angular & Blazor — A Comparative Guide to Key Features and Functionalities

Livecoding: Doing What You’re Good At In Front Of People

Platforms like YouTube, LinkedIn, Twitch and Facebook have become integral parts of our professional lives. Our colleagues are everywhere, sharing their expertise and learning from each other.

Imagine rubber ducking in front of tons of people who will actually help you out and come up with ideas, not to mention all the rewarding technical discussions we can have while getting things done! You couldn’t ask for a better pair programming experience.

Personally, I suffer from social phobia – I hate showing off, I hate being singled out and I hate having my actions judged. So what was I thinking when I started speaking in front of people? I started streaming my work as a form of therapy. I decided to do something I knew a lot about and where I felt secure, and pushed my limits. In the end, I ended up in front of people!

After a short theoretical introduction, we will move on to a more practical exercise where we’ll set up for streaming from start to finish, and in the end actually go online!

Leverage and expand your network to grow both your professional and personal life!

Livecoding: Doing What You’re Good At In Front Of People

Running Blazor outside of ASP.NET

Sometimes you need to host your Blazor application outside of an environment you can fully control. Maybe it's on a website that isn't running ASP.NET. Maybe it's in an entirely different language. Maybe it's a CMS where you don't even have access to upload raw files. So how do we get Blazor to work properly when we can't control the deployment environment?

This session goes through lessons learned and problems faced when building an application hosted on one domain, and running it on a separate website on an entirely different domain. Come along for a ride from wondering why your scripts are throwing errors to a website with dynamic content built on Blazor!

Running Blazor outside of ASP.NET

Swetugg

Swetugg is a conference for .NET developers, by .NET developers. Held twice per year, once in Stockholm and once in Gothenburg, it reaches hundreds of developers in the Nordics and beyond.

For Swetugg, I am a part of the groups responsible for selecting speakers & scheduling, the website and the afterparty.

Read more, book your tickets and take part of two wonderful days in one (or both!) of Swedens largest cities filled to the brim with knowledge, facts, fun and networking. And there's food, entertainment and other silly things too!

Swetugg

Fun stuff

Dotnet Bacon

Do you like bacon and/or eggs? If that feels like you, then you might like this project.

Learn how to build a .NET tool, how to execute LUA code and how to write a source generator in the tastiest way possible. With bacon!

To use the tool yourself, you can install it from the terminal with dotnet tool install -g dotnet-bacon

Follow up with running the tool with either dotnet bacon or for some extra tasty, use dotnet bacon egg.

If it's not obvious, this is a gag project for testing some technology, but it is published and fully working, and you can find the source for dotnet bacon on GitHub.

Dotnet Bacon