This website does not display correctly in Internet Explorer 8 and older browsers. The commenting system does not work either in these browsers. Sorry.

These talks are still relevant but probably need a slight update.

Case Study: The new

The Guardian newspaper has embarked on the next stage in its digital content strategy with the launch of its new website, one of the largest news sites in Europe.

From a technical perspective the development team faced several challenges: Advanced capabilities to organise and relate content require complex logic, which in turn means producing very dynamic pages at the highest levels of performance. The brief also called for a complete separation of page design and content logic, integration with user-generated content, and a strategy for the migration of over 1 million URLs.

In this case study, Mat and Erik present the overall solution, which uses practices and technologies such as Domain-Driven Design, the Spring framework, Ajax, AOP, Continuous Integration and automated web testing. They also discuss some innovative technical approaches in detail.


  • OOP 2008 - Munich, Germany - with Mat Wall
  • JAOO 2007 - Århus, Denmark - with Mat Wall
  • TheServerSide Java Symposium Europe 2007 - Barcelona, Spain - with Mat Wall


Builds: from Good to Great

Fully scripted builds and continuous integration have become more mainstream in the past years. In this talk I want to share some of the great ideas and good practices for builds I've seen on projects that take continuous integration a step further. I will examine build pipelines, fully automated acceptance test suites, information radiators, virtualised test environments, and software quality reports. In addition I will discuss a few do's and dont's that can make the difference between a good build and a great build.


  • DevOps Days 2010 Europe - Hamburg, Germany
  • YOW! Nights 2010 - Sydney, Melbourne, and Brisbane, Australia
  • JAOO Australia 2009 - Sydney and Brisbane, Australia


Taking TDD to the Next Level

More and more developers are being drawn to Test Driven Development (TDD). It doesn’t take much time or effort to get going, especially after you have passed that first hurdle of approaching development using the mantra of “red-green-refactor” instead of “code for days and then debug and test”. But after a while you discover that TDD has more to it than just basic state-based testing. In this session Erik will present in-depth discussions of topics such as interaction-based testing, dependency injection, classical vs mockist testing, test doubles, builders, and Hamcrest matchers.


  • JAOO Nights Australia 2009 - Brisbane, Sydney, and Melbourne, Australia
  • JAOO 2008 - Århus, Denmark
  • NFJS eXchange 2007 - London, UK
  • TheServerSide Java Symposium Europe 2007 - Barcelona, Spain
  • ExpertZone Developer Summit 2006 - Stockholm, Sweden - with Jimmy Nilsson

[Slides and Source]

Test-Driven Development (Tutorial)

This tutorial demonstrates the development of a small system using test-driven development and supporting technologies. The system will comprise a handful of Java classes that exemplify typical components found in enterprise applications, including domain objects, a service layer, and gateways.

The tutorial presents two complementary approaches to TDD: state-based testing and interaction-based testing. Both approaches will be discussed in depth during the development of the system, and benefits of each approach will be highlighted and contrasted. The tutorial also covers common trade-offs and edge case, e.g. how to deal with testing private methods and when not to use dynamic mocks but hand-crafted stub objects. The implementation will use modern technologies such as JUnit 4, Hamcrest, and Mockito.

Attendees will gain an understanding of how proper use of test-driven development fosters good design; through decoupling and interface discovery for example. Attendees will also gather a nice catalogue of the most commonly used patterns used in conjunction with test-driven development.


  • JAOO Australia 2009 - Sydney and Brisbane, Australia - with Dan North
  • JAOO 2008 - Åhus, Denmark - with Dan North
  • JAOO Australia 2008 - Brisbane and Sydney, Australia - with Martin Fowler
  • JAOO 2007 - Århus, Denmark - with Martin Fowler
  • QCon 2007 - London, UK - with Martin Fowler
  • ØreDev 2006 - Malmö, Sweden - with Martin Fowler
  • JAOO 2006 - Århus, Denmark
  • JavaZone 2006 - Oslo, Norway
  • SI-SE 10th Anniversary Symposium - Zurich, Switzerland - with Aslak Hellesøy

[Slides][Source with Mercurial repository]

Software Visualization and Model Generation

Models are often viewed as something you create during design time and use to generate code. What if we turn the approach up-side-down and generate models from code? Humans are very good at recognizing patterns in images, making visualizations a valuable tool, for example to recognize dependencies or data flow. This is particularly true for dynamic, loosely coupled systems that are often less explicit and evolve over time. Once you have generated a model you can take things a step further and run checks and validations against it. Visualizations can also be used to plot out source code metrics over various dimensions to detect potential "hot spots" in the application that may require special attention.

This talk applies the concepts of visualization and model generation to a broad range of usage scenarios, such as asynchronous messaging, software components and object-oriented applications.


  • JAOO Australia 2009 - Sydney and Brisbane, Australia
  • JAOO Australia 2008 - Brisbane and Sydney, Australia - with Gregor Hohpe
  • TSS Java Symposium Europe 2007 - Barcelona, Spain - with Gregor Hohpe
  • ExpertZone Developer Summit 2007 - Stockholm, Sweden
  • OOP 2007 - Munich, Germany - with Gregor Hohpe
  • JAOO 2006 - Århus, Denmark
  • JavaZone 2006 - Oslo, Norway - with Gregor Hohpe
  • TheServerSide Java Symposium Europe 2006 - Barcelona, Spain - with Gregor Hohpe
  • TheServerSide Java Symposium 2006 - Las Vegas, USA - with Gregor Hohpe


How Simple is Too Simple? / Simplicity in Design

The problems we are looking to solve with software are becoming increasingly harder and more complex, but how do we best deal with this complexity? Martin and Erik will argue that the answer is simplicity. More than twenty years ago Fred Brooks identified accidential complexity, that is complexity that is not inherent in the problem but is caused by the approach we have chosen, as the only area left where significant gains in productivity could be made. So, if we manage to achieve simplicty in design and approach we can successfully tackle the real complexity of the problem we are solving. What we have seen, though, is that it is anything but easy to achieve simplicity. All too often we end up with designs that are either too simplistic or too complicated. The real skill in designing software lies in finding a good middle ground.


  • Keynote, JAOO Australia 2008 - Brisbane and Sydney, Australia - with Martin Fowler
  • Keynote, OOP 2008 - Munich, Germany - with Dan North
  • Keynote, ExpertZone Developer Summit 2007 - Stockholm, Sweden
  • Keynote, ROOTS 2007 - Bergen, Norway - with Dan North

Domain Annotations

Modern development platforms provide annotations that can be added to various language elements. (We use the Java term annotation as we feel it describes the concept more precisely than the term attribute which is used on the .NET platform.) In this talk we discuss a pattern of annotation use that we discovered during the development of an enterprise application and have used successfully since. We call this pattern Domain Annotations, and the idea is to enhance the domain model with domain specific annotations that can be used for a variety of purposes. This pattern has not played a major role in public debate yet but we have found that it is one of the most powerful usages of annotations.

An essay about domain annotations can be found in the ThoughtWorks Anthology.


  • Great Indian Developer Summit 2008 - Bangalore, India
  • JAOO 2006 - Århus, Denmark - with Mike Royle
  • SPA 2006 - St. Neots, UK - with Mike Royle


Automated Web Application Testing with Selenium

Selenium is a test tool that allows you to write automated web application tests in many programming languages. The test use any mainstream browser with JavaScript support and can target arbitrary websites.

This talk starts with a quick demo of creating automated tests using the Selenium IDE and then show how these tests can be integrated with existing Java, C#, or Ruby test suites. We'll end with a discussion on how to write robust tests, and how to structure tests to make them more reusable.


  • Skills Matter Session (April 2007) - London, UK
  • QCon 2007 - London, UK
  • Øredev 2006 - Malmö, Sweden


Really old talks

Even older talks are listed on this page.