The Application Development Experiences of an Enterprise Developer

Community Speaker

Upcoming Talks:

Due to the Covid-19 crisis I will not be doing any in-person speaking for the remainder of 2020. Hopefully we will all be able to get to a new normal prior to the start of 2021.


I have the following talks on topics of interest to Enterprise Developers that I can deliver at your user group or conference. You can submit a request for me to speak by contacting me.

Artificial Intelligence and Algorithms

  • Amazing Algorithms for Solving Problems in Software - Sure neural networks are cool but have you ever used a Firefly Algorithm to find the solution to a problem? How about an Ant Colony algorithm or one of the many other algorithms inspired by nature? In this talk we will see examples of a number of awesome bio-inspired algorithms that can be used to solve problems in software. We'll see how each one works, analyze its strengths and weaknesses, and determine when it is best used. You'll leave with the knowledge you need to solve problems using these algorithms in your language of choice.

    Latest Slide Deck


  • Pushing AI to the Client with WebAssembly and Blazor (also available as a half-day workshop) - Want to run your .NET Standard code directly in the browser on the client-side without the need for transpilers or browser plug-ins? Well, now you can with WebAssembly and Blazor. WebAssembly (WASM) is the W3C specification that will be used to provide the next generation of development tools for the web and beyond. Blazor is Microsoft's experiment that allows ASP.Net developers to create web pages that do much of the scripting work in C# using WASM. Come join us as we explore the basics of WebAssembly and how WASM can be used to run existing C# code client side in the browser. You will walk away with an understanding of what WebAssembly and Blazor can do for you and how to immediately get started running your own .NET code in the browser.

    Latest Slide Deck | Video: J on the Beach - Marbella Spain - May 2019


  • A Developer's Introduction to Artificial Intelligences (also available as a half-day or full-day workshop) - There are a number of ways that developers can build systems that make decisions on our behalf. In this introductory course specifically for software developers, we explore a variety of methods used to create Artificial Intelligences. Using demo code written in c#, we will survey the breadth of AI methodologies and develop an understanding of when each might be best utilized. You will also leave with a library of sample code available for reference.

    Latest Slide Deck


  • One AI Algorithm All Programmers Should Know - This simple technique that every programmer should know can simplify certain types of problems tremendously, allowing us to find an optimal solution to difficult problems quickly and easily using a mathematical process called Dynamic Programming (not to be confused with Dynamic Languages or Functional Programming). In this session, we will run through examples of using this technique to solve several problems, both "on paper" and in code and apply that knowledge to build artificial intelligences that can make decisions on our behalf.

    Latest Slide Deck


  • Building AI Solutions Using Combinatorial Solvers - We depend on Artificial Intelligences to solve many types of problems for us. Some of these problems have more than one possible solution. Handling those problems with more than one solution while building a modern AI system is something every developer will be asked to do over the course of his or her career. Figuring out the best way to utilize the capacity of a device or machine, finding the shortest path between two points, or determining the best way to schedule people or events are all problems where mathematical optimization techniques and tooling can be used to quickly and efficiently find solutions. This session is a software developers introduction to using mathematical optimization in Artificial Intelligence. In it, we will explore some of the foundational techniques for solving these types of problems, and use combinatorial solver tools to put them to work in our AI systems. Since this is a session for developers, we'll keep it in terms that work best for us. That is, we'll go heavy on the code and lighter on the math. Note: This talk can be specifically targeted to one of several solver tools including Gurobi, Microsoft Solver Foundation and Google OR-Tools.

    Video: NDC Sydney - Sydney Australia - August 2017


Development Patterns & Practices

  • Simplify Your API: Creating Maintainable and Discoverable Code in .NET Core - Developers don't read documentation, this is a fact. It is also a fact that an API that depends on its documentation to get developers to understand and discover its features is at a huge disadvantage in the marketplace. Fortunately, there are some simple, easy-to-use mechanisms for wrapping complex APIs and making their functionality both easy to use, and highly discoverable. Imagine being able to use tools like IntelliSense that the Visual Studio IDE already provides as a way to expose the functionality of your service or library. In this session we will build a fluent Domain Specific Language interface over an existing API to create an interface that is easy to use and discoverable through IntelliSense.

  • Design Patterns for Loosely Coupled Applications - Building loosely coupled applications is critical to creating solutions that follow good object oriented development principles. These principles help make sure our applications are testable, maintainable and extensible. In this session we will explore several design patterns that are key to building applications that maintain loose coupling. We start by reviewing a tightly coupled application. Then, we explore several critical design patterns by using them to convert the application into a maintainable and extensible solution that can be validated using unit tests.

    Latest Slide Deck | Video: Craft Conference 2019 - Budapest, Hungary - May 2019


  • Test Driven Development in .NET Core - In this talk, the speaker and the audience will "pair up" for a coding session which will serve as an introduction to using a Test Driven Development process to build a .NET Core application. We will use C#, Visual Studio, XUnit and MOQ to unit test code to be built both with and without dependencies. We will also highlight some of the common issues encountered during TDD and discuss strategies for overcoming them.

  • Things Your Dev Team Hopes You Know - Managing a development team or project can be one of the most challenging jobs in any industry. Balancing the needs of the developers, the organization and the users to maximize value for the customers while minimizing costs can be a daunting prospect for even the most experienced executive. How can we produce quality software in a timely and cost-effective manner when the needs of the development team are so different from the needs of the customers, the organization and its managers?

    In this talk Barry leverages his more than 30 years of experience as a Developer and Solution Architect to remind us that how we leverage Agile ceremonies, how we use our tooling, and how we utilize metrics can have both positive and negative impacts on our teams. He reviews many of the elements of our Agile processes and identifies their impacts, particularly on the developers and their managers. This talk challenges us to create environments for our development teams that enable them to exceed the expectations of both our users and our organizations.


Cloud Development

  • Building .NET Applications for any Cloud with Cloud Foundry - Cloud Foundry is an open-source Platform as a Service (PaaS) available on virtually any cloud (Azure, IBM, Amazon, Google, and others) that manages containers and applications with many of the same capabilities of Docker and Kubernetes, without the complexity or vendor lock-in. In this session, we will build a .NET core based Microservices application and deploy it into production on Cloud Foundry to demonstrate the features and ease of use of the Cloud Foundry platform. Warning: once you experience Cloud Foundry you'll never want to deploy your applications without it again.

Past engagements:

  • Codestock 2020 - (Cancelled for April 2020 due to Covid-19) - "Amazing Algorithms for Solving Problems in Software" & "Pushing AI to the Client with WebAssembly and Blazor"
  • Twin Cities Code Camp - (Cancelled for April 2020 due to Covid-19) - "Pushing AI to the Client with WebAssembly and Blazor"
  • South Florida Software Dev Con 2020 - 2/29/2020 - "Amazing Algorithms for Solving Problems in Software"
  • AgileAZ 2019 - 11/22/2019 - "Things Your Dev Team Hopes You Know"
  • Desert Code Camp 2019 - 10/12/2019 - "Amazing Algorithms for Solving Problems in Software"
  • THAT Conference 2019 - 8/5 - 8/8/2019 - "Design Patterns for Loosely Coupled Applications"
  • J on the Beach Malaga 2019 - 5/15 - 5/17/2019 - "Pushing AI to the Client with WebAssembly and Blazor"
  • Craft Conference Budapest 2019 - 5/7 - 5/10/2019 - "Design Patterns for Loosely Coupled Applications"
  • Visual Studio 2019 Arizona Launch - 4/16/2019 - Organizer and Speaker. Keynote "Community" (video) and "Building Awesome Web Apps with Razor and Blazor".
  • Twin Cities Code Camp 2019 - 4/13/2019 - "Design Patterns for Loosely Coupled Applications"
  • Data Science Phoenix - 3/19/2019 - "Genetic Algorithms" (Lightning Talk)
  • ConFoo Montreal 2019 - 3/13 - 3/15/2019 - "A Developer's Introduction to Artificial Intelligence" & "One AI Algorithm that All Developers Should Know" & "Intro to WebAssembly using Blazor" (last-minute fill-in)
  • South Florida Code Camp 2019 - 3/2/2019 - "Intro to WebAssembly using Blazor"
  • SoCalCodeCamp Los Angeles 2018 - 11/10 - 11/11/2018 - "Building .NET Applications for any Cloud with Cloud Foundry" & "Intro to WebAssembly using Blazor"
  • Code Camp Las Vegas 2018 - 10/20/2018 - "Design Patterns for Loosely Coupled Applications"
  • Desert Code Camp, Phoenix 2018 - 10/6/2018 - "Building .NET Applications for any Cloud with Cloud Foundry" and "Design Patterns for Loosely Coupled Applications"
  • Southeast Valley .NET User Group, Chandler AZ - 9/27/2018 - "Introduction to WebAssembly Using Blazor"
  • Northwest Valley .NET User Group, Glendale AZ - 9/26/2018 - "Introduction to WebAssembly Using Blazor"
  • RevolutionConf Virginia Beach 2018 - 5/17 - 5/18/2018 - "A Developer's Introduction to Artificial Intelligences"
  • MVPMix Dallas 2018 - 3/15/2018 - "One AI Algorithm all Programmers Should Know" and "A Developers Introduction to Artificial Intelligence"
  • Phoenix Startup Week 2018 - 2/19/2018 - "Using Combinatorial Optimization to Create Artificial Intelligences"
  • South Florida Code Camp 2018 - 2/10/2018 - "A Developer's Survey of AI Methodologies" and "Building AI Solutions with Google OR Tools"
  • SoCalCodeCamp Los Angeles 2017 - 12/2 to 12/3/2017 - "A Developer's Survey of AI Methodologies" and "Building AI Solutions with Google OR Tools"
  • Desert Code Camp 2017 - 10/14/2017 - "A Developer's Survey of AI Methodologies" and "Building AI Solutions that can Reason Why"
  • NDC Sydney - 8/14 to 8/18/2017 - "Building AI Solutions with Google OR-Tools"
  • SoCalCodeCamp San Diego 2017 - 6/24/2017 - "A Developer's Survey of AI Methodologies"
  • Southeast Valley .NET User Group - 6/22/2017 - "A Developer's Survey of AI Methodologies"
  • Codestock (Knoxville TN) - 5/6/2017 - "Examples of Micro-Service Architectures"
  • Phoenix Visual Studio 2017 Launch - 3/16/2017 - "Testing in Visual Studio 2017"
  • MVPMix Dallas - 3/9/2017 & 3/10/2017 - "Creating Maintainable and Discoverable APIs in .NET Core & "Design Patterns for Loosely Coupled Applications in C#"
  • NDC London - 1/20/2017 - "Test Driven Development in .NET Core" & "What Makes a Good Unit Test?" (lightning talk)
  • Southern California Code Camp (SoCalCodeCamp - Los Angeles 2016) - 11/12-11/13/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • Atlanta Code Camp 2016 - 10/15/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • IT/DevConnections 2016 - 10/10/2016 - 10/13/2016 - "Dynamic Optimization: One Algorithm All Programmers Should Know"
  • Desert Code Camp 2016.1 - 10/8/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • Alpha DevCon 2016 - 9/21/2016 - panelist on the "Vertical Apps Panel"
  • .NET Group Las Vegas - 8/25/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • Southern California Code Camp (SoCalCodeCamp San Diego 2016) - 6/26/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • Twin Cities Code Camp 20 - 4/16/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • Baton Rouge .NET User Group - 4/13/2016 - "A Developer's Guide to Finding Optimal Solutions"
  • South Florida Code Camp 2016 - 2/20/2016 - "Dynamic Optimization: One Algorithm All Programmers Should Know" & "A Developer's Guide to Finding Optimal Solutions"
  • Southern California Code Camp(SoCalCodeCamp Los Angeles 2015) - 11/14/2015 & 11/15/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know" and "Simplify Your API: Creating Maintainable and Discoverable Code"
  • .NET Group - Southern Nevada's .NET User Group - 10/29/2015 - "Simplify Your API: Creating Maintainable and Discoverable Code"
  • Atlanta Code Camp - 10/24/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know."
  • Code Camp NYC- 10/10/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know."
  • Southern California Code Camp (SoCalCodeCamp San Diego 2015) - 6/27/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know."
  • Northwest Valley .NET User Group (NWVDNUG) - 6/24/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know."
  • Twin Cities Code Camp 18 - 4/25/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know."
  • Las Vegas Code Camp - 2/21/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know."
  • South Florida Code Camp 2015 - 2/7/2015 - "Dynamic Optimization: One Algorithm All Programmers Should Know"
  • Desert Code Camp 2014.2 - ".NET TDD Kickstart" and panelist for the discussion "Agile in Practice"
  • Southeast Valley .NET User Group - 8/28/2014 - "SOA: Beyond the Buzzwords"
  • Southern California Code Camp(SoCalCodeCamp San Diego 2014) - 6/28/2014 - "SOA: Beyond the Buzzwords"
  • South Florida Code Camp 2014 - 2/22/2014 - "Simplify Your API: Creating Maintainable and Discoverable Code"
  • Southernmost User Group 2014 - 2/20/2014 - "SOA: Beyond the Buzzwords"
  • Desert Code Camp 2013.2 - 11/9/2013 - "SOA: Beyond the Buzzwords"
  • DevConnections Las Vegas - 10/1/2013 - "Simplify Your API: Creating Maintainable and Discoverable Code"
  • Win 8 App Factor Tempe 6/13/2013 - "Code Portability in .NET"
  • SELA Dev Conference  5/5/2013-5/9/2013 in Tel Aviv Israel – a full day seminar version of “.NET TDD Kickstart” as well as “Code Portability in .NET”
  • Twin Cities Code Camp 4/27/2013 – “Code Portability in .NET”
  • Desert Code Camp 4/20/2013 – “Creating a DSL Using an OData Source”
  • South Florida Code Camp 2013 - 2/9/2013 - "Creating a DSL using an OData Source"
  • Southernmost User Group - 2/7/2013 - "Code Portability in .NET"
  • NYC Code Camp - 9/15/2012 - ".NET TDD Kickstart"
  • Los Angeles .NET Developer Group - 7/9/2012 - ".NET TDD Kickstart"
  • North West Valley .NET User Group - 6/26/2012 - ".NET TDD Kickstart"
  • Southern California Code Camp (SoCalCodeCamp - San Diego 2012) - 6/24/2012 - ".NET TDD Kickstart"
  • Twin-Cities Code Camp 12 (TCCC12) - 4/15/2012 - ".NET TDD Kickstart"
  • New Mexico .NET Users Group (NMUG) - 3/1/2012 - ".NET TDD Kickstart"
  • South Florida Code Camp 2012 - 2/18/2012 - ".NET TDD Kickstart"
  • Southern California Code Camp (SoCalCodeCamp Fullerton 2012) - 1/29/2012 - ".NET TDD Kickstart"
  • Desert Code Camp 2011.2 - 11/5/2011 - "Enterprise Development in the Windows 8 Timeframe"
  • Southern California Code Camp (SoCalCodeCamp - San Diego 2011) - 6/26/2011 - "Building Enterprise Quality Apps using EF4"
  • New Mexico .NET Users Group (NMUG) - 6/2/2011 - "Building Enterprise Quality Apps using EF4"
  • Desert Code Camp 2011.1 - 4/2/2011 - "Building Enterprise Quality Apps using EF4"
  • Developer Ignite II - 11/11/2009 - "AZGiveCamp, Geeks Giving Back to the Community"
  • Developer Ignite - 7/22/2009 - "Simplicity Through Abstraction"

About the Author

Barry S. Stahl Barry S. Stahl (him/his) - Barry is a .NET Software Engineer who has been creating business solutions for enterprise customers for more than 30 years. Barry is also an Election Integrity Activist, baseball and hockey fan, husband of one genius and father of another, and a 30+ year resident of Phoenix Arizona USA. When Barry is not traveling around the world to speak at Conferences, Code Camps and User Groups or to participate in GiveCamp events, he spends his days as a Solution Architect for Carvana in Tempe AZ and his nights thinking about the next AZGiveCamp event where software creators come together to build websites and apps for some great non-profit organizations.

Social Media