Talk Catalog
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.
My upcoming and past speaking engagements have moved to a separate page
Software Engineering | Algorithms | Language Models | Leadership & Community | Agile
Software Engineering
Design Patterns for Loosely Coupled Applications - Building our applications so that their components are loosely coupled is a critical measure in creating solutions that 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 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
Eliminating Hidden Dangers to Your Applications: Patterns for Reliable Systems - There is a danger lurking in every system that hasn''t taken explicit steps to eliminate it. This under-recognized data killer can cause intermittent inconsistencies in your data which can be as difficult to find as they are to correct. Fortunately, recognizing this monster is easy, and there are a number of great techniques you can use to keep it away for good. In this talk, we will learn about the Dual-Writes anti-pattern: how to spot it, and what to do to avoid it. In doing so, we''ll discuss the 4 primary patterns for keeping data consistent in modern software systems, so you can spend less time supporting your applications. We''ll see examples in C# of each pattern, including demonstrations using SQL Server, Cosmos DB and Redis.
Intentional Architecture: Six Conversations for a Solid Foundation - Too often, architectural decisions are made in isolation, postponed until they constrain future work, or simply ignored--often resulting in a sub-optimal architecture. This talk explores a framework consisting of six conversations that surface architectural decisions as they become relevant, equipping teams to make deliberate, auditable choices at the right moments. The framework centers on 6 "Critical-Cs": Context, Coordination, Contracts, Chaos, Competencies, and Coalescence, and guides teams in evaluating whether microservices fit the project, or if a modular monolith might serve the project better.
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.
Building AI Solutions using Google OR Tools - 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 the open-source Google OR-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.
Crafting AI: A Developer's Guide to Machine Learning - With Machine Learning (ML) making huge impacts across the software industry, it has become almost imperative for developers to understand its principles and applications. Unfortunately, the complexity of some ML models and the mathematical rigor of its algorithms can be intimidating. This talk aims to bridge this gap, making ML understandable and engaging for developers eager to learn this technology from the ground up.
In this session, attendees will learn the foundational concepts of ML by coding their own models from scratch, without relying on pre-trained models like GPT. We'll start with a simple linear regression, a foundational tool to gain understanding of ML's error minimization and training processes. We'll then explain neural networks with a binary classification example. By the end, participants will not only grasp fundamental ML concepts but will also walk away with their own code implementing one of these models. This talk is designed to equip developers with the knowledge and confidence to use Machine Learning in their projects.
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.
Solutions that Evolve: Building Self-Improving Systems with Genetic Algorithms - Genetic algorithms "learn" to make better decisions by making continuous improvements in strategy based the fitness of that solution for survival. These algorithms, modeled after Darwinian evolution, can solve complex optimization problems across many domains - from resource allocation to network design to automated testing.
In this talk we''ll define the DNA of our solutions, explore how to represent different types of problems in genetic terms, and examine the parameters that control how solutions evolve and improve. You''ll leave with practical knowledge of how to apply these powerful techniques to your own challenging problems.
Language Models
Inside Model Reasoning: Fine-Tuning in Action - What if I told you that advanced "thinking" AI models are just regular models that learned a new trick? In this session, we''ll use Azure Foundry to demonstrate the transformative power of fine-tuning.
We''ll explore how chain-of-thought models, those that generate visible reasoning in <think> tags, are simply fine-tuned versions of standard transformers. This elegant example teaches us two critical concepts: how transformers use their own output tokens as input for subsequent predictions, and how fine-tuning can create entirely new model behaviors without architectural changes, and without requiring huge datasets.
LLM Embeddings: Not Magic, Just Math - Embeddings may be the least understood yet most valuable tool to come out of the world of Large Language Models. In this presentation, we will unravel the mystery of embeddings, emphasizing their mathematical foundations and practical applications.
We''ll start by discussing what embeddings are, and what they represent. Then we''ll dive into the variety of tools we have to compare and contrast them, including Cosine similarity and distance, as well as clustering. Then we''ll put those tools to use creating powerful applications that go beyond just typical chat and analytics use-cases. Because we''ll be focusing on operational use-cases, code demos will be done using C#.
Attendees will leave with a deeper understanding of the mathematical underpinnings of embeddings, practical knowledge of how to use them, and an appreciation for their value in our applications. This session is ideal for developers, data scientists, and anyone interested in the mathematical underpinnings of machine learning and natural language processing.'
LLMs Under the Hood - Large Language Models (LLMs) have revolutionized the field of natural language processing, enabling machines to generate human-like text with remarkable coherence. This presentation dives deep into the intricacies of LLMs, shedding light on the underlying mechanisms that enable these tools to predict tokens and generate text. We will unravel the architecture of these models, from embedding layers to attention mechanisms, and provide a clear understanding of the processes that contribute to the model''s performance.
Beyond the technical deep dive, we will explore practical applications, discussing valid use-cases where LLMs excel, such as chatbots, content creation, and language translation. We will also critically evaluate scenarios where they may fall short or prove unsuitable, addressing common myths and misconceptions.
By bridging technical expertise with real-world application, this talk aims to equip programmers and other software creators with a nuanced understanding of Large Language Models, empowering them to harness these tools responsibly and effectively. Join us for an engaging session filled with insights, interactive discussions, and forward-thinking perspectives on one of today''s most groundbreaking technological advancements.
The Future of Information Retrieval: A Deep-Dive into RAG - Retrieval Augmented Generation (RAG) may be the most important new software technology for business applications in a generation. RAG is revolutionizing the way we approach documentation and other information retrieval tasks. By combining the pre-training of large language models with your own data, RAG systems can help generate insights and ideas you might have never considered, enhancing real-world applications from question answering systems to content creation. Of course, these tools are not without their challenges. Systems built using any probabilistic model must be able to manage the size and complexity of requests and responses, ensure accurate and relevant retrieval, handle the biases inherent in the models, and identify if inaccuracies occur in responses.
In this session, we will empower you to harness the full potential of RAG. We will provide a detailed walkthrough of RAG implementation, offering practical insights and strategies to overcome the most common challenges associated with the use of language models. By the end of this session, you will understand how to build effective RAG systems that address many of the concerns with using these types of tools. Since we will be focusing on business operations tasks, our code samples will be in C# and leverage the Microsoft OpenAI Client and Semantic Kernel.
Leadership & Community
Bend it Like Einstein - Dive headfirst into the astonishing world of time dilation, where the realms of science fiction and software engineering collide! Have you ever imagined being able to apply Einstein's principles of General Relativity to your daily grind? Well, buckle up, because we're taking you on a whirlwind journey to master the art of time dilation -- no PhD in physics required!!
In this short, fun talk, we'll reveal how the perception of time isn't set in stone; it's more like Play-Doh in your hands. Using a blend of scientific insight and practical wisdom, we'll walk through the concepts necessary to "bend" time to your will, making every second count -- sometimes twice. From conquering your backlog of technical debt to savoring that morning cup of java, discover how to manipulate the fabric of your daily reality, Einstein-style. At the end you'll be saying to yourself, how did we get so much information in just 10 minutes? Was it time dilation!?!?
Get ready to transform your relationship with time, boosting productivity and enjoyment in the process -- it's time dilation for the masses, and trust us, it's about time!!
Coercive Contracts: Law & Order: Corporate Intent - Binding arbitration clauses are frequently embedded in standard-form consumer contracts, creating a power imbalance and limiting recourse when disputes arise. This lightning talk examines the coercive nature of those clauses, including adhesion contracts, restricted appeals, and class-action waivers. Through the lens of corporate accountability and consumer rights, it considers the ethical and long-term consequences of limiting access to fair dispute resolution.
How the Fediverse Could Save Democracy & Why Developers Hold the Key - The Fediverse, an interconnected web of decentralized, open-source platforms, offers a radical alternative to the centralized social networks that dominate our digital lives. By distributing power, fostering transparency, and enabling community-driven governance, it has the potential to strengthen democratic values and empower individuals. Yet, systemic inertia, usability challenges, and entrenched corporate interests make widespread adoption uncertain.
This talk explores both the promise and the pitfalls of the Fediverse, while also focusing on what developers can do to bridge the gap between vision and reality. We''ll discuss practical ways to integrate Fediverse protocols into applications, extend interoperability through ActivityPub and related standards, and design contributor-friendly systems that prioritize accessibility and inclusivity. By leveraging these tools, developers can help ensure that the Fediverse is not just a noble idea, but a viable foundation for the next generation of digital communities.
Agile
Defining the Business Domain using Event Storming - Event storming is a process for modeling a business domain from the perspective of the business experts. It comes out of the Domain Driven Design world and has been used by many with great success. Event Storming can help your team:
- Build an understanding of a domain
- Define the scopes and interactions of the components of a system
- Rapidly discover unknown-unknowns
- Expose the intricacies of the business domain
- Identify the areas of greatest risk
The artifacts produced in this process are useful to both the business experts, to help document their domain, and the engineers building systems for that domain, and are completely implementation agnostic.
In this session, we will explore the process of Event Storming. We will define the goals and expected outputs of the process, and walk through a simple example so that you are ready to bring this important practice into your organization.
TDD in the AI Era: No Vibes, Just Velocity - Test-Driven Development (TDD) has been a stalwart of software engineering for years, delivering reliable, modular code that stands the test of time. As we now find ourselves in the early days of the AI era, TDD isn''t just enduring, it''s evolving. AI-powered tools are supercharging TDD, turning it into a faster, smarter process that builds on its original strengths. More than just an improvement, the utilization of AI means that TDD isn''t only more powerful, but also more vital than ever. As we become more dependent on AI-accelerated workflows, the demand for thorough, rigorous testing practices is increasing, underlining the ever-growing importance of TDD in today''s software development landscape.
In this talk, we explore how AI enhances the TDD process, making it easier to generate comprehensive test cases, uncover edge cases, and refactor code with confidence. Through automation and intelligent analysis, AI reduces the effort required for manual test creation and debugging, freeing developers to focus on innovation and problem-solving. The result? Higher-quality software delivered in less time.
Whether you’re new to TDD or an experienced practitioner looking to adapt to the AI revolution, this talk will offer insights, strategies, and practical examples to help you navigate this transformative moment in software development.
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.
Software Engineering | Algorithms | Language Models | Leadership & Community | Agile