I have given talks on various topics to both public and private audiences. Here’s a partial list.

Building Windows Phone 7 Applications
Windows Phone 7 puts in your pocket powerful hardware and APIs familiar to .NET developers. In spite of these similarities the intrinsic differences between the phone and traditional PCs translate into differences between effective mobile and traditional code. In this talk I will cover some of the most interesting aspects of developing Windows Phone 7 applications. Understanding these the differences allows developers to leverage the phone’s capabilities (such as the sensors) as well as managing the challenges of a mobile platform (such as the battery).
[Presented at the YOW! Australia Developer Conference, Melbourne and Brisbane, December 2010]
Architecture Refactoring
Many current technologies force developers to make architectural decisions upfront, from the allocation of the functionality between client and servers to the communication mechanisms. Making these decisions prior to writing a single line of code may cripple your design and development work, and are expensive to revisit should they prove wrong. This session previews a technology that, through leveraging the Microsoft platform and techniques from programming language theory, makes it possible to postpone architectural decisions until the last possible responsible moment. The ability to start with a simple architecture and easily reshape it later based on the analysis of real, working code brings to architecture what refactoring brought to design.
[Presented at the Microsoft Strategic Architect Forum, Redmond, WA, November 2007]
A Software Patterns Study: Where Do You Stand?
Recently Microsoft’s patterns & practices group conducted a survey that indicates a significant gap between the patterns expert community and the software practitioners attempting to use patterns and leverage pattern thinking in their daily work. As this gap widens it will lead to an irreversible divide between the two communities, and patterns will fail to deliver their potential. In the light of our experience of using patterns to package development guidance as well as input from practitioners using patterns, we analyze the key causes behind this gap and recommend a set of actions aimed at the patterns expert community. Bridging this gap will have a dramatic effect on practitioners? understanding of patterns and their ability to leverage them as the patterns expert community envisions.
[Presented at the patterns & patterns Summit, Redmond, WA, November 2007]
Architecture Evaluation in Practice
Unverified designs, assumptions and tradeoffs increase the risks that software architecture doesn’t meet expectations and costs significantly higher than projected. Ultimately they can cause projects to fail. This realization is prompting an increasing number of companies to consider assessing the quality of their software architectures. While architecture evaluation is not as widely used as it should be, some do try it. A few succeed, while others discover that they are not well prepared to do it. Many architecture evaluations are fixated on technology. While answering questions such as “Should the architecture use .NET or J2EE?” “Is the communication asynchronous or does it employ polling?” and “Does an XML versioning scheme exist?” can detect potential problems, there’s more to architecture evaluation than technology alone. This talk shares insights gained from growing ThoughtWorks’ architecture evaluation practice and evaluating several architectures for Global 1000 companies. These insights aim at preparing people interested in commissioning, managing, performing, participating in, or analyzing the results of architecture evaluation to tackle the realities of the front line.
[Presented at the Architecture Quality Track of the 10th Annual Conference on Software Engineering, Methods, and Best Practices (JAOO), October, 2006, Aarhus, Denmark]
Demystifying Orchestration with Patterns
Although orchestration represents one of the key components of Service Oriented Architectures (SOA), few adopters of service orientation actually use it. In spite of available standards and tools, aggressive marketing has forced many users to jump on the bandwagon ill-prepared. In this session I give an overview of an orchestration pattern language that aims at helping practitioners embrace the state of the art. These patterns will prepare people to evaluate orchestration tools as well as to regard SOA as more than just an alternative to Enterprise Application Integration (EAI).
[Presented at the SOA Track of the 9th Annual Conference on Software Engineering, Methods, and Best Practices (JAOO), September, 2005, Aarhus, Denmark]
10 Years After: Developments and Trends in the Patterns World
ost newcomers think that patterns are limited to the topics that made a big splash about 10 years ago. In fact many other patterns and pattern languages are quietly put to work, helping practitioners solve problems in a growing number of areas such as enterprise architectures, AOP, middleware and grid computing, embedded systems, performance tuning, and so on. In this session I tour some of the most interesting developments and trends in the patterns world based on my experience with editing the 5th volume of the Pattern Languages of Programs book series. This overview will give you insight into current patterns work, prepare you for finding patterns for the problems that you’re interested in, as well as help you position in context patterns that you may consider authoring.
[Presented on the Patterns Track of the 9th Annual Conference on Software Engineering, Methods, and Best Practices (JAOO), September 26, 2005, Aarhus, Denmark]
Lessons in Architecture Evaluation
In spite of the increased awareness about the importance of software architecture, few software development projects evaluate architectures in a systematic manner. In today’s complex systems unverified designs, assumptions, and tradeoffs increase the risks that the architecture doesn’t meet stakeholder expectations, could have significant cost implications, and could ultimately cause projects to fail. In this talk I share insight from conducting formal software architecture evaluations. These lessons should extend your architecture evaluation toolbox as well as make you a better evaluator when assessing designs or commercial off the shelf (COTS) components.
[Presented on June 28, 2005 at the International Association of Software Architects, New York Chapter, New York, NY]
Orchestration Patterns in Service-Oriented Architectures
[Presented at the Microsoft Southeast Architecture Council; November 2004.]
Enterprise Integration Patterns with BizTalk Server 2004
[Presented at the Microsoft Partner Advisory Council, Seattle, WA; September 2004.]
Micro-Workflow: An Object-Oriented Workflow Architecture for Embedded Workflow
[Presented on August 24, 2001 at the Information and Telecommunication Technology Center, Lawrence, KS.]
Micro-Workflow: A Workflow Architecture Supporting Compositional Object-Oriented Software Development
Traditional workflow architectures are based on assumptions that don’t hold in the context of software development. In this talk I discuss how the micro-workflow architecture avoids these problems and provides a viable solution for object-oriented developers who need workflow functionality in their applications.
[Presented on: October 5, 2000 at Complete Business Solutions, Inc., Overland Park, KS; October 23 at University of Colorado, Boulder, CO; October 24 at, Overland Park, KS.]
Micro-Workflow for Business Processes in Object-Oriented Applications
In this talk I propose micro-workflow as a new workflow architecture bridging the gap between the type of workflow functionality provided by current workflow products and the type of workflow functionality that object-oriented developers need to implement processes within their applications.
[Presented on August 31, 2000 at Skyva International, Boston, MA.]
Using Micro Workflow for the Newborn Screening Followup Process
In this talk I argue that micro workflow, in particular my Smalltalk framework, can provide a cost-effective solution for a problem from the healthcare domain.
[Presented on April 11, 2000 at the Illinois Department of Public Health, Springfield, IL]
A Micro Workflow Architecture Supporting Compositional Object-Oriented Software Development
In this talk I present an object-oriented architecture for workflow systems that represents a significant departure from traditional workflow architectures.
[Presented on December 6, 1999 at CISCO Systems, Champaign, IL.]
An Object-Oriented Framework for On-Line Registrations
In this talk I discuss a Java framework that I built for registration at the PLoP’98 conference.
[Presented on September 8, 1998 at Caterpillar, Peoria, IL.]
Reusable Architectures for Multimedia
In this talk I describe a domain (multimedia), an application for this domain, and some techniques for software reuse. I also provide a concrete example of the application of these techniques.
[Presented on December 5, 1997 at HP Labs, Palo Alto, CA]