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:
- MIDOTNET on Tuesday, August 20, 2024.
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:
- KCDC 2015 on June 24-25, 2015
- St. Louis Days of .NET 2015 on November 12-14, 2015
- That Conference 2016 on August 8-10, 2016
- Dog Food Con 2016 on October 5-6, 2016
- Prairie.Code() 2016 on October 26-28, 2016
- CodeMash 2017 on January 10-13, 2017
- FoxCon Toledo 2017 on January 28-29, 2017
- Ann Arbor .NET Developers’ Group on February 8, 2017
- Indy.Code() 2017 on March 29-31, 2017
- Troy .NET User Group on April 20, 2017
- Music City Code 2017 on June 1-2, 2017
- Scenic City Summit on July 28, 2017
- Code PaLOUsa 2018 on March 28-30, 2018
- North West Valley .NET User Group on June 27, 2018
- That Conference 2018 on August 6-8, 2018
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:
- Cleveland .NET User Group on June 22, 2015
- KCDC 2015 on June 24-25, 2015
- Dog Food Con 2015 on October 7-8, 2015
- FoxCon Toledo 2016 on January 30-31, 2016
- GR DevDay 2016 on March 12, 2016
- Code PaLOUsa 2016 on March 28-30, 2016
- Great Lakes Area .NET User Group on April 20, 2016
- Prairie.Code() 2016 on October 26-28, 2016
- Music City Code 2017 on June 1-2, 2017
- TechBash 2017 on October 4-6, 2017
- DevSpace 2017 on October 12-13, 2017
- DevUp 2017 on October 15-17, 2017
- CodeMash 2018 on January 9-12, 2018
- Southeast Valley .NET User Group on June 28, 2018
- KCDC X 2018 on July 11-13, 2018
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:
- Music City Code 2018 on June 1-2, 2018
- Nebraska.Code() on June 6-8, 2018
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:
- KCDC 2017 on August 2-4, 2017
- GANG.Conf on November 18, 2017
- Memphis .NET User Group on December 28, 2017
- FoxCon Toledo 2018 on January 27-28, 2018
- Music City Code 2018 on June 1-2, 2018
- Nebraska.Code() on June 6-8, 2018
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:
- St. Louis Days of .NET 2014 on November 13-15, 2014
- Ann Arbor .NET Developers’ Group on December 10, 2014
- Codestock 2015 on July 10-11, 2015
- Music City Code 2016 on August 18-20, 2016
- DevUp 2017 on October 15-17, 2017
- Codestock 2018 on April 20-21, 2018
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:
- devLink on August 28-30, 2013
- Code PaLOUsa 2014 on February 24, 2014
- Dog Food Con 2015 on October 7-8, 2015
- Indy.Code() 2017 on March 29-31, 2017
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:
- Richmond Code Camp on October 6, 2012
- GR DevDay 2013 on March 2, 2013
- GLUGNet on May 16, 2013
- Ann Arbor .NET Developers’ Group on July 10, 2013
- devLink on August 28-30, 2013
- NWNUG on September 17, 2013
- Dog Food Con on November 21-22, 2013
- GR DevDay 2014 on March 22, 2014
- Codestock 2014 on July 11-12, 2014
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:
- Codestock 2013 on July 12-13, 2013
- Central Ohio Day of .NET on November 2, 2013
- St. Louis Days of .NET 2013 on November 14-16, 2013
- FoxCon Toledo 2014 on January 25-26, 2014
- Stir Trek: Winter Soldier Edition (2014) on April 4, 2014
- FANUG on April 29, 2014
- Codestock 2014 on July 11-12, 2014
- GLUGNet on September 18, 2014
- Dog Food Con 2014 on September 29-30, 2014
- St. Louis Days of .NET 2014 on November 13-15, 2014
- KCDC 2016 on June 23-24, 2016
- Music City Code 2016 on August 18-20, 2016
- Tech Bash 2016 on September 28-30, 2016
- Dog Food Con 2016 on October 5-6, 2016
- DevSpace 2016 on October 14-15, 2016
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:
- Stir Trek: Ultron Edition (2015) on May 1, 2015
- Pittsburgh Tech Fest on June 13, 2015
- Music City Code 2015 on August 29, 2015
- Code PaLOUsa 2016 on March 28-30, 2016
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:
- CloudDevelop 2014 on October 17, 2014
- FoxCon Toledo 2015 on February 7-8, 2015
- Nebraska.Code() 2015 on March 19-21, 2015
- That Conference 2015 on August 10-12, 2015
- CloudDevelop 2015 on October 23, 2015
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:
- Code PaLOUsa 2013 on April 25, 2013
- Code PaLOUsa 2014 on February 24, 2014
- Code PaLOUsa 2015 on April 27, 2015
- KCDC 2015 on June 23, 2015
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:
- Codestock 2014 on July 11-12, 2014