Events
I'm an internationally recognized speaker and event organizer, invited to speak at conferences and meetups all across the US and around the world. From CodeMash and KCDC to NDC and Update Conference, I bring real-world expertise in .NET, cloud architecture, and AI to developer communities everywhere — and I founded Trailhead, home to its own developer conference and meetup community in West Michigan. View my full speaker profile on Sessionize.
Upcoming
Old API, New Tricks: Add MCP to Existing .NET REST Endpoints
Your existing .NET Web APIs have served you well—but what if they could do more with them in the era of AI? In this session, we’ll explore how to breathe new life into your existing ASP.NET Web API endpoints built with ASP.NET CORE by adding Model Creation Protocol (MCP) capab...
Warm and Fuzzy Search: AI-Driven Search in .NET
Searching isn't just about exact matches anymore—users expect search results that understand context and adapt to their input. Enter the world of AI-driven fuzzy search! In this session, we’ll explore how to implement powerful search capabilities in .NET using Microsoft.Extens...
Mission-Critical Code: What NASA’s Power of Ten Can Teach Us
Ever wonder how NASA writes software that literally can’t afford to fail? Meanwhile, back on Earth, our code is held together with duct tape and //TODO comments. The stakes might be a little lower for most of us—nobody's oxygen supply depends on our latest API deployment (hope...
Warm and Fuzzy: Semantic Search in .NET
Searching isn't just about exact matches anymore—users expect search results that understand context and adapt to their input. Enter the world of AI-driven fuzzy search! In this session, we’ll explore how to implement powerful search capabilities in .NET using Microsoft.Extens...
Mission-Critical Code: What NASA’s Power of Ten Can Teach Us
Ever wonder how NASA writes software that literally can’t afford to fail? Meanwhile, back on Earth, our code is held together with duct tape and //TODO comments. The stakes might be a little lower for most of us—nobody's oxygen supply depends on our latest API deployment (hope...
Past
Expert Panel: How do you Secure your Azure Resources?
We will chat in real time about topics such as Azure Front Door, Azure Application Gateway, virtual networks, private endpoints, and more. What works, what does not, and what we would do differently next time. If you are working in Azure today or just starting to think abou...
Warm and Fuzzy: Semantic Search in .NET
Searching isn't just about exact matches anymore—users expect search results that understand context and adapt to their input. Enter the world of AI-driven fuzzy search! In this session, we’ll explore how to implement powerful search capabilities in .NET using Microsoft.Extens...
Oops, I Leaked It Again: API Security Mistakes Fixed
APIs are the backbone of modern applications—but one small mistake can expose sensitive data, allow unauthorized access, or even take down your entire system. In this session, we’ll explore the most common API security blunders (yes, including some real-world horror stories...
‘Why Did They Do That?’ and Other Mysteries Solved by ADRs
We've all said it. “Why did they do it like that?” Without Architectural Decision Records (ADRs), these mysteries are inevitable. But don't fear, ADRs don’t mean boring documentation—these lightweight notes capturing the "why" behind your team’s decisions, saving you from futu...
Layers Are for Lasagna: Embracing Vertical Slice Architecture
Is your codebase fragile, where one small change risks breaking something unexpected? That fragility often comes from layered or “lasagna” architectures that scatter logic across controllers, services, repositories, and models. Touching one feature means touching several layer...
Mission-Critical Code: What NASA’s Power of Ten Can Teach Us
Ever wonder how NASA writes software that literally can’t afford to fail? Meanwhile, back on Earth, our code is held together with duct tape and //TODO comments. The stakes might be a little lower for most of us—nobody's oxygen supply depends on our latest API deployment (hope...
Old to Gold: How to Modernize Your Legacy ASP.NET Apps Gradually
Legacy applications built with ASP.NET can take a long time to migrate. Doing this work all at once isn't very agile, so in this session we'll explore using YARP (Yet Another Reverse Proxy), .NET Upgrade Assistant, and the "Strangler Fig" pattern to incrementally migrate your ...
Old API, New Tricks: Add MCP to Existing .NET REST Endpoints
Your existing .NET Web APIs have served you well—but what if they could do more with them in the era of AI? In this session, we’ll explore how to breathe new life into your existing ASP.NET Web API endpoints built with ASP.NET CORE by adding Model Creation Protocol (MCP) capab...
Fuzzy Wuzzy Was a Search: Semantic Search in .NET
Searching isn't just about exact matches anymore—users expect search results that understand context and adapt to their input. Enter the world of AI-driven fuzzy search! In this session, we’ll explore how to implement powerful search capabilities in .NET using Microsoft.Extens...
Oops, I Leaked It Again: API Security Mistakes Fixed
APIs are the backbone of modern applications—but one small mistake can expose sensitive data, allow unauthorized access, or even take down your entire system. In this session, we’ll explore the most common API security blunders (yes, including some real-world horror stories...
Avoidifying Over-Complexification: Rooting Out Over-Engineering in Your Projects
Discover the art of unraveling complexity in your software projects and returning to the fundamental principle of KISS ("Keep It Simple, Software developer"). As complexity grows in any system, so do its potential points of failure, underscoring the importance of mastering the...
Cache Me If You Can: Supercharging .NET APIs with Caching
Are your .NET Web APIs crawling at a snail’s pace? Is your database groaning under the load of too many requests? If you’re nodding along, it might be time to turbocharge your APIs with a caching layer to transform your application’s performance. In this session, we’ll look...
When Bad Libraries Happen to Good Code
When building applications, choosing the right 3rd party libraries can mean the difference between smooth sailing and a nightmare. With so many options available, how do you make smart choices that keep your codebase maintainable and your team productive? In this session, w...
Can AI Do This?: Business Strategy Panel
Ever wondered if that repetitive task at work could be automated with AI? You bring the challenge — and a panel of cross-disciplinary experts will pressure-test it live. In this interactive session, you’ll: get real-time feedback, learn what’s viable (and what’s not), leav...
Cache Me If You Can: Supercharging .NET APIs with Caching
Are your .NET Web APIs crawling at a snail’s pace? Is your database groaning under the load of too many requests? If you’re nodding along, it might be time to turbocharge your APIs with a caching layer to transform your application’s performance. In this session, we’ll look...
‘Why Did They Do It Like That?’ and Other Mysteries of Teams Without ADRs
We've all said it. “Why did they do it like that?” Without Architectural Decision Records (ADRs), these mysteries are inevitable. But don't fear, ADRs don’t mean boring documentation—these lightweight notes capturing the "why" behind your team’s decisions, saving you from futu...
Avoidifying Over-Complexification: Rooting Out Over-Engineering in Your Projects
Discover the art of unraveling complexity in your software projects and returning to the fundamental principle of KISS ("Keep It Simple, Software developer"). As complexity grows in any system, so do its potential points of failure, underscoring the importance of mastering the...
Avoidifying Over-Complexification: Rooting Out Over-Engineering in Your Projects
Engineers in other disciplines often rely on fundamental principles, such as simplifying and eliminating unnecessary parts, to ensure the success of their projects. These principles are equally vital in software engineering. In this session, you'll learn how to apply these tim...
Cache Me If You Can: Supercharging .NET APIs with Caching
Are your .NET Web APIs crawling at a snail’s pace? Is your database groaning under the load of too many requests? If you’re nodding along, it might be time to turbocharge your APIs with a caching layer to transform your application’s performance. In this session, we’ll look...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Old to Gold: How to Modernize Your Legacy ASP.NET Apps Gradually
Legacy applications built with ASP.NET can take a long time to migrate. Doing this work all at once isn't very agile, so in this session we'll explore using YARP (Yet Another Reverse Proxy), .NET Upgrade Assistant, and the "Strangler Fig" pattern to incrementally migrate your ...
Azure Expert Panel Discussion
This month's meeting will be a bit different. We are hosting a panel of local technologists to discuss how they work with Azure on a day-to-day basis. Do they live in the Azure CLI, work with the Azure Portal, or rely on Bicep? Are they brave enough to use the Azure Developer ...
Old to Gold: How to Modernize Your Legacy ASP.NET Apps Gradually
Legacy applications built with ASP.NET can take a long time to migrate. Doing this work all at once isn't very agile, so in this session we'll explore using YARP (Yet Another Reverse Proxy), .NET Upgrade Assistant, and the "Strangler Fig" pattern to incrementally migrate your ...
Avoidifying Over-Complexification: Rooting Out Over-Engineering in Your Projects
Engineers in other disciplines often rely on fundamental principles, such as simplifying and eliminating unnecessary parts, to ensure the success of their projects. These principles are equally vital in software engineering. In this session, you'll learn how to apply these ...
Is Everyone AI-ing Without Me? A .NET Developers Guide to Development with AI
AI is causing the tech landscape to evolve faster than ever, so it's important for developers to understand how to know when they should use traditional algorithms versus when they should use artificial intelligence (AI), and how to best use the two together. This talk take...
Old to Gold: How to Modernize Your Legacy ASP.NET Apps Gradually
Legacy applications built with ASP.NET can take a long time to migrate. Doing this work all at once isn’t very agile, so in this session we’ll explore using YARP (Yet Another Reverse Proxy), .NET Upgrade Assistant, and the “Strangler Fig” pattern to incrementally migrate your ...
Is Everyone AI-ing Without Me? Getting Started with AI in .NET
AI is causing the tech landscape to evolve faster than ever, so it's important for developers to understand how to know when they should use traditional algorithms versus when they should use artificial intelligence (AI), and how to best use the two together. This talk take...
Avoidifying Over-Complexification: Rooting Out Over-Engineering in Your Projects
Discover the art of unraveling complexity in your software projects and returning to the fundamental principle of KISS ("Keep It Simple, Software developer"). As complexity grows in any system, so do its potential points of failure, underscoring the importance of mastering the...
The Future Now: The Top Trends In Software Development
To prepare students for careers in a rapidly changing industry, it is crucial for computer science instructors to stay updated on the latest trends and innovations in the field. Jonathan "J." Tower, a sought-after industry expert, will provide insights into some of the most im...
The Future Now: The Top Trends Software Leaders Must Know
Staying ahead of key trends is essential for any software leader. From AI-driven development and cloud-native architectures to the rise of low-code platforms, this talk will provide software creators and leaders with the insights needed to navigate the most important changes h...
Rebuild your APIs Better, Stronger, Faster with Minimal APIs
If you currently have a controller-based API built in ASP.NET or ASP.NET Core, you might be eager to embark on the journey of transitioning it to a Minimal API approach, but not know the best process to make it happen. If so, this talk is tailor-made for you. We will delve ...
Is Everyone AI-ing Without Me? A .NET Developers Guide to Development with AI
AI is causing the tech landscape to evolve faster than ever, so it's important to understand how and when to use custom development versus when to use artificial intelligence (AI), and how to use the two together. This talk takes you on a journey that demystifies the proces...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Avoidifying Over-Complexification: Rooting Out Over-Engineering in Your Projects
Is Everyone AI-ing Without Me? A .NET Developers Guide to Development with AI
AI is causing the tech landscape to evolve faster than ever, so it's important to understand how and when to use custom development versus when to use artificial intelligence (AI), and how to use the two together. This talk takes you on a journey that demystifies the proces...
You've Been Organizing Your Code Wrong: A C# Developer's Intro to Vertical Slice Architecture
Ditch the layers and jump into the world of Vertical Slice Architecture—an architecture where features reign supreme! Imagine a codebase where the organization revolves around capabilities and not tangled technical layers. This talk will be your map to this thrilling new world...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Is Everyone AI-ing Without Me? A .NET Developer's Guide to AI
Is Everyone AI-ing Without Me? A .NET Developers Guide to AI
AI is causing the tech landscape to evolve faster than ever, so it's important to understand how and when to use custom development versus when to use artificial intelligence (AI), and how to use the two together. This talk takes you on a journey that demystifies the proces...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Migrate Your Legacy ASP.NET Projects to ASP.NET Core Incrementally with YARP
YARP (Yet Another Reverse Proxy) might have a funny name, but it a very serious tool when it comes to helping you upgrade your legacy ASP.NET projects to ASP.NET Core. The best part is, it helps you do the upgrade gradually, and with minimal impact to your users. In this sessi...
Mastering Solutions Architecture with Design Katas [Workshop]
TLDR: Architects get relatively few opportunities to practice their craft, so we will group up to formulate architectural visions for "real world" business problems. Attendees will then evaluate each group's solution to gain insight into the pros and cons of different approach...
Neurodiverse Coders: Unlocking ADHD & Autism Superpowers in Tech
In the tech world, diversity isn't just about backgrounds; it's also about how we think and process information. ADHD and Autism Spectrum Disorder (ASD) are often pigeonholed as challenges. However, what if we told you that these so-called 'disorders' house superpowers that ca...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Rebuild your APIs Better, Strong, Faster with Minimal APIs
If you currently have a controller-based API built in ASP.NET or ASP.NET Core, you might be eager to embark on the journey of transitioning it to a Minimal API approach, but not know the best process to make it happen. If so, this talk is tailor-made for you. We will delve ...
Dotnet CLI or: How I Learned to Stop Worrying and Love the Command Line
If you’ve been using Visual Studio for years like I have, you’ve probably also grown accustomed to the “walled garden” experience that it provides. With .NET Core’s successfully moves toward being cross-platform support for Linux, Mac, and Windows, the command-line interface (...
Improving Your Validation Game with Fluent Validation for .NET
Just about every application needs some sort of validation in it. If you’re a .NET Developer, you’ve no-doubt mostly been doing validation using the data annotation attributes from the System.ComponentModel namespace. These attributes are built-in to .NET by default, and can w...
Building a Slack Chatbot with Azure Functions
Chatbots have become an essential tool for businesses to improve customer support, automate tasks, and enhance engagement. However, building a chatbot from scratch can be challenging and time-consuming. In this session, we will show you how to build a chatbot for Slack using A...
Unleashing the Potential: Harnessing the Advantages of ADHD and Autism Traits
Attention-Deficit/Hyperactivity Disorder (ADHD) and Autism Spectrum Disorder (ASD) are often viewed as disorders with negative consequences. However, individuals with these conditions can exhibit seemingly superhuman abilities in the right setting. This session will explore th...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Attracting & Retaining Talent in the Work-From-Home Era
Come hear from a panel of local experts as they delve into the strategies and insights crucial for managers and organizational leaders seeking to acquire and retain top technology talent in the work-from-home era. Explore innovative approaches and hear first-hand about how to ...
Migrate Your Legacy ASP.NET Projects to ASP.NET Core Incrementally with YARP
YARP (Yet Another Reverse Proxy) might have a funny name, but it a very serious tool when it comes to helping you upgrade your legacy ASP.NET projects to ASP.NET Core. The best part is, it helps you do the upgrade gradually, and with minimal impact to your users. In this se...
Mastering Solutions Architecture with Design Katas (Workshop)
TLDR: Architects get relatively few opportunities to practice their craft, so we will group up to formulate architectural visions for "real world" business problems. Attendees will then evaluate each group's solution to gain insight into the pros and cons of different approach...
Boosting Productivity with AI: Tips and Techniques for Software Developers
As Artificial Intelligence (AI) becomes more prevalent, software developers are looking for ways to harness its power to increase productivity and accomplish more in less time. This session will provide an overview of the latest AI tools and technologies available to software ...
Choose Your Own Adventure: Lessons Learned from an Unusual Journey
A pro-adventure mindset can lead to exciting opportunities in both your personal and professional life. Join me as I share my unusual story of taking a leap of faith and embarking on a year-long RV adventure across the USA. During my journey, I learned how having a pro-adventu...
Migrate Your Legacy ASP.NET Projects to ASP.NET Core Incrementally with YARP
YARP (Yet Another Reverse Proxy) might have a funny name, but it a very serious tool when it comes to helping you upgrade your legacy ASP.NET projects to ASP.NET Core. The best part is, it helps you do the upgrade gradually, and with minimal impact to your users. Come learn...
Unleashing the Potential: Harnessing the Advantages of ADHD and Autism Traits
Attention-Deficit/Hyperactivity Disorder (ADHD) and Autism Spectrum Disorder (ASD) are often viewed as disorders with negative consequences. However, individuals with these conditions can exhibit seemingly superhuman abilities in the right setting. This session will explore th...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, J. gets to see many systems built by many different developers. Recently, He's seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
The Pitfalls of Off-the-Shelf Software: Why Supply Chain and Logistics Must Adopt Custom Solutions to Survive
<ul><li>Discover why relying solely on off-the-shelf software can be dangerous, and how to avoid its biggest pitfalls.</li> <li>Find out how building custom software solutions can give you a competitive edge in supply chain and logistics over off-the-shelf and SaaS offerings....
Migrate Your Legacy ASP.NET Projects to ASP.NET Core Incrementally with YARP
YARP (Yet Another Reverse Proxy) might have a funny name, but it a very serious tool when it comes to helping you upgrade your legacy ASP.NET projects to ASP.NET Core. The best part is, it helps you do the upgrade gradually, and with minimal impact to your users. Come learn...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. In...
A Data Access Layer You're Proud of without Entity Framework
Dotnet CLI or: How I Learned to Stop Worrying and Love the Command Line
If you’ve been using Visual Studio for years like I have, you’ve probably also grown accustomed to the “walled garden” experience that it provides. With .NET Core successfully moving toward being cross-platform support for Linux, Mac, and Windows, the command-line interface (C...
Migrate Your Legacy ASP.NET Projects to ASP.NET Core Incrementally with YARP
YARP (Yet Another Reverse Proxy) might have a funny name, but it a very serious tool when it comes to helping you upgrade your legacy ASP.NET projects to ASP.NET Core. The best part is, it helps you do the upgrade gradually, and with minimal impact to your users. Come learn...
Adding Redis Caching to Your .NET Web API
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. In...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. In...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. ...
Improving the Security of JSON Web Tokens with Refresh Tokens
Are you using JWT tokens to secure your .NET web APIs? Are you also worried about the security of using long-lived tokens or about possible holes in your token refresh implementation? If that sounds like you: fear not—all your answers are here in this session. Join me as I ...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
As a consultant, I get to see many systems built by many different developers. Recently, I’ve seen an uptick in the number of systems built with a microservice architecture in mind, but those systems often include a lot of the same mistakes that keep them from working well. In...
Adding Redis Caching to Your .NET Web API
Are you suffering from slow web APIs in .NET? Is your database overloaded? It’s quite likely that adding a caching layer to your application will help with both of those problems. In this session, we’ll learn about what causes slow APIs and overloaded databases, and see how ca...
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
Don’t Build a Distributed Monolith: How to Avoid Doing Microservices Completely Wrong
Seeing Your Career as an Adventure
In my 18-year professional career, I have had many adventures of many kinds. People, opportunities, and my own choices have all played a role in changing the trajectory of my professional life in ways I couldn't have dreamed when I was first starting out. These twists and turn...
ASP.NET Core's Built-in Dependency Injection Framework
ASP.NET Core comes with its own built-in dependency injection (DI) framework. DI allows you to write better, more loosely-coupled code, and now with it built right into your favorite web development framework, you don't have to do anything extra to use this important design pa...
TypeScript: The Why and the How
With the growing popularity of Angular 2, TypeScript is also growing quickly in popularity. In this session I'll give you more than just a basic introduction to the language — I'll give you the reasons why you should care from a software engineering perspective. We'll also loo...
Work Remote: Extreme Edition
Join me as I take you on my year-long adventure to all 48 contiguous states enabled by technomadism — being a technological nomad. I'll talk about how I was able to work remotely, share practical tips, and answer the most common questions: how we lived, where we went, what we ...
Dapper: Using a Micro ORM for Maximum Data Performance
.NET data access has evolved from raw ADO.NET to DataSource components, LINQ-to-SQL, and finally Entity Framework. If you've used feature-bloated ORMs, you've probably wished for something simpler. Micro ORMs solve these problems and bring a major performance boost. We'll look...
ASP.NET Core 1.0: Someone Moved Your Cheese
With the release of ASP.NET Core 1.0, Microsoft has made great strides in creating a very modern and powerful platform for web developers. They've embraced open source tools like grunt and NPM. These new features come at the cost of moving some things around — in this session ...
Dapper: Using a Micro ORM for Maximum Data Performance
ASP.NET 5: Someone Moved Your Cheese
With the release of ASP.NET 5, Microsoft has made great strides in creating a very modern and powerful platform for web developers. They've embraced open source tools like grunt and NPM and brought ASP.NET into the cutting edge of web development.
30 Tools for Modern .NET Web Development in 60 Minutes
30 Tools for Modern .NET Web Development in 60 Minutes
30 Tools for Modern .NET Web Development in 60 Minutes