If you know of a law of computers, programming or technology that didn’t make it into yesterday’s table of laws, please let me know in the comments. I’m going to take those laws, add them to the table and post it on a permanent page in this blog.
3D Mailbox: You’re Kidding, Right?
If you’ve read any of the novels in William Gibson’s “Sprawl Series” or anything that borrowed heavily from that body of work, you’re familiar with the concept of 3D objects being used as metaphors for data or programs. Over the years a number of developers have tried to turn this idea into reality, the latest being the folks behind 3D Mailbox, which blends videogame worlds with an email client.
Level 1 of 3D Mailbox is Miami Beach, in which email is represented by a scantily-clad beachgoer. You’ll see your incoming mail tan, swim, and use the shower, complete with suggestive self-scrubbing. Marking and deleting spam is represented by feeding that mail to the sharks in the ocean. Level 2 is Los Angeles Airport, and in that level, your email is represented by planes coming and going.
The concept of 3D Mailbox, coupled with that very cheesy YouTube trailer, is so silly that I’m having trouble thinking that it’s not a joke. I guess I should download the client, install it on my “nothing terribly important goes on this box” Windows desktop at work and take it for a spin.
Laws of Software Development
[This was also cross-posted to the Tucows Developer Blog]
Inspired by Phil Haack’s article 19 Eponymous Laws of Software Development, I decided to collect laws, axioms and rules pertaining to mainstream software development and put them in a nice, easy-to-read table.
This is by no means a complete list of laws; I’ve purposely stuck to the ones that apply to everyday software development and steered clear of the more theoretical ones. Maybe I’ll compile a more complete list someday.
You’ll notice that some of the laws come from the world of biology — they also appear in some lists of software laws, and I think they still apply.
The Law | Who Said It | What it Says |
---|---|---|
Amdahl’s Law | Gene Amdahl | The speedup gained from running a program on a parallel computer is greatly limited by the fraction of that program that can’t be parallelized. |
Augustine’s Second Law of Socioscience | Norman Augustine | For every scientific (or engineering) action, there is an equal and opposite social reaction. |
Brooks’ Law | Fred Brooks | Adding manpower to a late software project makes it later. |
Clarke’s First Law | Arthur C. Clarke | When a distinguished but elderly scientist states that something is possible he is almost certainly right. When he states that something is impossible, he is very probably wrong. |
Clarke’s Second Law | Arthur C. Clarke | The only way of discovering the limits of the possible is to venture a little way past them into the impossible. |
Clarke’s Third Law | Arthur C. Clarke | Any sufficiently advanced technology is indistinguishable from magic. |
Conway’s Law | Melvin Conway | Any piece of software reflects the organizational structure that produced it. |
Cope’s Rule | Edward Drinker Cope | There is a general tendency toward size increase in evolution. |
Dilbert Principle | Scott Adams | The most ineffective workers are systematically moved to the place where they can do the least damage: management. |
Ellison’s Law of Cryptography and Usability | Carl Ellison | The userbase for strong cryptography declines by half with every additional keystroke or mouseclick required to make it work. |
Ellison’s Law of Data | Larry Ellison | Once the business data have been centralized and integrated, the value of the database is greater than the sum of the preexisting parts. |
The Law of False Alerts | George Spafford | As the rate of erroneous alerts increases, operator reliance, or belief, in subsequent warnings decreases. |
Fisher’s Fundamental Theorem | R. A. Fisher | The more highly adapted an organism becomes, the less adaptable it is to any new change. |
Fitts’ Law | Paul Fitts | The time to acquire a target is a function of the distance to and the size of the target. |
Flon’s Axiom | Lawrence Flon | There does not now, nor will there ever, exist a programming language in which it is the least bit hard to write bad programs. |
Gilder’s Law | George Gilder | Bandwidth grows at least three times faster than computer power. |
Godwin’s Law | Mike Godwin | As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one. |
Grosch’s Law | Herb Grosch | The cost of computing systems increases as the square root of the computational power of the systems. |
Hartree’s Law | Douglas Hartree | Whatever the state of a project, the time a project-leader will estimate for completion is constant. |
Heisenbug Uncertainty Principle | Jim Gray | Most production software bugs are soft: they go away when you look at them. |
Hick’s Law | William Edmund Hick | The time to make a decision is a function of the possible choices he or she has. |
Hoare’s Law of Large Programs | C. A. R. Hoare | Inside every large problem is a small problem struggling to get out. |
Hofstadter’s Law | Douglas Hofstadter | A task always takes longer than you expect, even when you take into account Hofstadter’s Law. |
Jakob’s Law of the Internet User Experience | Jakob Nielsen | Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know. |
Joy’s Law | Bill Joy | smart(employees) = log(employees), or “No matter who you are, most of the smartest people work for someone else.” |
Kerckhoffs’ Principle | Auguste Kerckhoffs | In cryptography, a system should be secure even if everything about the system, except for a small piece of information — the key — is public knowledge. |
Linus’ Law | Eric S. Raymond, who named it after Linus Torvalds | Given enough eyeballs, all bugs are shallow. |
Lister’s Law | Timothy Lister | People under time pressure don’t think faster. |
Metcalfe’s Law | Robert Metcalfe | In network theory, the value of a system grows as approximately the square of the number of users of the system. |
Moore’s Law | Gordon Moore | The number of transistors on an integrated circuit will double in about 18 months. |
Murphy’s Law | Captain Edward A. Murphy | If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it. |
Nathan’s First Law | Nathan Myhrvold | Software is a gas; it expands to fill its container. |
Ninety-ninety Law | Tom Cargill | The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. |
Occam’s Razor | William of Occam | The explanation requiring the fewest assumptions is most likely to be correct. |
Osborn’s Law | Don Osborn | Variables won’t; constants aren’t. |
Postel’s Law (the second clause of the Robustness Principle) | Jon Postel | Be conservative in what you send, liberal in what you accept. |
Pareto Principle (a.k.a. “The 80-20 Rule”) | Suggested by Joseph Juran, named after Vilifredo Pareto | For many phenomena, 80% of consequences stem from 20% of the causes. |
Parkinson’s Law | C. Northcote Parkinson | Work expands so as to fill the time available for its completion. |
Pesticide Paradox | Bruce Beizer | Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual. |
The Peter Principle | Laurence J. Peter | In a hierarchy, every employee tends to rise to his level of incompetence. |
Reed’s Law | David P. Reed | The utility of large networks, particularly social networks, scales exponentially with the size of the network. |
Rock’s Law | Arthur Rock | The cost of a semiconductor chip fabrication plant doubles every four years. |
Sixty-sixty Rule | Robert Glass | Sixty percent of software’s dollar is spent on maintenance, and sixty percent of that maintenance is enhancement. |
Spector’s Law | Lincoln Spector | The time it takes your favorite application to complete a given task doubles with each new revision. |
Spafford’s Adoption Rule | George Spafford | For just about any technology, be it an operating system, application or network, when a sufficient level of adoption is reached, that technology then becomes a threat vector. |
Sturgeon’s Revelation | Theodore Sturgeon | Ninety percent of everything is crud. |
Tesler’s Law of Conservation as Complexity | Larry Tesler | You cannot reduce the complexity of a given task beyond a certain point. Once you’ve reached that point, you can only shift the burden around. |
Weibull’s Power Law | Waloddi Weibull | The logarithm of failure rates increases linearly with the logarithm of age. |
Wirth’s Law | Niklaus Wirth | Software gets slower faster than hardware gets faster. |
Zawinski’s Law | Jamie Zawinski | Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can. |
After a little over two weeks with my fancy new iPhone (yes, I was one of those nerds who braved the opening day hordes to have one on June 29 — it took me all of an hour to get my Jesus phone), I’ve started to compile a list of the things I think the iPhone is missing.
Let me start off by saying that I’m a fan of this thing in just about every regard. I find the virtual keyboard to be more functional than any BlackBerry I’ve used, the battery life to be more than acceptable for a smart phone, and despite being tossed in my pocket every day, neither the screen nor the back of the case has a scratch on it.
Basically, what’s included with the iPhone ranges from good (the YouTube or Notes apps, for example) to un-freaking-believable (Mail, Safari, and the overall user experience). Well, with one minor exception; this is the first phone I’ve had with a camera, and I have to say that I’m totally underwhelmed. Then again, my regular camera is a Nikon D40.
No, my quibbles with the iPhone aren’t about how Apple implemented what’s there as much as they are about what Apple left out.
First on my list: lists. Specifically to-do lists. While the iPhone is a double-plus good media device, it’ll only be so-so at helping you get things done without real to-do list functionality. To be sure, Apple’s default to-do solution in Mac OS X Tiger, iCal, is a less-than-stellar product itself. Be that as it may, Apple’s iPhone calendar doesn’t support iCal’s to-do list feature, so iPhone users are pretty much out of luck if they wish to rely on their shiny new devices to help them to remember to do stuff that might not be strictly calendar event driven.
Any to-do list feature worth the name would also be tightly integrated with the user’s desktop; not much value in a get-things-done tool that only addresses your life on-the-go, is there? You should be able to take action on your to-dos whether you’re at your desk or not, and the action you take in one situation should be automatically reflected in the other.
One possible way of addressing this would be an online application like 37signals’ Ta-da List. I certainly intend to give it a try as a way to keep universal to-do lists across mobile and desktop situations.
Next on my wish list: blogging/tagging/sharing tools.
Sent from my iPhone
The Tucows Developer Blog
Back when I first started at Tucows — four years ago last Saturday — they asked me to start a developer blog that featured a mix of articles about programming in general and articles about developing using Tucows’ services. This blog became The Farm, and it received a fair bit of acclaim and a decent-size readership (typically about 1,500 pageviews on any given business day).
When we introduced the Tucows Blog in the fall of 2006, we thought that we’d roll the programming content in The Farm into it. Over time, we learned that it it’s better to have articles on programming in their own blog, so we’ve decided to bring back the developer blog and make it a little more “official” by making it part of the services.tucows.com site.
And thus the Tucows Developer Blog was born.
It’s aimed primarily at developers who use Tucows’ services or are likely to do so, which means that it’s got articles about developing using Tucows services and articles for developers in general, especially those doing web application development. Like The Farm, I plan to update it every business day and write it using my “voice”, which is generally casual and sometimes irreverent.
You shouldn’t worry at all about the alarmist report in the Telegraph claiming that relying on your mobile’s address book to remember all your phone numbers and email addresses is “dumbing us down”. Reading and believing it is a far bigger threat to your smarts.
I’m not worried because I remember what a guy named Plato said about writing: that by writing things down rather than committing them to memory, we’d create forgetful people and everything would go downhill from there:
If men learn [writing], it will implant forgetfulness in their souls; they will cease to exercise memory because they rely on that which is written, calling things to remembrance no longer from within themselves, but by means of external marks. What you have discovered is a recipe not for memory, but for reminder. And it is no true wisdom that you offer your disciples, but only its semblance, for by telling them of many things without teaching them you will make them seem to know much, while for the most part they know nothing, and as men filled, not with wisdom, but with the conceit of wisdom, they will be a burden to their fellows.
The “Our Servers Won’t Go Down” Ad
(You might want to read the previous post for some background first.)
The ad pictured to the right is the original “Don’t feel bad. Our servers won’t go down on you either” ad that got Qsol into trouble in back in 2000. The ad has received some much-deserved derision with a DisGraceful Award from GraceNet (a group that promotes the contributions of women in technology) and a place in the In Search of Stupidity Museum (the companion site for Rick Chapman’s book bearing the same title).
The ad ran in Linux Journal in late 2000, and after a number of complaints, Qsol responded in the “Letters to the Editor” section saying:
We sincerely apologize to all those who have expressed concern about our advertisement recently featured in Linux Journal (November 2000). It was certainly not our intention to be offensive and we wish to again express our regret to anyone who was displeased by the ad. We understand that this has angered some readers and have therefore reacted immediately by pulling this artwork from all future issues of the magazine. Again, we extend our sincerest apologies.
Something must’ve changed their minds, because they ran an updated version of the ad in the August 2007 Linux Journal (and presumably other tech magazines from their publisher).
The Reaction So Far
The ad got a link in Reddit titled Who says Linux geeks don’t have a sense of humor?. The usual jokes were made (“rm -rf clothes”, for example), but not a single commenter suggested that the ad might just be a little bit sexist and possibly a cause of women’s avoidance of high tech. Elizabeth Bevilacqua wrote about the ad in her LiveJournal, and a couple of male commenters did the usual hand-wringing.
I’m hardly someone you could accuse of being politically correct; I have some issues with the way that society currently treats perfectly natural male behaviours as suspect.
However, I think that stuff like the Qsol doesn’t help the high-tech gender balance. I think it “breaks” rather than “bends” (from the expression “If it bends, it’s comedy; if it breaks, it’s not”). Once again, what Neal Stephenson wrote in Snow Crash about sexism in geekdom still holds true. In the novel, the men belived that Juanita Marquez’s work on faces and facial expressions for a VR interface was relatively unimportant, and Stephenson wrote:
It was, of course, nothing more than sexism, the especially virulent type espoused by male techies who sincerely believe that they are too smart to be sexists.
I think that the ad does the tech industry a double disservice. It sends a message to women that they might want to look to another field for a career and it makes men in high tech look like dolts.
Doc Searls Helps Out
I sent an email expressing my concerns to the man I like to refer to as “the adult supervision of the blogosphere”, Doc Searls, who’s Linux Journal’s senior editor. He responded quickly, saying that he’d have a word with the publisher and asked me to please pass his apolgies along.
Thanks, Doc! You’re the best.