© Mapbox, © OpenStreetMap


Jonathan "J." Tower

Jonathan "J." Tower

Partner & Principal Consultant, Trailhead Technology Partners

Grand Rapids, Michigan, United States


Jonathan, or J as he's known to friends, is a husband, a father, and the owner of Trailhead Technology Partners, a custom software consulting company with employees all around the world. He is also a Microsoft MVP in .NET and frequently speaks at software meetups and conferences. He doesn't mind too much because he loves sharing what he’s learned, and it also gives him an excuse to visit any nearby National Parks, a passion of his, proven by the fact that he's currently made it to 56 of the 63 parks.

J also has a passion for building community and has served on several non-profit boards over the years as a result. Currently, J sits on the SoftwareGR board, a non-profit trade organization dedicated to building the software industry in West Michigan. He also runs Beer City Code, a software conference, and has served as president on that board for over a decade. J loves hiking, reading, photography, and trying to see all the best picture nominees before the Oscars ceremony.


Area of Expertise

  • Information & Communications Technology


  • .NET
  • .NET Core
  • Web
  • Architecture
  • Cloud

Minimalist Architecture: Unmasking 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 art of software architecture simplification.

Journey with us as we delve into the most common mistakes that pave the path to software over-engineering. We'll talk about the allure of gold-plating. superfluous features, and premature optimization, among other popular complications.

Your takeaway will be some practical strategies that will help you hold the line on over-engineering. In short, you will learn to strike the right balance between power and simplicity in your software projects.

Say Goodbye to Controller Classes with ASP.NET Core's Minimal APIs

The MVC-style pattern we've used for APIs for years isn't the only way to create API projects in .NET anymore. In fact, you never have to create another controller class again, and what's better is, you won't miss them!

Come learn about ASP.NET Core's Minimal APIs and see how moving your API code from controllers will help make your code more maintainable, better organized, and cleaner.

Nuget Packages Every .NET Dev Should Know About

There’s nothing worse than finding out about a great library after it’s too late to use it for your project. Don’t miss out; join us as we look at an overview of some of my favorite Nuget packages, all of which can quickly and elegantly help you solve common problems that we .NET developers face.

Data access, validation, list manipulation, design patterns, testing, fault tolerance—we’ll cover a little bit of everything, and you’ll walk away knowing a list of tools you may have not heard of before, and knowing how and when to use them in your projects.

Multi-Tenant Architecture for .NET Web APIs

Some applications aren’t a good fit for NoSQL. If you’re doing a large-scale .NET project that is a better fit for relational databases like SQL Server, how do you set it up to scale well?

In the session, I’ll recount some of the useful lessons I’ve learned building highly scalable .NET APIs that are built using traditional relational databases. We’ll discuss multi-tenancy, shared databases, shared data, microservices, and CQRS, among other useful design patterns, architectures, and tools.

Faster .NET Web APIs with Redis Caching

Are you suffering from slow web APIs in .NET? Is your database overloaded or the bottleneck in your application? If any of those are true for you, it's likely that adding a caching layer to your APIs will help solve the problem.

In this session, we’ll look at APIs built with .NET and what makes them slow. I'll show you what makes an endpoint a good candidate for in-memory caching, and show you how adding it can help alleviate performance problems. We'll look at Redis and why it's such a good option for your in-memory cache. Finally, we’ll discuss some of the common pitfalls of caching implementations and explore the best tooling and libraries to help ease your Redis caching implementation in .NET.

Avoid Common Microservices Mistakes Made by .NET Developers

.NET developers who are familiar with monolithic applications often make the same mistakes when they set out to build their first microservices application. As microservices become a more important architecture for building highly scalable applications, it is becoming more important for developers to learn how to properly design and implement them.

In this session, we'll review a sample .NET application that has been set up as well-designed microservices. We'll use it as an example of what to do, and what NOT to do when you're building your own microservices architectures in .NET.

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 session we'll explore using YARP, and how it uses the "Strangle Fig Pattern" to allow you to incrementally migrate your applications to modern technologies. We'll look at the tooling that is available to help you with the migration, and see some shims that make it easier to integrate cross-cutting concerns between your legacy and modern application, such as session storage and authentication.

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 work well in some situations, but there’s also another option that can be better in several important ways

In the session, we’ll exploring the advantages of using Fluent Validation in your C# and .NET applications. This method of validation creates cleaner code that better follows the single-responsibility principle, gives you more control over custom validation, can be fired conditionally, makes unit testing easier, and even includes client-side support for web apps. If your .NET validation game has gotten a little stale, come see how to step it up with fluent validation.

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 cover all the JWT and refresh token best practices, and help you make sure you’re following them. We’ll even look at a real token and refresh implementation which you can build off of in your projects. Join us, and make sure you’re not making a mistake with this common security technology.

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 this session you’ll learn from my experiences and get pointers on what to avoid in your microservices implementations so that you don’t accidentally build something which has all the worst aspects of a monolithic application and the worst aspects of microservices These monsters are what I call “distributed monoliths”, and I can help you avoid building one accidentally.

Cloud-Native Architecture for .NET Developers

If you're a .NET Developer, you're probably used to building applications with technologies like ASP.NET, Entity Framework, SQL Server, IIS, and other related ones. But, the cloud is quickly changing the way application are built, and allowing us to write software that is much more performant and scalable than ever before. Will those skills translate to this new world?

Come learn how to apply your existing C#, .NET, and relational database knowledge to the world of cloud-native application development. We'll look at an overview of the technologies that are likely to change the way we develop applications in the future--things like static sites generation, the JAMStack, serverless applications with Azure Functions, and cloud-scale databases with SQL Azure and CosmosDB.

If you're a .NET Developer, you don't have to be afraid of the cloud's impact on your future. I'll show you how you're already set up for success in the cloud.

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-adventure mindset is essential for unlocking new opportunities and taking risks that can lead to both personal and professional growth. I'll show you how my own outside-the-box thinking led to my incredible experience of traveling to all 48 states while living in an RV and working remotely, plus how it changed my personal and professional trajectory.

By hearing my story, I hope you'll be inspired to see your own career and life path in a different light, and be encouraged to step out of your comfort zone to discover your own adventure. Don't miss this chance to learn about how embracing a pro-adventure mindset can help you achieve your wildest dreams!

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 caching can help alleviate these problems. We’ll discuss some of the common pitfalls of caching implementations and explore all the best tooling and libraries you can use to ease your Redis caching implementation in .NET.

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 successfuly moves toward being cross-platform support for Linux, Mac, and Windows, the command-line interface (CLI) for .NET Core has become an even more important piece of the puzzle than ever before.

In this session, we’ll work through all the basic workflows for a .NET developer–but all all without the help Visual Studio. By the end, you will be able to create, build, publish, test, run, and package projects, as well serveral other common tasks like database migrations, or using third-party CLI tools.

A Data Access Layer You're Proud of without Entity Framework

If you're a .NET developer, it almost goes without saying that you use Entity Framework as part of the data access code on your software projects. Sometimes, EF is just right for the job, but other times you want something more simple, with better control of the generated SQL queries, and more performant. Over the years, several micro-ORMs (object relationship mappers) have evolved for just this purpose. Sometimes the simplest solution is the best one.

I'd like to walk you through a few of the more popular .NET micro-ORM options so you can see how you can make a simple, high-performance, and easy to use data access layer that you can be proud of.

I'm a .NET Developer, and I Want to Do AI to Something

AI is causing the tech landscape to evolve faster than ever, so it's important to understand how to when to use custom development and when to use artificial intelligence (AI), and how to use them together.

This talk takes you on a journey that demystifies the process of integrating AI concepts into .NET projects, opening doors to endless possibilities in your software projects. We'll go through a list of many of the AI tools and services available to a .NET developer, when you would use them, and how they would integrate into your traditional algorithms.

Participants leave equipped with a newfound understanding of AI's role in their .NET developer toolkit, poised to infuse innovation into their projects and embrace the exciting realm of AI-augmented software development.

dev up 2024 Sessionize Event Upcoming

August 2024 St. Louis, Missouri, United States

KCDC 2024 Sessionize Event

June 2024 Kansas City, Missouri, United States

Stir Trek 2024 Sessionize Event

May 2024 Columbus, Ohio, United States

Michigan Technology Conference 2024 Sessionize Event

March 2024 Pontiac, Michigan, United States

NDC Sydney 2024 Sessionize Event

February 2024 Sydney, Australia

CodeMash 2024 Sessionize Event

January 2024 Sandusky, Ohio, United States

TechBash 2023 Sessionize Event

November 2023 Mount Pocono, Pennsylvania, United States

NDC Porto 2023 Sessionize Event

October 2023 Porto, Portugal

KCDC 2023 Sessionize Event

June 2023 Kansas City, Missouri, United States

NDC London 2023 Sessionize Event

January 2023 London, United Kingdom

TechBash 2022 Sessionize Event

November 2022 Mount Pocono, Pennsylvania, United States

.NET Conf 2022 Sessionize Event

November 2022

Momentum 2022 Sessionize Event

October 2022 Cincinnati, Ohio, United States

Code PaLOUsa 2022 Sessionize Event

August 2022 Louisville, Kentucky, United States

KCDC 2022 Sessionize Event

August 2022 Kansas City, Missouri, United States

Developer Week '22 Sessionize Event

July 2022 Nürnberg, Germany

Stir Trek 2022 Sessionize Event

May 2022 Columbus, Ohio, United States

TechBash 2021 Sessionize Event

October 2021 Mount Pocono, Pennsylvania, United States

KCDC 2021 Sessionize Event

September 2021 Kansas City, Missouri, United States

Code PaLOUsa 2021 Sessionize Event

August 2021

Visual Studio Live! Las Vegas & Austin 2020 Sessionize Event

March 2020 Las Vegas, Nevada, United States

CodeMash 2020 Sessionize Event

January 2020 Sandusky, Ohio, United States

TechBash 2019 Sessionize Event

November 2019 East Stroudsburg, Pennsylvania, United States

Music City Tech 2019 Sessionize Event

September 2019 Nashville, Tennessee, United States

Code PaLOUsa 2019 Sessionize Event

August 2019 Louisville, Kentucky, United States

KCDC 2019 Sessionize Event

July 2019 Kansas City, Missouri, United States

Stir Trek 2019 Sessionize Event

April 2019 Columbus, Ohio, United States

Music City Tech 2018 Sessionize Event

May 2018 Nashville, Tennessee, United States

Jonathan "J." Tower

Partner & Principal Consultant, Trailhead Technology Partners

Grand Rapids, Michigan, United States


Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top