Talks
I gave talks on various topics to both public and private audiences. Here’s a partial list.
- 2015
Three Lessons about Gatling and Microservices
Scala at the Sea (Seattle Scala users' meetup), December 2015
Abstract
Gatling, one of the most popular stress test OSS frameworks, is powered by Akka and Scala. In this talk I share insight gained while working with and customizing Gatling to exercise Protobuf-based backed services. I also show how to use Gatling for web applications.
Messaging Patterns with Akka (Remote) Actors
(with John Nestor), Scala at the Sea (Seattle Scala users' meetup), April 2015
Abstract
A handful of messaging patterns distilled from work with Akka remote actors in Scala
- 2014
Scaling with Scala: refactoring a back-end service into the mobile age
Scala at the Sea (Seattle Scala users' meetup), October 2014
Whitepages Practical Experience Converting from Ruby to Reactive
(with John Nestor), Scala at the Sea (Seattle Scala users' meetup), August 2014
Abstract
In this presentation we discuss the decision to move away from Ruby and outline the reasons we chose Scala.
- 2010
Building Windows Phone 7 Applications
Presented at the YOW! Australia Developer Conference, Melbourne and Brisbane, December 2010
Abstract
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 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).
- 2007
Architecture Refactoring
Presented at the Microsoft Strategic Architect Forum, Redmond, WA, November 2007
Abstract
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.
A Software Patterns Study: Where Do You Stand?
Presented at the patterns & practices Summit, Redmond, WA, November 2007
Abstract
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.
- 2006
Architecture Evaluation in Practice
Presented at the Architecture Quality Track of the 10th Annual Conference on Software Engineering, Methods, and Best Practices (JAOO), October, 2006, Aarhus, Denmark
Abstract
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.
- 2005
Demystifying Orchestration with Patterns
Presented at the SOA Track of the 9th Annual Conference on Software Engineering, Methods, and Best Practices (JAOO), September, 2005, Aarhus, Denmark
Abstract
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)
10 Years After: Developments and Trends in the Patterns World
Presented on the Patterns Track of the 9th Annual Conference on Software Engineering, Methods, and Best Practices (JAOO), September 26, 2005, Aarhus, Denmark
Abstract
Most 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.
Lessons in Architecture Evaluation
Presented at the International Association of Software Architects, New York Chapter, New York, NY, June 28, 2005
Abstract
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.
- 2004
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
- 2001
Micro-Workflow: An Object-Oriented Workflow Architecture for Embedded Workflow
Presented on August 24, 2001 at the Information and Telecommunication Technology Center, Lawrence, KS
- 2000
Micro-Workflow: A Workflow Architecture Supporting Compositional Object-Oriented Software Development
Presented on: October 5, 2000 at Complete Business Solutions, Inc., Overland Park, KS; October 23 at University of Colorado, Boulder, CO; October 24 at Transportation.com, Overland Park, KS
Abstract
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.
Micro-Workflow for Business Processes in Object-Oriented Applications
Presented on August 31, 2000 at Skyva International, Boston, MA
Abstract
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.
Using Micro Workflow for the Newborn Screening Followup Process
Presented on April 11, 2000 at the Illinois Department of Public Health, Springfield, IL
Abstract
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.
- 1999
A Micro Workflow Architecture Supporting Compositional Object-Oriented Software Development
Presented on December 6, 1999 at CISCO Systems, Champaign, IL
Abstract
In this talk I present an object-oriented architecture for workflow systems that represents a significant departure from traditional workflow architectures.
- 1998
An Object-Oriented Framework for On-Line Registrations
Presented on September 8, 1998 at Caterpillar, Peoria, IL
Abstract
In this talk I discuss a Java framework that I built for registration at the PLoP’98 conference.
- 1997
Reusable Architectures for Multimedia
Presented on December 5, 1997 at HP Labs, Palo Alto, CA
Abstract
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.