Tom Stuart
C1f7bc8064161e7408ef62d97bb636ac?d=retro
Ranked 34 in Phase 1 with 46 unique views, 19 counted upvotes and 8 counted downvotes

About the author

Tom works as a backend developer at SoundCloud, aiming every day to reduce complexity and increase flexibility in a big giant Rails codebase. He also teaches people to program as a RailsGirls coach in Berlin and wishes quite often that he were a Latin teacher instead.

The OO/web impedance mismatch

This talk makes the following observations/arguments:

  • OOP is inherently stateful
  • HTTP is a stateless protocol
  • Using rack and similar, we make this statelessness an integral part of our applications
  • We structure our web applications using objects rather than a functional model

I'll look at the implications this situation has for object-oriented design, arguing that it is nigh impossible to evolve a pure object-oriented design given these constraints. We'll look at both ends of the problem: an attempt to create an object-oriented architecture while embracing statelessness (Model 2 architectures such as Rails), and an attempt to bend HTTP to the will of the programmer by avoiding statelessness (continuation-based web servers such as Seaside). We'll look at the characteristics of the design under each model, and talk about their strengths and their weaknesses.

Given that we're more familiar with Model 2 architectures than continuation-based architectures, we'll also take a look at some ways of finessing the problems identified. This may include an ill-advised attempt to argue for the utility of Inversion of Control/Dependency Injection containers.


Previous Next