For information on exhibition and sponsorship opportunities at the conference, contact Sharon Cordesse at firstname.lastname@example.org.
For media-related inquiries, contact Maureen Jennings at email@example.com.
To stay abreast of conference news and to receive email notification when registration opens, please sign up for the OSCON newsletter (login required).
View a complete list of OSCON 2008 Contacts
Normal Accident Theory (NAT) describes the accident potential of many different systems. Initially developed by Charles Perrow in 1979, it is covered in his classic book, Normal Accidents (first published by Basic Books in 1984). It turns out that NAT is very relevant to creating more reliable programs. In fact, the theory predicts some well-established results in OOD, such as “favor object composition over class inheritance” (Design Patterns, Gamma et al.).
According to a NAT-based analysis, however, encapsulation can actually be dangerous—specifically when factoring out common functionality. An apparently trivial, generic piece of code, when called from multiple parts of a program, can tightly couple unrelated subsystems. This can result in unexpected interactions, leading to poorly understood behavior and subtle bugs.
In the presentation, we term such shared code a PORV valve, in honor of a critical component in the failed nuclear reactor at Three Mile Island. As described by Perrow, a fault in the PORV valve unintentionally connected parts of the plant that were not in a direct operational sequence with each other. The resulting unexpected interactions confused the operators, ultimately turning a mere incident into a serious accident. Utilizing the Adapter pattern can help correct such “PORV valves” in your code.
The talk focuses on what NAT is, how to apply it practically to your projects, and how the advanced object models of modern programming languages help in the process. Specifically, we use Python as the example language, and discuss the experiences that led us to realize NAT’s potential in our own work.
George Belotsky is Chief Scientist at CinematX Digital, a company exploring the combination of virtualization and distributed video. He has done extensive work on high performance Internet servers as well as hard real time and embedded systems. His technology interests include Python, C++ and Linux. George has written articles for O’Reilly Network, LinuxWorld and the Linux Journal. His article on C++ memory management made the best of 2003 list on O’Reilly ONLamp. George has also presented at PyCon, LinuxWorld and other venues.
Heath Johns is the CTO at CinematX Digital, a company exploring the combination of virtualization and distributed video. He likes to take a long view of technology and how it can shrink the distance between people; the concepts of secure computation and human-friendly languages like Python figure heavily in his thoughts about this. His other tech interests include network protocols (with two O’Reilly Network articles published on the topic), and Lisp.