BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Talks.cam//talks.cam.ac.uk//
X-WR-CALNAME:Talks.cam
BEGIN:VEVENT
SUMMARY:Hints and Principles for Computer System Design - Butler Lampson -
  Microsoft Research + MIT
DTSTART:20150526T151500Z
DTEND:20150526T173000Z
UID:TALK59568@talks.cam.ac.uk
CONTACT:David Greaves
DESCRIPTION:I have many hints that can be helpful in designing computer sy
 stems\, as well as a few principles. Two ways to organize them are:\n\n   
  Goals (What you want)—simple\, timely\, efficient\, adaptable\, dependa
 ble\, yummy.\n    Methods (How to get it)—approximate\, increment\, iter
 ate\, indirect\, divide and conquer.\n\nOf course the goals are in conflic
 t\, and engineering is the art of making tradeoffs. Some simpler oppositio
 ns are:\n\n    For adaptable systems\, between evolving and fixed\, monoli
 thic and extensible\, scalable and bounded.\n    For dependable systems\, 
 between reliable and flaky\, consistent and eventual.\n    For incremental
  methods\, between indirect and inline\, dynamic and static\, experiment a
 nd plan\, discover and prove.\n\nIt also helps to choose the right coordin
 ate system\, just as center of mass coordinates make many dynamics problem
 s easier. For example\, you can view the system state as a name→value ma
 p\, or as an initial state and a sequence of operations that transform the
  state. You can view a function as code or as a table or as a sequence of 
 partial functions. In the complex process of designing systems\, both prin
 ciples and hints can only be justified by examples of what has worked and 
 what has not.\n
LOCATION:Lecture Theatre 1\, Computer Laboratory
END:VEVENT
END:VCALENDAR
