This preview shows pages 1–2. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: The Law of Leaky Abstractions - Joel on Software Joel on Software Feb 13-14: Tokyo: Shoeisha Developers Summit Feb 26-27: New York: FutureTest 2008 Search: Wanted: Quality Assurance Engineer / Analyst at Avencia Incorporated (Philadelphia, PA 19107). See this and other great job listings at jobs. joelonsoftware.com . The Law of Leaky Abstractions By Joel Spolsky Monday, November 11, 2002 There's a key piece of magic in the engineering of the Internet which you rely on every single day. It happens in the TCP protocol, one of the fundamental building blocks of the Internet. TCP is a way to transmit data that is reliable . By this I mean: if you send a message over a network using TCP, it will arrive, and it won't be garbled or corrupted. We use TCP for many things like fetching web pages and sending email. The reliability of TCP is why every exciting email from embezzling East Africans arrives in letter-perfect condition. O joy. By comparison, there is another method of transmitting data called IP which is unreliable . Nobody promises that your data will arrive, and it might get messed up before it arrives. If you send a bunch of messages with IP, don't be surprised if only half of them arrive, and some of those are in a different order than the order in which they were sent, and some of them have been replaced by alternate messages, perhaps containing pictures of adorable baby orangutans, or more likely just a lot of unreadable garbage that looks like the subject line of Taiwanese spam. Here's the magic part: TCP is built on top of IP. In other words, TCP is obliged to somehow send data reliably using only an unreliable tool . To illustrate why this is magic, consider the following morally equivalent, I'm your host, Joel Spolsky, a software developer in New York City. Since 2000, I've been writing about software development, management, business, and the Internet on this site. More about me . There's a complete archive of everything going back to 2000. The home page is reserved for minor, ephemeral thoughts, but occasionally I write a longer article. You can sign up to receive email whenever this happens at the bottom of this page. We also have one of those RSS thingamajiggies . If you don't know what that is, consider yourself lucky. This site has been translated by volunteers around the world into more than thirty languages . The Joel Reddit Share links to interesting URLs with other readers at the Joel Reddit ( about ). Want to hire great developers? Looking for a job that doesn't suck? Check out the popular job board or the job board for India . Have feedback? There are several popular discussion boards on this site: Joel on Software Business of Software Design of Software .NET Questions TechInterview.org CityDesk FogBugz Fog Creek Copilot You can also email me directly , although my mailbox is an official disaster area....
View Full Document
This note was uploaded on 02/06/2008 for the course CS 1102 taught by Professor Fisler during the Fall '07 term at WPI.
- Fall '07