Words fail us

Programmers talk to computers using precise instructions -- but when they communicate with people, human language betrays them. An excerpt from "Dreaming in Code."

Topics: Computers, Books,

Words fail us

Stamping [a feature in Chandler that would allow users to transform one kind of data into another, like making an e-mail message into a calendar event] aimed to introduce a kind of productive ambiguity to the computer desktop that more closely mirrored the way people think. It was not a simple concept, even for the designers who’d invented it; for the developers who had to make it work, it was even trickier. Computer programs used silos and trees and similar unambiguous structures because they helped keep data organized and limited confusion. If an item belonged to one group, it did not belong to another; if it lived on one branch of a tree, it did not live on another.

Human language is more forgiving: one word can mean more than one thing. This flexibility provides a deep well of nuance and beauty; it is a foundation of poetry. But it only leads to trouble when you’re trying to build software. As OSAF’s developers struggled to transform the innovations in Chandler, like stamping, from sketch to functioning code, they repeatedly found themselves tripped up by ambiguity. Over and over, they’d end up using the same words to describe different things.

Take item. To the designers, an item in Chandler was anything a user would think of as a basic piece of data: A single e-mail; an event on a calendar; a task or a note. But the back-end world of the Chandler repository [the custom-made database the program used to store information] also had items, and its items were subtly but substantially different from the front-end’s items. A repository item was a single piece of information stored in Chandler’s database, and in fact you needed many of these repository items to present a user of Chandler with a single user item like an e-mail: Each attribute of the user item — the subject line, the date sent, the sender’s address, and so on — was a separate repository item. At different times in Chandler’s evolution, proposals arose to resolve this problem — to “disambiguate” the word item. Maybe the term “user item” could always be capitalized. (This helped in written material, when people remembered to do it, but not in conversation.) Maybe another term for one or the other type of item could be adopted. (But some of those proposed, like thing, were even more ambiguous, and none of the proposals stuck.)

The Chandler universe was rife with this sort of word overlap. The design team kept using the term data model to refer to the list of definitions of data types the user would encounter along with all the attributes associated with that data type. For example, the data model would specify that every note would have a “date created,” an “author,” and a “body text.” But to the developers, data model referred to a different, more technical set of definitions that they were using to store and retrieve data at the level of their code. What the design team called the data model was really, in the developers’ vocabulary, the content model.

Then there was the problem with the term scheduled task. In the design world, a scheduled task meant an item on a user’s to-do list that had a date and time assigned to it. But for the developers, a scheduled task was something that Chandler itself had been told to perform at a particular time, like download e-mail or check for changes in shared information. Or take the term event notification. For the designers, this meant things like telling the user that new mail had arrived; for the developers, an event was some change in the status of a code object, like a window closing or a click on a menu item — and notification meant sending news of that change to other code objects.

Kapor would observe these little linguistic train wrecks and shudder. “We need to speak one language,” he’d say. “We should all speak Chandlerese. We have to fix the vocabulary.”

Finally, Brian Skinner stepped forward to try to do just that. Skinner had joined OSAF as a volunteer and helped Andi Vajda and Katie Parlante sort out the subtleties of the data model back when Vajda was just trying to get the repository started. Now a full-time OSAF programmer, Skinner had a knack for explaining developer-speak to the designers and design-talk to the developers. When the groups talked past each other, he was often the one to sort out the language. Why not, he proposed, set up a Chandler Glossary on the wiki? It would provide a single, authoritative, but easily amended reference point for all the terminology floating around the project. It could get everyone, literally, on the same page.

Skinner took arms against the sea of ambiguity. He produced dozens of glossary pages. He built a system for linking to them from the rest of the wiki.

It was a heroic effort, but it didn’t seem to make much difference. For one thing, usage of the terms continued to change faster than his wiki-editing could keep up. More important, the developers, who were already drowning in e-mails and bug reports and wiki pages, didn’t seem to pay much attention to the glossary, and the pages languished, mostly unread.

The glossary’s futility might have been foreshadowed by the outcome of another naming effort in which Skinner participated. OSAF’s Howard Street headquarters had a half-dozen conference rooms, and Kapor decided that it would be useful for them to have names, so that instead of saying “Let’s meet in the little conference room around the corner from Donn’s desk,” you could just say the room’s name. OSAF held a contest and solicited proposals from the staff. Skinner suggested using names from imaginary places; he won the contest and ponied up his $150 prize to fund a happy hour for his colleagues at Kate O’Brien’s, the Irish bar down the street.

The fanciful names — the two main conference rooms were Avalon and Arcadia — captured the spirit at OSAF, where imagining new worlds was on the collective to-do list. It was only later that everyone realized what a bad idea it was to have the names of the most frequently used rooms start with the same letter: No one could ever remember which was which.

Reprinted from “Dreaming in Code” by Scott Rosenberg. Copyright (c) 2007. Published by Crown Publishers, a division of Random House, Inc.

Salon co-founder Scott Rosenberg is director of MediaBugs.org. He is the author of "Say Everything" and Dreaming in Code and blogs at Wordyard.com.

More Related Stories

Featured Slide Shows

  • Share on Twitter
  • Share on Facebook
  • 1 of 17
  • Close
  • Fullscreen
  • Thumbnails
    John Stanmeyer

    Overdevelopment, Overpopulation, Overshoot

    Container City: Shipping containers, indispensable tool of the globalized consumer economy, reflect the skyline in Singapore, one of the world’s busiest ports.

    Lu Guang

    Overdevelopment, Overpopulation, Overshoot

    Man Covering His Mouth: A shepherd by the Yellow River cannot stand the smell, Inner Mongolia, China

    Carolyn Cole/LATimes

    Overdevelopment, Overpopulation, Overshoot

    Angry Crowd: People jostle for food relief distribution following the 2010 earthquake in Haiti

    Darin Oswald/Idaho Statesman

    Overdevelopment, Overpopulation, Overshoot

    “Black Friday” Shoppers: Aggressive bargain hunters push through the front doors of the Boise Towne Square mall as they are opened at 1 a.m. Friday, Nov. 24, 2007, Boise, Idaho, USA

    Google Earth/NOAA, U.S. Navy, NGA, GEBCO

    Overdevelopment, Overpopulation, Overshoot

    Suburban Sprawl: aerial view of landscape outside Miami, Florida, shows 13 golf courses amongst track homes on the edge of the Everglades.

    Garth Lentz

    Overdevelopment, Overpopulation, Overshoot

    Toxic Landscape: Aerial view of the tar sands region, where mining operations and tailings ponds are so vast they can be seen from outer space; Alberta, Canada

    Cotton Coulson/Keenpress

    Overdevelopment, Overpopulation, Overshoot

    Ice Waterfall: In both the Arctic and Antarctic regions, ice is retreating. Melting water on icecap, North East Land, Svalbard, Norway

    Yann Arthus-Bertrand

    Overdevelopment, Overpopulation, Overshoot

    Satellite Dishes: The rooftops of Aleppo, Syria, one of the world’s oldest cities, are covered with satellite dishes, linking residents to a globalized consumer culture.

    Stephanie Sinclair

    Overdevelopment, Overpopulation, Overshoot

    Child Brides: Tahani, 8, is seen with her husband Majed, 27, and her former classmate Ghada, 8, and her husband in Hajjah, Yemen, July 26, 2010.

    Mike Hedge

    Overdevelopment, Overpopulation, Overshoot

    Megalopolis: Shanghai, China, a sprawling megacity of 24 Million

    Google Earth/ 2014 Digital Globe

    Overdevelopment, Overpopulation, Overshoot

    Big Hole: The Mir Mine in Russia is the world’s largest diamond mine.

    Daniel Dancer

    Overdevelopment, Overpopulation, Overshoot

    Clear-cut: Industrial forestry degrading public lands, Willamette National Forest, Oregon

    Peter Essick

    Overdevelopment, Overpopulation, Overshoot

    Computer Dump: Massive quantities of waste from obsolete computers and other electronics are typically shipped to the developing world for sorting and/or disposal. Photo from Accra, Ghana.

    Daniel Beltra

    Overdevelopment, Overpopulation, Overshoot

    Oil Spill Fire: Aerial view of an oil fire following the 2010 Deepwater Horizon oil disaster, Gulf of Mexico

    Ian Wylie

    Overdevelopment, Overpopulation, Overshoot

    Slide 13

    Airplane Contrails: Globalized transportation networks, especially commercial aviation, are a major contributor of air pollution and greenhouse gas emissions. Photo of contrails in the west London sky over the River Thames, London, England.

    R.J. Sangosti/Denver Post

    Overdevelopment, Overpopulation, Overshoot

    Fire: More frequent and more intense wildfires (such as this one in Colorado, USA) are another consequence of a warming planet.

  • Recent Slide Shows



Comment Preview

Your name will appear as username ( settings | log out )

You may use these HTML tags and attributes: <a href=""> <b> <em> <strong> <i> <blockquote>