The Emperor's Old Clothes
C.A.R. Hoare
Software: Barrier or Frontier?
C.A.R. Hoare
The humble programmer Edsger W. Dijkstra
No Silver Bullet: Essence and Accidents of Software Engineering Frederick P. Brooks, Jr.
Hints for Computer System Design
Butler Lampson
Interconnecting Computers: Architecture, Technology, and Economics
Butler Lampson
Software Components: Only The Giants Survive
Butler Lampson
Teaching Concurrency
Leslie Lamport
How to Tell a Program from an Automobile
Leslie Lamport
The Future of Computing: Logic or Biology
Leslie Lamport
State the Problem Before Describing the Solution
Leslie Lamport
An interview with Leslie Lamport
DS Online: A Discussion with Leslie Lamport
On the Criteria To Be Used in Decomposing Systems into Modules
David L. Parnas
(see also
Information Hiding
David M. Weiss)
Software Engineering: An Unconsummated Marriage
David L. Parnas
Software Aging
David L. Parnas
The Professional Responsibilities of Software Engineers
David L. Parnas
ACM SIGSOFT SEN Interview with David Parnas
Some Basic Tenets of Description
Michael Jackson
Where, Exactly, Is Software Development?
Michael Jackson
Why Software Writing Is Difficult and Will Remain So
Michael Jackson
The Five-Minute Rule Ten Years Later, and Other Computer Storage Rules of Thumb
Jim Gray, Goetze Graefe
Rules of Thumb in Data Engineering
Jim Gray, Prashant Shenoy
On Building Systems That Will Fail
Fernando J. Corbató
A Managerial View of the Multics System Development
F.J. Corbató and C.T. Clingen
End-to-End Arguments in System Design
Jerome H. Saltzer, David P. Reed, David D. Clark
The End of the End-to-End Argument
David P. Reed
Can the End-to-End Principle Survive?
Phil Karn
The Dawn of the Stupid Network
David S. Isenberg
Circuits: the search for a cure
Van Jacobson
Complexity Revisited
Jerome H. Saltzer
(see also
Coping with complexity
Michael Ernst)
The Design of Design
Frederick P. Brooks, Jr.
(pdf)
(mpeg webcast)
The Failure of Personalities to Generalize
Brett D. Fleisch
High-Pressure Steam Engines and Computer Software
Nancy G. Leveson
From Bridges and Rockets, Lessons for Software Systems
C. Michael Holloway
The "Bug" Heard 'Round the World
Jack Garman
Therac-25 Accidents
Nancy G. Leveson
ARIANE 5 - Flight 501 Failure
Personal Observations on Reliability of Shuttle
Richard P. Feynman
(Volume 2: Appendix F of full report)
The Good, the Bad, and the Ugly: The Unix Legacy
Rob Pike
UNIX Style, or cat -v Considered Harmful
Rob Pike
More Taste: Less Greed? or Sending UNIX to the Fat Farm
C H Forsyth
Unix and Beyond: An Interview with Ken Thompson
Development of a Spelling List
M. D. McIlroy
Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)
Russ Cox
What does it mean to "Measure Performance"?
Alistair Moffat, Justin Zobel
In Search of Reliable Retrieval Experiments
William Webber, Alistair Moffat
Web Search for a Planet: The Google Cluster Architecture
Luiz Barroso, Jeffrey Dean, Urs Hölzle
Software Engineering Advice from Building Large-Scale Distributed Systems
Jeff Dean
The Datacenter as a Computer
Luiz André Barroso and Urs Hölzle
On the Naming and Binding of Network Destinations
Jerome H. Saltzer
The Hideous Name
Rob Pike, P.J. Weinberger
The Use of Name Spaces in Plan 9
Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey, Phil Winterbottom
The Styx Architecture for Distributed Systems
Rob Pike, Dennis M. Ritchie (pdf local copy)
Computer Security in the Real World
Butler Lampson
Why Information Security is Hard - An Economic Perspective
Ross Anderson
Why Cryptosystems Fail
Ross Anderson
Reflections on Trusting Trust
Ken Thompson
The Manchurian Printer
Simson L. Garfinkel
Virology 101
M. Douglas McIlroy
Disruptive Programming Language Technologies
Todd Proebsting
(RealPlayer webcast)
The Role of the Study of Programming Languages in the Education of a Programmer
Daniel P. Friedman
Scripting: Higher Level Programming for the 21st Century
John Ousterhout (see also additional info)
Beating the Averages
Paul Graham
Concurrency Oriented Programming in Erlang
Joe Armstrong (slides from LL2)
(RealPlayer webcast)
Concurrency Oriented Programming in Erlang
Joe Armstrong (paper from FFG2003)
Erlang: Bits of History, Words of Advice
Joe Armstrong
Making reliable distributed systems in the presence of software errors
Joe Armstrong
Concurrent Functional Programming for Telecommunications: A Case Study of Technology Introduction
Bjarne Däcker
Four-fold Increase in Productivity and Quality
Ulf Wiger
Systems Software Research is Irrelevant
Rob Pike
Latency Lags Bandwidth
David Patterson
Proebsting's Law
Todd Proebsting
(see also
On Proebsting's Law
Kevin Scott)
Is Code Optimization Research Relevant?
Bill Pugh
The Eight Fallacies of Distributed Computing
L. Peter Deutsch (de-uglified local copy)
The King And The Toaster
(local copy)
It's the Latency, Stupid
Stuart Cheshire
The Evolution of Language
On Being the Bearer of Bad News
Philip Koopman
Nobody loves the bearer of good news
Joe Armstrong
Don't Let Architecture Astronauts Scare You
Joel Spolsky
How to help someone use a computer
Phil Agre
How Did They Get to the Moon Without PowerPoint?
Mordechai Ben-Ari
The Concorde Doesn't Fly Anymore
Mordechai Ben-Ari
Plan 9
·
Inferno
·
Plan 9 from User Space
·
Bell Labs and CSP Threads
·
Libtask: a Coroutine Library for C and Unix
Erlang/OTP
·
Yaws
·
Apache vs. Yaws
·
Performance Measurements of Threads in Java and Processes in Erlang
Lua
·
LuaJIT
·
Coroutines in Lua
(see also Revisiting Coroutines)
·
The Implementation of Lua 5.0
·
The Evolution of Lua
TLA/TLA+/PlusCal
·
Spin
·
Alloy