Johan Smarius

Johan Smarius

Project Lead Developer @ Bergler

I am an experienced (lead) software developer and architect for .NET solutions and a teacher for software development. I love clean coding and test-driven development.

Current sessions

Building a MicroService with an Onion architecture

Building a web service in .NET is easy. Most of us are familiar with a layering architecture to split the code into service and data layers. In this session, I will present a different approach in which the domain objects are really at the center of your microservice,


Applying Domain Driven Development in .NET

As a .NET developer, you are used to working with objects and layers. On the internet you read and more about the (not so) new kid on the block: Domain Driven Development. In this session, I will talk you through the most important aspects of Domain Driven Development and I will show you a sample implementation in a .NET solution.


Defensive Coding in C#

In this session, I will show you have you can write better code that is easier to maintain and more resilient against unexpected situations.


Docker for .NET Developers

You have been developing in .NET for some time now and you have heard some stories about containerization and Docker. In this session, I will show you what Docker can do to help you build better software in both greenfield and brownfield applications.


GIT For TFS Users

A lot of projects still use TFS version control for source code management. In the last few years, many companies are migrating to GIT. In this talk, I will bring you up to speed on the important aspects of GIT, so that you can start applying GIT in your day to day work.


Hands-on Test Driven Development in .NET

Test-driven development has been around for some time now. Many organizations still do not use the test-driven development approach. In this workshop, we practice test-driven development in a hands-on scenario. During this session, you can practice the techniques on your own laptop. A Visual Studio 2017 solution for the full .NET framework and .NET Core will be provided.


Practical Design Patterns for everyday development

Design patterns have been around for many years. In many projects, they are still used sparingly. In this talk, I will show you some practical design patterns in .NET you can easily use in your day-to-day development. Using these design patterns will give you the knowledge to write more solid code.


How to apply Test Driven Development in .NET

Test-driven development has been around for some time now. Many organizations still do not use the test-driven development approach. In this talk, we will discuss how you can get started with test-driven development in green field and legacy projects. Prior experience with test driven development is not required.


Writing beter code with Visual Studio 2017

There are a lot of features in Visual Studio that can help you write better code. In this talk, I will show you how you can use Visual Studio and some free add-ons to help you write better and easier to maintain code.

In a lot of teams, peer code reviews are used to validate the quality of the code. In these reviews, you would like to focus on the difficult parts of the code. Most teams, however, spent a lot of time checking the basic structure of the code due to the lack of automated support for simple checks and then find themselves out time to spent time on the more interesting parts. There are a lot of features in Visual Studio that can help you write better code and validate your code in an early phase so you get early feedback on the quality of the code you are writing. In this talk, I will show you how you can use Visual Studio and some free add-ons to help you write better and easier to maintain code.

You will learn how you can:
- easily enforce coding guidelines within your team
- learn to master different and new coding constructs
- apply refactorings to your code
- use live and static code analysis to automatically analyze the basic quality of your code and how you can tune the analysis to your team’s rules
- use code metrics to calculate the quality of your code
- use code coverage and live unit testing to verify how much code you actually test using automated tests

I will not bore you with a lot of PowerPoint slides, we will spend most of our time in Visual Studio.


Test Driven Development in .NET Core

You like .NET Core and you have written some unit tests in the past. In this talk, I will show you how we can join these worlds. I will show you how you can test controllers, middleware, regular code and Entity Framework Core code.


Managing state in Blazor Applications

You have experimented with Blazor and now you are ready to build a real app with it. In a real complex app, you have to consider how you can manage state within your app. In this talk, I will cover some of the options you have and the advantages and disadvantages of every choice.


Introduction into Blazor

Blazor is an experimental technology to run C# in the browser. In this session, I will show what you can do with Blazor today. In this talk, I will build a small application to demo the different features of Blazor. I will also cover the differences between Blazor and Razor Components. After this session, you will have enough knowledge to start experimenting with Blazor on your own.


Hosting your .NET Core app on Heroku

Je hebt een kleine .NET Core Webapplicatie gemaakt die je graag in de cloud zou willen hosten, maar je hebt geen Azure of Google Cloud tot je beschikking. In deze sessie laat ik zien hoe je een .NET Core app kunt draaien op Heroku. Deze cloud leverancier maakt het mogelijk om een gratis app te hosten zonder dat je hiervoor een credit card nodig hebt,


gRPC voor .NET ontwikkelaars

In .NET Framework 4 hadden we WCF en WebAPI. .NET Core bood alleen maar ondersteuning voor WebAPI. Met de komst van .NET Core 3 hebben we hier ook een extra variant beschikbaar: gRPC. In deze sessie laat ik zien wat gRPC is en hoe je hier gebruik van kunt maken in .NET Core. Natuurlijk ga ik ook in op keuze tussen WebAPI en gRPC.


Blazor hosting options

Voor Blazor bestaan op dit moment twee varianten: de server side (Blazor Server) en client side (Blazor WebAssembly). In deze sessie gaan we in op de overeenkomsten en verschillen tussen deze twee varianten en geef ik wat tips om te kiezen voor een optie.


Real world app in Blazor

In deze sessie neem ik je mee in het maken van een echte toepassing in Blazor WebAssembly. Tijdens deze code heavy sessie gaan we live een applicatie maken die gebruikt maakt van formulieren, validatie, authenticatie en WebAPI's.


State management in Blazor

Je hebt al wat gehoord en misschien zelfs al wat gespeeld met Blazor. Nu zou je Blazor WebAssembly graag toe gaan passen in een echt project. Binnen een SPA zul je een keuze moeten maken op welke manier je lokaal state bij wilt houden. In deze sessie behandel ik een aantal opties hiervoor met daarbij ook de voors en tegens van elke keuze.


Past and future events

Bergler Event

Domain Driven Design en (micro)services in de praktijk
19 Jun 2018
Utrecht, Netherlands

SDN Event

Hands On Getting Started with Docker Container
23 Mar 2018
Zeist, Utrecht, Netherlands

DotNet Saturday

Writing beter code with Visual Studio 2017
27 Jan 2018
Veenendaal, Utrecht, Netherlands

Bergler Event

Coding styles in Visual Studio
14 Mar 2017
Utrecht, Netherlands

Bergler Event

Workshop Test Driven Development
11 Oct 2016
Utrecht, Netherlands