Speaker Bio

Header Photo Credit: Steven Hicks (used with permission)

Brief Introduction

I've been a professional software developer for about 23 years, gaining experience ranging from "shrink-wrapped" software to large, distributed networks using multiple platforms and technologies. My experience spans the entire software lifecycle and though I have experience in a management role, my passion lives in writing high-quality, clean code while providing leadership through technical direction and mentorship.

I enjoy sharing my experiences with automated testing, mocking frameworks, and static analysis tools, or guiding other developers through the darker crevices of the .NET framework, while also learning from my peers' experiences-- helping everyone "level up" as a team. I have a pragmatic approach to and a heavy interest in continuous improvement of people, process, and product.


(optional)

For over a decade, I've lived in the western suburbs of Chicago, Illinois, where I enjoy spending time with my wife and teenage son. Before that, I grew up in Castroville, Texas, a small town in the middle of corn fields and cattle ranches to the west of San Antonio, Texas. I spent my college years at Southwest Texas State University in San Marcos, Texas, where I earned my Bachelor of Science in Computer Science degree and flirted with a Psychology dual-major before realizing I didn't want to pay for that extra time in school. I lived in the Austin, Texas area for about a decade before moving north to escape the Texas heat.

John M. Wright has been a professional software developer for about 23 years, gaining experience ranging from "shrink-wrapped" software to large, distributed networks using multiple platforms and technologies. His experience spans the entire software lifecycle and though he has experience in a management role, his passion lives in writing high-quality, clean code while providing leadership through technical direction and mentorship.

He enjoys sharing his experiences with automated testing, mocking frameworks, and static analysis tools, or guiding other developers through the darker crevices of the .NET framework, while also learning from his peers' experiences-- helping everyone "level up" as a team. He has a pragmatic approach to and a heavy interest in continuous improvement of people, process, and product.


(optional)

For over a decade, he's lived in the western suburbs of Chicago, Illinois, where he enjoy spending time with his wife and teenage son. Before that, he grew up in Castroville, Texas, a small town in the middle of corn fields and cattle ranches to the west of San Antonio, Texas. He spent his college years at Southwest Texas State University in San Marcos, Texas, where he earned a Bachelor of Science in Computer Science degree and flirted with a Psychology dual-major before realizing he didn't want to pay for that extra time in school. He lived in the Austin, Texas area for about a decade before moving north to escape the Texas heat.

Headshot:

headshot

This talk covers the two types of mocking frameworks (constrained and unconstrained), digs into how they do their magic, and discusses their pros, cons, and limits.

Session Abstract:

Unit testing has become an accepted part of our lives as .NET programmers. To help focus our tests to only the code we want to validate, Mocking Frameworks are a powerful tool in our toolbox. Like many tools, if you have an understanding of how the tool works under the hood, you can bend it to your will (and also know where it'll break if you bend too much).

In this session, you'll learn about the two main types of mocking frameworks: constrained frameworks (like RhinoMocks and Moq) and unconstrained frameworks (such as Typemock Isolator and Telerik JustMock). I'll dig into how the two actually do their magic and we'll discuss the pros, cons, and limits of both. We'll look at examples of how to use the frameworks in your tests, mocking out dependencies from your own code and even third-party logic.

You'll get the most out of this session if you're comfortable reading C# code and have a general understanding of class inheritance in .NET, along with some experience writing and running unit tests. Prior experience using mocking frameworks is not necessary.

Presented At:

Chicago Code Camp

Chicago, IL

APRIL 29, 2017

Stack Overflow IntDev Meetup

New York, NY

JULY, 2017

MKE DOT NET

Milwaukee, WI

SEPT 9, 2017

DevSpace

Huntsville, AL

OCT 13, 2017

CodeMash

Sandusky, OH

JAN 12, 2018

Chicago .NET User Group

Downers Grove, IL

JAN 25, 2018

Wisconsin .NET Users Group

Brookfield, WI

FEB 13, 2018

Northeast Wisconsin Code Camp

Appleton, WI

MAR 24, 2018

Beer City Code

Grand Rapids, MI

JUNE 23, 2018

Kansas City Developer Conference

Kansas City, MO

JULY 12-13, 2018

TechBash

Pocono Manor, PA

OCT 2-5, 2018

CodeStock

Knoxville, TN

APR 12-13, 2019

Indy.Code()

Indianapolis, IN

APR 24-26, 2019

Nebraska.Code()

Lincoln, NE

AUG 14-16, 2019

Prairie.Code()

Des Moines, IA

SEPT 11-13, 2019

Modern Devs Charlotte User Group

Charlotte, NC

NOV 12, 2019


This talk takes a look at the Visual Studio Debugger Visualizer feature that lets you create your own graphical display of your .NET data structures while debugging.

Session Abstract:

You've hit your Visual Studio breakpoint, opened the watch window and you're looking at a wall of nested collections and object graphs. You know the data you want is in there, but digging it out of the built-in data table UI feels like the "doing it the hard way" part of an infomercial.

Now, imagine being able to shape your data the way that makes it easiest to understand and debug, limited only by your imagination (and time, of course).

In this session, we'll take a look at the Visual Studio Debugger Visualizer feature, available in all version of Visual Studio (even the free one!) that lets you create your own graphical display of your .NET data structures while debugging. Shape the data the way you want to make it easier to digest - hide unimportant info, quickly expose deeply nested elements, compare large object graphs, or even instantly search Stack Overflow for help with an Exception. Display it in whatever way is best for your data and your understanding of it, act on the data and even modify it from your custom view. We'll talk through the options available to you, some of the limitations, and security risks/considerations involved.

This session doesn't require much deep knowledge of .NET, but the examples will primarily be in C#, WinForms and WPF. You don't need to know any of those beyond what you can Google or find on Stack Overflow, though the results will be useful to novices and well-weathered developers alike. (Note: While there is support for C++ visualizers, that won't be covered in this session.)

Presented At:

CodeMash

Sandusky, OH

JAN 11, 2018

Milwaukee Code Camp

Milwaukee, WI

NOV 10, 2018

Chicago Code Camp

Chicago, IL

MAY 11, 2019


Talk: Getting Started with .NET Unit Testing

This talk covers the basics of unit testing in .NET and some tips from my own experiences for getting started.

Session Abstract:

As a professional software developer, quality and maintainability are fundamental job responsibilities, and well written unit tests are key aspect of achieving these goals. But getting started with unit testing can be daunting. And knowing what to test can be overwhelming.

Whether you're a senior .NET dev that just never got into unit tests, or you're just starting your .NET journey, I'll cover tactical and strategic guides and my experiences to get you started and prepared for the path ahead.

In this session, we'll walk through some fundamentals of unit testing in .NET, the features of popular testing frameworks and tooling, and the differences between writing tests for new code vs writing tests for existing code. We'll talk about approaches to writing a unit test that provides you with immediate value and will better withstand the test of time.

Presented At:

Indy.Code()

Indianapolis, IN

APR 24-26, 2019


Workshop Abstract:

As a professional software developer, quality and maintainability are fundamental job responsibilities, and well written unit tests are key aspect of achieving these goals. But getting started with unit testing can be daunting, and knowing what to test can be overwhelming.

Whether you're a senior .NET dev that just never got into unit tests, or you're just starting your .NET journey, I'll cover tactical and strategic guides and share my experiences to get you started and prepared for the path ahead.

In this workshop, we'll talk through the topics you need to know to get up and running with unit testing, coupled with hands-on coding activities to practice the topics covered. Laptops are required for all attendees due to the coding exercises.

Topics covered in this workshop:

  • Fundamentals of unit testing and basic structure of a unit test / test suite
  • Features of popular testing frameworks and tooling
  • Tips and strategies for writing tests that provide long-term value
  • Differences between writing tests for new code vs writing tests for existing code
  • Unit Tests vs Integration Test: advantages and disadvantages of each
  • Using mocking frameworks
  • Integration with CI/build servers
  • Pros & cons of Code Coverage tools
  • Advanced integrations with testing frameworks -- using the framework SDKs to extend and enhance

Conducted At:

Indy.Code()

Indianapolis, IN

APR 24-26, 2019

Prairie.Code()

Des Moines, IA

SEPT 11-13, 2019