Speaking

I was an active speaker at .NET conferences from 2012 to 2020 and have since been taking an extended break. After a few years I am really starting to miss it and will be returning to speaking at some events in 2024 and beyond.

Active Topics

Here are sessions that I am actively presenting.

LLM Internals Deep Dive

Unlock the secrets of Large Language Models (LLMs) in this deep-dive session on LLM internals. We’ll discuss what an LLM is and how it works, what part ‘logits’ play in LLMs and how we can leverage them for decision making. Next we will look at using GBNF to constrain output generation to specific formats. Finally we’ll compare various models including ChatGPT and Llama, and open source front ends like text-generation-webui and LibreChat.

See this at:

Past Topics

This is the list of abstracts of the sessions I’ve given. (unfortunately missing sessions from 2019-2020).

Identity in ASP.NET Core

Injecting custom code into authentication and authorization in ASP.NET has always been a chore. ASP.NET Identity is a library built to replace both ASP.NET Membership and Simple Membership, making it much easier to implement custom authentication and authorization without the need to rewrite core components. In this session I will go deep into the abstractions that ASP.NET Identity builds atop of and show how to take advantage of these hook points to implement a custom membership system.

Presented at:

Custom Middleware & Microservices with ASP.NET Core

At the core of ASP.NET Core is Microsoft’s implementation of the OWIN standard, giving developers full control over the ASP.NET pipeline. In this session I will explain what OWIN is and how it can empower you to quickly and easily reconfigure an entire web application. Now in full control, you can do everything from injecting custom code (middleware) into any stage of the pipeline to running lightweight applications and microservices without MVC.

Presented at:

Building a Blockchain

Like the cloud nearly a decade ago, blockchain is the newest buzzword appearing everywhere. At the foundation of cryptocurrency implementations like Bitcoin, blockchain technology is also being adopted and used across many industries for anything from mundane record keeping to energy distribution. In this session I will dissect and build a simple blockchain implementation, leaving you with an understanding of the common components and how they are being used in many cryptocurrency implementations today.

Presented at:

Open Source Game Development in the .NET Ecosystem

With so many frameworks to choose from, aspiring game developers are often overwhelmed with options. In this session we’ll explore the decisions that go into choosing the right framework for your project. Next we’ll look at one in particular: Duality. Duality is a flexible and open source framework for developing 2D games with .NET. I’ll show you the fundamental patterns and principles behind game development and walk you through creating a simple game in Duality.

Presented at:

ReSharper: Discover the Secrets

Whether you’re new to ReSharper or have been using it for years, there are a host of lesser-known features that can save you loads of time. ReSharper is used by a growing number of developers to speed up or eliminate some of the most repetitive parts of writing code. It supplements Visual Studio with an extensive and ever-expanding list of features like additional refactorings, code & file templates, code analysis, improved navigation, and much more. In this session you will see some of my favorites and discover a few hidden gems that don’t get the recognition they deserve.

Presented at:

Confessions of a Successful Project

A successful project is one that makes both the customer and the developer happy. Typically, doing this requires a project to be completed on time and under budget, as well as having a maintainable codebase. In this session you will follow a fictional project through requirements gathering, time estimation, and finally development – all from the viewpoint of a small team. At each leg of the journey problems will come up, and I will show you some options for getting the project back on track. You will leave this session with some ‘agile’ new ways to help make your next project a success.

Presented at:

Getting started with NoSQL in .NET using RavenDB

Do you get the feeling that working with SQL is like cramming a square peg into a round hole? In some cases it really is, but fortunately non-structured data stores like RavenDB are here to save the day. Starting with “File > New Project” you will see just how easy it is to launch a RavenDB server, connect to it using the RavenDB .NET Client API, and start filling it with square pegs. You will leave the session with a spring in your step, ready to rethink the way you store data.

Presented at:

Creating a Plug-in Architecture in .NET

Wouldn’t it be great to extend your application by just dropping in a DLL? Plug-in architectures make it possible and there are a few techniques that make it easy. This talk starts with a quick refresher on dependency injection and then builds onto that foundation to create a plug-in architecture. Diving deep into the code of a sample MVC application, you will see various plug-in strategies, explore the frameworks that take care of the heavy lifting, and understand where and how the plug-in points should be implemented.

Presented at:

Monetize Yourself

Wherever you go you see people talking about monetizing apps, websites, blogs, games, and more. But there’s more to it than that. Almost everyone I talk to has a story – they want to create something, quit their job, and live comfortably off of that one thing. But for every one success story there are many who have tried and failed. The good news is that by properly monetizing yourself through increased efficiency and the elimination of “waste”, you too can be a success story. You probably won’t create the next Facebook or Flappy Bird but you can live comfortably, do what you love, and have much more free time.

Presented at:

Creating Scalable Solutions with Amazon Cloud Services

The cloud is here, and there’s a lot more to it than just scaling servers up and down. New paradigms have emerged from cloud services that enable you to break down complex problems into much simpler solutions. With new tools and techniques, yesterday’s monstrous enterprise applications can be replaced by scalable and cheaper cloud applications of tomorrow. In this session you will see the architecture of a large enterprise application dissected into its components: web services, storage of both structured and non-structured data, message queuing and delivery, and notifications. With the availability of developer-friendly APIs, it is easier than ever before to leverage the many cloud services offered by Amazon Web Services.

Presented at:

Understanding Dependency Injection in .NET (All Day)

Important note: This is a workshop that I have prepared together with Brian Friesen.

Your dream has come true! You just got hired in as a game developer for Bad Snowstorm Inc. They are almost ready to launch their new text-based adventure game, but their development team (Billy, the CEO’s son) is having a hard time keeping up with changing requirements. Billy never learned about interfaces or loosely coupled code, so your job will be to implement better practices that will make adding requirements faster than an avalanche.

This workshop is divided into two parts. In part one, you will get an introduction to Dependency Injection through an interactive exercise. You will then inherit some tightly coupled source code, and begin refactoring in response to changing requirements. You will do this by writing your own simple “Poor man’s DI” engine, because what better way to understand what it is and how to use it than by rolling your own.

In part two, we will refactor again, taking our “Poor man’s DI” engine to the next level. You will be introduced to various techniques such as constructor injection, method injection, and property injection, and their practical application into your code base. You will end the day by looking at existing frameworks like Ninject, StructureMap and Castle Windsor.

You will leave this session with a solid understanding of DI, and how to use it in your current and future projects.

Presented at:

Understanding Dependency Injection in .NET (2 Hours)

Your dream has come true! You just got hired in as a game developer for Bad Snowstorm Inc. They are almost ready to launch their new text-based adventure game, but their development team (Billy, the CEO’s son) is having a hard time keeping up with changing requirements. Billy never learned about interfaces or loosely coupled code, so your job will be to implement better practices that will make adding requirements faster than an avalanche.

In this double-session we will be exploring Dependency Injection from several angles. Maybe the codebase you work in is an unmaintainable mess, and you want to do something about it. We can help with that. Or maybe you want to learn what exactly, DI containers such as StructureMap or Ninject do. Perhaps you just want to know if you can really trust DI containers. We can help with those too, since we’ll actually be writing a simple DI container from scratch. And maybe you’ve heard that DI makes your code more testable (spoiler: it does). In fact, DI and testability go together like peas and carrots!

So join us, and unravel the mysteries of Dependency Injection as we refactor Bad Snowstorm’s new game: Null Quest.

We strongly recommend (but do not absolutely require) that attendees bring a laptop to this session, as there will be follow-along examples.

Presented at: