Three Tricks: What Code Really Is
Chris Klimas
How many languages can you speak? If you're a typical American, you probably know two languages, perhaps plus or minus one. Americans don't feel a great imperative to learn other people's languages. I guess partly this is because most of the United States is relatively isolated geographically-Canada and Mexico, after all, are the only countries that adjoin it, and most of Canada speaks English anyway-and also because the U.S., along with the British empire, has managed to inflict English on nearly everyone else. If you come from somewhere other than the United States, you might speak more than two. But probably not as many as I do.
I know nine languages.
The first trick is that their names are English, BASIC, Logo, Pascal, HyperTalk, JavaScript, Java, C++, and Perl. I'm not including the French I took in high school, because though I can read it well enough, I couldn't hold a conversation in French to save my life.
The second trick is that excluding English, these aren't languages that humans use to speak to other humans. (I hope.) They're what could be considered artificial languages; they were designed by humans to communicate with computers. They're artificial because they are extremely limited in their scope, and because the rules that govern what can be said in each of these languages are completely rigid.
A linguist named Noam Chomsky tried to create a formal grammar for the languages we speak. It was sort of like trying to work out the rules of Monopoly by watching people play for hours, only five hundred thousand times harder, because he wanted to find rules that would apply to every language humans ever spoke. He wasn't completely successful, but he did come up with a bunch of interesting ideas. Among them is the idea that there is a hierarchy of languages: the simplest languages can be described with finite-state grammars, then phrase-structure grammars, and the most complex, transformational grammars.
Finite-state languages can be visualized as words traveling through a maze towards an exit. There are very limited choices-in most examples of finite-state grammars, there are at most three or four ways to go from any other word. Consider, as a contrast, the number of words that can follow a word as rare as "hippopotamus" in English. Finite-state grammars are too strict to be used even for computer languages, but you've probably used them all of the time without knowing it. If you've ever used the find feature in a word processor or web browser, you've constructed a finite-state language.
Consider a computer looking for the phrase "Canada speaks English" in this essay. Computers don't look for words in a document in exactly the same way that we do. Essentially, a computer tries to use the words of this essay to traverse a maze, which, in this case, is a straight line. The line has three points, each with a word connecting them. To enter the maze will require the word "Canada"; to proceed to the second point in the maze requires "speaks"; and to leave requires the word "English." That's why it's called a finite-state language; there are a limited number of points in the maze. Any other words will move the computer back to the beginning of the maze. Once the computer reaches the end of the maze, it has found our phrase. Note that if we were trying to search for any three-word phrase beginning with "Canada," then the maze would have several branches. But since we're only looking for a single phrase, there is only one correct path.
So the computer begins with the word "How," up in the first paragraph. There's no path for that word in the maze, so the computer stays outside the maze. It goes through each word until it hits the "Canada" in the third sentence, and then moves inside the maze. To get any further, the word "speaks" needs to be next, but it isn't. The computer finds the word "and," which again drops it outside the maze again. Finally, the computer hits the phrase we're looking for later in the sentence, moving from "Canada" to "speaks" to "English," and then exiting the maze. It's found a phrase that's in the language we asked for.
This is a very simple language. It only has one phrase in it. But there is some flexibility in finite-state languages. For example, the language that contains any word that ends in "gry," whether it is a real English word or a made-up one, is a finite-state language. But finite-state grammars aren't flexible enough to describe computer languages. They're best suited to describing extremely small, rigid languages- languages that exclude more words than they include.
Instead, computer languages are a particular flavor of phrase-structure language called context-free. Essentially, that means that a word can be understood completely on its own. The word "pen" in a context-free language can mean only one thing. It can be something you write with or something you keep pigs in, but not both, because then you'd have to look at the rest of the sentence to understand which it means. Though parsing a sentence this way sounds like a simple enough proposition, it's actually very difficult to do mechanically.
Sentences in English-and in every natural language-are very flexible. If you say, "Molly and me went to the store today," you are grammatically incorrect, but people will understand you. If you feel the need to make up new words to communicate, you can do so as long as the words are understandable in context. If you want to leave out parts of your sentence because they feel redundant, you can go right ahead. The subject of the sentence "Hand me the pen" is implied. More completely, the sentence is "I would like you to hand me the pen." But everybody knows what you mean.
Grammatically correct sentences in English can also be ambiguous, too. You can create a logical impossibility just by saying "This sentence is false." And the sentence "The girl touches the boy with the flower" has two possible meanings. It can either describe a girl touching a boy who happens to be holding a flower, or a girl using a flower to touch a boy. And let's not even start with "I love you."
For the most part, ambiguity and flexibility are a good thing when it comes to natural languages. I think that's because nobody knows anything for sure. If our language demanded certainty, we'd be too afraid of being wrong to say anything. And flexibility means that we can expand our language to encompass things that have just been discovered or invented. It also means that poetry can exist.
And flexibility lets all of us make poetry in our everyday speech, simply by speaking the way we do. Everybody has little idioms of language that make us individuals. I say, "It'll only take point-two seconds" instead of "It'll only take a little time"; I say, "expensive times three" instead of saying "very expensive." Idioms are also a kind of gift to pass around; one of my close friends sometimes says "point-two seconds," too, and I picked up "Qué hora es?" from another friend as a non-sequitur way of saying "I have taken you to school" - which, of course, is another way of saying "I have defeated you soundly."
But flexibility and ambiguity don't work well in the realm of computers. Firstly, because computers are as black and white as you can get. Computers, since they're built around extremely tiny electrical switches, are all yes and no. When a computer asks you "Do you want to save your file?", there's no button labeled "Maybe." Though it would certainly make life interesting, wouldn't it?
The other reason why flexibility and ambiguity aren't such hot ideas when it comes to computers is that computers are often used in critical situations. Most of the time, if you speak confusing sentences, you don't die. But you shouldn't give ambiguous directions to a computer keeping track of lots of money or someone's life.
Since English isn't an optimal choice for telling computers what to do, programmers had to invent new languages, the most important of which is the one that the computer itself is born with. The chip that does all of the work of the computer, called the processor, speaks an extremely limited language. On the surface, it accepts an incomprehensible series of numbers as instructions. The number 13, for example, might tell the processor to add one thing to another. The number 2 might tell it to do nothing at all.
These numbers are pretty difficult to remember. We humans speak with letters, not numbers, so computer designers created little codes that corresponded to each operation. They started off as three-letter codes (called mnemonics, in the designers' hope that they would somehow help people remember what they did); ADD for add, and NOP for do nothing (literally, "No OPeration"). There is a whole host of operations available, and nearly all of them are important. There's JMP, that jumps to a set of instructions stored elsewhere in the computer, and LDA, which loaded a special place in the computer called the accumulator (LDA stands for "LoaD Accumulator") with a given value, so that it could be added to or subtracted from later on.
If this seems a bit arcane, that's because it is. This language is called machine language, and as such, is obsessed with the physical details of a computer's operation. To make sentences in machine language successfully, you have to have an intimate relationship with hexadecimal notation (that is, what the value of the number 4E00 means), the structure of a computer's memory (you're not allowed to store information just anywhere), and all manner of other technical details.
This was not an easy task. But if you knew all of these things, you could stand proud. Not only were you a certified genius, but your programs ran blindingly fast and took up very little disk space.
Speed and size are two-thirds of the trinity of computer science - the other (unfortunately, more neglected) part being correctness. Processors in the heyday of machine language were colossally slow compared to the ones we use today. The recent G4 series of processors, for example, can complete an operation in less time than it takes light to travel from your monitor to your eyes. They aren't even the fastest processors around, either. Early processors were fast, but not even close to beating the light hitting your eyes. It was up to programmers to squeeze as much out of the processor as possible. Disks in the early days held an astonishingly small amount of information compared to the hard disks of today, so smaller programs were better.
But machine language is hard to write in, and even more difficult to fix programs in. People found out that readability-that is, how easy it is to look at a program you hadn't written and understand what it was meant to do-was pretty important, and so they invented languages that weren't as close to the computer's workings, but made writing sentences easier. They also invented compilers, which are programs that translated the sentences of their new, easier languages into machine language.
The trick-which is the third one of this essay-is that it's hard to define what easier is. People get into fights every day over which computer language is best. Perhaps it's only a sign of how obsessive computer programmers can be, but I think it also indicates that people have incredibly different ways of expressing themselves. Even when faced with a task as limited as giving instructions to a computer, people come up with a nearly infinite number of ways of doing it. A Babel of computer languages has erupted, and will continue to as long as computers continue to exist.
I think it's interesting to look at the directions in which things have developed, because one of the great lessons that computer languages have taught me is that when it comes time to learn a new language, you learn a new mindset. Some languages are built upon the remains of older ones, but when a designer creates a new language, she does so with a completely unique perspective on how to tell a computer how to solve a problem. So when someone picks up a new language, it takes some time to adjust to that mindset.
Trying to cram English into French is a futile enterprise, and might even cause some French people to threaten you with bodily harm. To really speak a language, you have to immerse yourself in its mode of thought, its worldview. It may not be one you personally believe in, but you become a broader-minded person because of it.
The first computer language I learned was, appropriately enough, named BASIC. It came built-in with the Apple II that my parents bought when I was around ten years old, I think. Here's how you count to 10 in BASIC:
10 PRINT "I CAN COUNT TO 10. WATCH:"
20 LET X = 1
30 PRINT X
40 LET X = X + 1
50 IF X <= 10 THEN GOTO 30
60 END
BASIC is, well, basic. First of all, everything's in uppercase because when BASIC was invented, computers were limited to using only uppercase characters. This was because people had bigger problems to worry about than making computers conversational. It was a minor miracle that everything worked. Another notable feature is that each line has a number in front of it, which indicates the order of the steps. Line 10 comes before line 20, and so on. The numbering goes in tens because it left room in case you'd made a mistake and wanted to have the computer do something between lines 40 and 50. If that happened, you could write line 45.
The actual syntax of the language is fairly close to English. The PRINT command writes something on the screen, whether it's a bunch of words in line 10, or a variable, like line 30. (A variable's just a place to store information; you could store the number of meals you've eaten today in a variable named MEALS, for example.) The LET command stores numbers or words in a variable; it's sort of reminiscent of algebra word problems.
Line 50, though, is an example of what set off one of the most famous holy wars in computer science. All of it is over that word GOTO. GOTO is a way to change the flow of a program; if the program hasn't finished counting (incidentally, < and = smooshed together is an awkward way of writing "less than or equal to"), it goes back to line 30 instead of line 60, where the program ends. Simple enough, don't you think?
The problem is that when you start throwing GOTOs all over the place, a program becomes very hard to read. It also can become very disorganized, because instead of carefully designing a program's structure, a programmer can tape up its holes with GOTOs. Many of the leading programmers of the day began to eschew GOTOs entirely, because by that point, better methods had arrived. Edsger Dijsktra, a pretty famous guy in the field, wrote an article in 1968 for the Communications of the ACM entitled "Goto considered harmful," which set off a huge controversy that never really has gone away. Another article appeared soon afterwards, entitled "'Goto considered harmful' considered harmful" (which is a good example of programmer wit, I guess) that made a solid case for the continued life of GOTO.
Nowadays, GOTOs are still used, though they're just plain old gotos. Generally speaking, they're used when something catastrophic has happened-when the printer's jammed or the hard disk is broken-and the program needs to quickly, gracefully exit.
Pascal, the next language I learned, is very different from BASIC. It was meant to teach programmers discipline and organization in writing programs. As languages go, it's pretty formal. It took me a while to figure it out, just because-well, because it looks so different. It thinks so differently. Here's how to count to 10 in Pascal:
program Count (output);
const
highestNumber = 10;
var
x: integer;
begin
writeln('I can count to ', highestCount, '. Watch:');
x := 1;
while (x <= highestNumber) do
begin
writeln(x);
x := x + 1;
end;
end.
Writing a Pascal program, in many ways, is like following a recipe. Everything has an order to it. First of all, you have to declare that you're writing a program. I decided to call it Count. Then you have to declare whether it prints anything out (or, in engineering terminology, output) or asks any questions of the user (input). If the program reads any files or saves any files, you have to declare them up top, too.
Then come the constants. They let you define a certain value as having a name; here, I gave the name highest number to 10, the number we're counting to. There are two advantages to using names instead of numbers. First, the program becomes more readable; instead of having a value, you have a name that tells you what its purpose is. Secondly, if you want to change that value-to have the program count to 100, for example-you just change the definition once, in its easy-to-find location. In a very complicated program, changing values is difficult, because it's hard to remember all of the places where you used them.
Then come the variables. You have to say explicitly what kind of value each variable represents; it could be a whole number, a decimal number, a single letter, or even a line of text. But you're not allowed to change what type of variable they are in the middle of the program. This seems simple, but it also gave rise to a holy war of smaller proportions. The reason why everyone got peeved about it was that if you divide a whole number like 7 by 2, you get 3. But that's not even remotely right. It ought to be 3.5. But Pascal is very strict about not turning whole numbers into decimal numbers - which seems kind of ridiculous, doesn't it? A lot of people thought so. I'll explain what happened in a minute.
I've written a while loop here instead of the GOTO I used in the BASIC program, because one of Pascal's major aims was to eliminate GOTOs. The basic meaning behind the while loop is "while x is less than or equal to the highest number we're counting to, do this next step." It's easy to understand how many times we'll go through the loop, and why we'll stop. A GOTO is much more ambiguous.
Incidentally, there are no line numbers in Pascal, and nearly every language that succeeded BASIC, for that matter. Part of the reason why is that Pascal is so anti-GOTO, but it's also because a single statement can continue across many lines. The words begin and end push statements into a single, large statement. The steps of the while loop are put into one pile, and the whole program itself is lumped between a begin and end statement. Although I don't like Pascal much anymore, the finality of that "end." is still striking.
Anyway, Pascal programs are much more readable than BASIC programs. Because the language demands so much structure from a program, it forces the programmer to state things carefully, to not take shortcuts. There are many who think that there are too many restrictions, that they get in the way of writing an efficient program. They call Pascal and its ilk bondage-and-discipline languages. Java, though looser than Pascal, falls into the same category.
Their school came up with a language called C, which later became C++. Here's a C++ version of the count-to-ten program:
#include <iostream>
int main(int argc, char *argv[])
{
const
int highestNumber = 10;
cout << "I can count to " <<
highestNumber <<
". Watch:" <<
endl;
for (int x = 1; x <= highestNumber;
x++)
cout << x << endl;
return
0;
};
You can sort of see the Pascal in there, but it's pretty muddied. The ironic thing is that to me, this is more like English than the Pascal program. That's because C and C++ were designed to make writing programs easier for the programmer. A good example is that phrase x++ in the for loop. It turns out programmers do a lot of adding one to a variable, so instead of writing x = x + 1, C++ lets you just write x++. Of course, things got hairier as more conveniences were added. x += 3 is the equivalent of adding 3 to x. x *= 2 multiplies x by two. x += (x > 0) ? 1 : 0 means that if x is a positive number, 1 should be added to it.
In other words, C++ is very idiomatic. Although it can be written as a formal set of rules like Pascal, its origin is the thirty-some years that people have been programming. Experience, not eloquence, is its source. It evolved in reaction to the needs of its programmers, not by a formal design process. There have been formal rules set down for good C++, but these have been mainly after-the-fact.
That's why C++ programs always begin a function labeled main. That's why C++ programs return 0 at the end. Not because it makes some kind of logical sense-although there is some sense to it, of course -but because of tradition. Once you're inside the programming culture, it seems logical. If you're outside, tough luck.
Perl, the most recent language I've learned, takes C++'s desire to meet experienced programmers' needs to the next level. It was designed by a professional linguist who also happened to be a computer programmer. Its purpose, among others, is to accomplish tasks that can be stated easily in English but become overly complicated in other languages. It's a down and dirty kind of language. Screw counting to 10. Perl isn't called the Swiss Army chainsaw of programming languages for nothing. Here's how to change this essay so that every language besides Perl is now referred to as "some other language":
#!/usr/bin/perl
open ESSAY, "language.txt" or die "Couldn't open essay.";
while (<ESSAY>)
{
print s/ English|BASIC|Logo|Pascal|HyperTalk|JavaScript|Java|C\+\+
/some other language/g;
};
close ESSAY;
First of all, there are no declarations whatsoever here. This program uses two variables, but they're hidden. The first is the file ESSAY. The second is a variable named, believe it or not, _. (It's called $_, really, but that's because dollar signs precede variables in Perl. The reason why is tied up in programming tradition.)
But there are no underscores in the program! That's because Perl strives very hard to be like English. You can leave a lot of your program implicit. Let me explain what happens in this program. First, we open up the essay file. If for some reason that doesn't work, then the program stops with an appropriate message.
The first time I saw the do-this-or-die construction that's in the second line, I couldn't believe that you could actually say things like that. How could a statement like that be made into a formal set of rules? It's because the designer of Perl made the rules flexible enough that they aren't exactly rules anymore. You can definitely write an incorrect sentence in Perl, but there are about five thousand versions of the same correct sentence. One of Perl's maxims is that There's More Than One Way To Do It, and Perl takes its maxims very seriously. (The other notorious maxim is that the three virtues of computer programmers are laziness, impatience, and hubris.) It accommodates all kinds of people, from those who've just started programming to those who've been programming for the last ten years. People who've only ever used BASIC or diehard C++ hackers. Everybody can write in their own idiom.
The program then reads each line from the original essay (when you put angle brackets around a file, it means "read the next line from this file") and, using a finite-state grammar, makes the changes. The line with all the languages stuck in between strange symbols is a compressed way of describing the kind of maze that I mentioned at the beginning of this essay. (It's called a regular expression by Perl programmers, and leaning-toothpick syndrome by Perl's critics.) Basically, the line says, "replace all of the names of the other languages with the phrase some other language." It then writes the changed line to the screen.
So where's the underscore? I left it out, just like you leave out "I would like you to" from "Hand me the pen." Here's a more verbose version of the while loop:
while ($_ = <ESSAY>)
{
$_~=s/ English|BASIC|Logo|Pascal|HyperTalk|JavaScript|Java|C\+\+
/some other language/g;
print $_;
};
Makes things look more confusing, doesn't it? The program doesn't have to be written this way because the underscore variable has a special property. Whenever a value doesn't have anywhere to go-when I wrote while (<ESSAY>), the line I read didn't have anywhere to go - it goes into $_. Whenever you leave something out, it's assumed you meant to write $_. So you can write programs that make sense in a pseudo-English way without getting tied up with formality.
There's a down side to it, of course. You can get so stingy with your code that people looking at it may wonder where your program went. Perl's critics are fond of calling it a write-only language. That is, you can write a program that works, but you have no idea why, because your programs begin to resemble a pile of random letters.
But that's only true if you write in a messy style. Perl's like English in that you can be as verbose as you'd like. It's all a matter of personal preference. In this respect, Perl is the anti-Pascal. Instead of crystallizing your thought into an extremely formal language, you can write things the way you'd like. But you also have to face the consequences of your style. The actual process of writing a program is simple compared to the work of maintaing a program. If you haven't written good code, tracking down and fixing mistakes-not to mention making changes and improvements that users ask for-can be a hellish experience. But that freedom of expression is central to Perl. Instead of working hard to speak a foreign language, you can write something that melds the rigor of computer language with the expressiveness of English.
You can even write poetry in Perl. Perl poetry doesn't do anything functional-but then, poetry never was supposed to. But it makes me hopeful that someday writing poetry and writing code may not be so far apart. Poets and programmers are closer in their methods of composition than most people suspect (both have a tendency to work late at night and, of course, alone), but there is a difference in thought between expressing the hidden parts of yourself and expressing the most elegant solution to a problem. Perhaps the division won't be as definite sometime soon. Perhaps our invented languages will become as rich as the ones that we use to tell each other our deepest secrets.
Awkward Days
Chris Klimas
These are the dreams of the dead. This is what paddles through ivory streams when strange luck restores consciousness to a half-decaying knuckle or a corner of an ear, when for one time only, a body lying in the ground can remember the surface of its life. It cannot see the packed dirt around it; it cannot hear the faint tread of people above it.
It can only remember one of the days it spent alive. Never its happiest or saddest day; it isn't the day that its sister taught it how to tie its shoes, or the day it discovered oranges, or the day it decided that it didn't like roller coasters anymore. It is only the days that passed like icebergs in the midnight Arctic that remember themselves.
So she is caught in a traffic jam on the way home from the third day at her new job. The paperwork that she thinks she'll find so overwhelming tonight sits on the passenger seat of the Ford Taurus, loose edges slipping into the crevices of the upholstery, with page numbers and obscure nomenclature peeking out from the edges. It still smells like a new car though it's been a month since her parents bought it for her- they called it her new beginning, and they smiled as they signed the lease. And the afternoon light is so fixating, so tender and yellow, that it's hard for her to concentrate on the license plate of the car in front of her.
She takes off her sunglasses and rests them on the dashboard. Unintentionally she notices that the curve of the lenses resembles a smile just like the one she's wearing inside herself. It's the thrill of new productivity, of- a new beginning. She's only twenty-seven but the heels and the business skirt (gray, just like the car, just like the office building, just like the computer on the desk, just like the color of her eyes) make her feel thirty-two.
The line keeps inching forward slowly, the needle of her speedometer tickling itself upwards. She has already exhausted her conjectures about accidents, construction, congestion, or rubbernecking, so instead she observes the signs on the pickup trucks and the bumper stickers of the minivans. Everybody has their own message except for her.
She's never shopped for a bumper sticker or something to hang from her rear view. Before it seemed tacky; now she just doesn't have enough time. She says she's busy and everyone understands how lunch just isn't possible today or the movie just won't work out (maybe tomorrow, or maybe next week). But secretly she spends so much time in her bedroom just staring into the texture of the pillow, her eyes growing wet with a memory that won't quite remove itself from her life. She doesn't have problems and she never did. Just- things that didn't happen the way they should have.
Now the highway rises up on great cement pillars and she is drawn towards the sky, and she lifts the sunglasses up and presses surely on the pedal, and though the sun is turning her chin fiery and soft and collapsing her pupils into defiant dots, she doesn't feel free. But there's time for that once she gets home. Third days at anything are difficult.
So he's lying on the couch and his girlfriend's just broken up with him, right before he could reach the safety of an afternoon school bus nap, and his family keeps coming through the living room and asking him how he's feeling, and he'd really feel a lot better if they would stop asking. He says he's fine- it's what you're supposed to say and he's too lazy to disagree with himself. The afternoon cartoons keep coming on the television, the rooster and the superman and the distorted women with four fingers on each hand. They accumulate in his stomach in a mush of broken nightmares.
This isn't the first time he's been dumped and it probably won't be the last; that at least would be something. But this time is only part of the long chain that constitutes his life. Maybe next time he won't feel so bad, or maybe next time it'll be his idea to break up. Maybe next time it'll happen for the right reasons. It doesn't matter. It's only history.
He lowers his eyes from the television. The beginnings of tears have turned his vision muddly warbled. Seeing the crying start makes it worse, so that the tears increase themselves like bacteria dividing, and he buries his head inside himself and breathes sick, fluttering breaths into the fabric of his shirt.
After long moments in the darkness of his body, something explodes onscreen, and he raises his eyes to watch flecks of steel and ash descend through the sky onto the head of a blackened coyote whose eyes might resemble his own.
It's a perfect seventy degrees inside the house. It's an almost-warm day outside but his father refused to open the windows, even though he wore a sweater to breakfast and tugged at it uneasily as he ate his cream of wheat, even though his sister asked so politely as she went out the door. It's his father's decision. And he thinks that his father hates himself sometimes.
Maybe that's why he feels like this right now. Maybe it's only genealogy. He wishes that he could stand up and walk three hundred miles from his house and scream something, just to be able to say something definite, and then on the way back, go to her house and tell her all of the things he hadn't because he was worried that she'd be upset at him. And then he'd spit on her sidewalk and slam the front door in her face, the same way he had in his dream three days ago.
He folds the thought in his mind like a pastry crust, adding detail onto detail until he can almost see the way her eyes would crinkle in loathing and love and fear when he tells her the whole story: everything that he saw happening and everything that he wished had happened. It would be a long story, but it'd be worth the telling.
So she pauses as she lifts the fork to her mouth, the reheated pasta clinging submissively to the tines, because there's something in the sky that she can see just barely. The sun's already set and there are planes going places but there's something else that she can discern through the kitchen window.
She watches it until it's gone, and then she eats the rest of her food from the Tupperware container, even scooping some of the sauce from the corner with the base of her fork, and then she really doesn't know what to do. She walks to the living room with the pretense that she's going somewhere else, but by the time she's reached it, she still doesn't know what to do with the next ten minutes of her life. So she walks in slow circles around the living room, looking at the shadows cast by the floor lamp, watching her feet move up and down. She could call it dancing by herself but she's not dancing.
Then slowly through the window she sees it again in the sky, and she stands fascinated on one leg. She watches it happen until she feels something start to build up in her, an unpleasant pang of emotion, the music box of memory springing open again- so she turns away from the window and places her leg back down on the ground, just like how normal people do it.
The paperwork lies on the rocking chair, just watching her. So she throws it away.
So he's feeling better now, or at least more neutral than before. It only takes a little time to forget circumstance. The news has come on and in some ways it's reassuring to hear about fires and anonymous murders in the city, just to know that today is just like every other day. His mother is buzzing in the kitchen with spatulas and marinating brushes but no smell emerges from the doorway, his sister is talking on the phone about something that won't matter in a month, and he doesn't know where his father is.
Everything else in the house is right, so he has to fix himself or at least stop acting so broken. He's done with crying for the day, but he still lies on the couch and his arm muscles stay slackened.
So she's decided that she won't go back to work anymore. The skirt fit so right around her hips; the pencils felt so calming in her grip. But it's only a job, and it's only a job she's afraid of now that it's dark. Her parents wouldn't understand the reasons she feels inside her and maybe they're not good reasons but they're the only ones she has.
She can't be anyone but herself. She told them that a long time ago, but she couldn't explain it hard enough that they would believe her. She's only herself. Maybe if she gives the car back, they won't be angry. Maybe if she moves away again, they won't try to find her.
Maybe her life isn't going to be as bad as she thinks it will be.
So he's sitting at dinner and the knife slides out of his hand onto his glass plate. The noise startles him and as his sister turns to ask him another question, he looks up to the ceiling as if there will be something there for him to see, to know, to escape into.
He rolls his bottom lip under his teeth but the feelings won't go away. His father stares at him so fixedly and the expression on his own face as the tear comes down (by accident, Dad, by accident) must be incomprehensible to his father.
So she lies in bed and wishes she could see it again in the sky, to see it again, to smile, and to see it again. But it doesn't come.
So he asks to be excused from the table, to place the silverware in the dishwasher and to rinse the plate in the sink and throw his napkin into the trash. But his father opens his mouth in the arch of an O--
It'll pass, she murmurs. It'll all pass away.
It's only a day, he thinks. It's only one day.
Mischievous Shoes
Chris Klimas
It happens to everyone.
Lindsey's shoes are red. Dark red, kind of. They have white laces and they're almost a year old. Her toes have started to press against the tips of her shoes, but she's done so many interesting things with them that she's not ready to give them up yet. She was a lion tamer for Halloween in them. She's drawn the faces of the friends who've moved away under the soles. They're the first shoes that she, instead of her father, got to pick out, and they're beautiful and they make funny thick noises when she taps them against the floor when she's bored. They're what she looks forward to when she gets dressed in the morning.
But then they begin to misbehave. At first they do it in small ways. On a field trip to the zoo, when everyone goes up to look at the koalas, her shoes start to lead her towards the cave where the poisonous dart frogs live. Maybe it's true that she liked them more than the furry things, but it was her shoes that made her feet move, that made her get in trouble when the teacher noticed her slipping down the hallway towards the exit.
And when she loses track of time on the way home from school because she's so occupied with looking at things-sometimes the empty townhouses full of furniture so new that they look like models instead of real chairs and tables, or sometimes the tiny shiny pebbles embedded in the sidewalk-her ankles twist because her shoes have started to lead her somewhere else. Sometimes, it's towards the sewer grate hidden on top of the hill. It's loose enough that she can slide a leg in and then change her mind. Sometimes they want to lead Lindsey back to school, and only after she checks to make sure that she hasn't left any of her books behind does she stares down furiously at her shoes, willing them to calm down.
They always relent eventually, and she is free to continue down the sidewalk towards home, the path she wants to take, she thinks . . . she thinks. . . .
When the other kids notice it happening, she has to make up an uneasy smile and pretend that her shoelaces were becoming untied, even though she's got purple monster bowbiters to keep them in place. They don't laugh at her but they tell each other about her, the girl who doesn't know how to tie her shoes. The whispered sentences twist clumsily together in her memory: her parents have to do it for her every morning-isn't that so sad?-isn't she still a baby?-isn't she-isn't she-
Lindsey doesn't care. Because her shoes only misbehave sometimes, when she really ought to have been minding her way, and the only people who believe that she can't tie her shoelaces are the ones she doesn't like anyway, and besides, worrying about rebellious shoes is silly. She's going to be old enough soon that she can call herself almost old.
She doesn't give them up-she can't give them up-so she tries to make them like her enough that they'll do what she wants again. She takes them into the bathtub on Sundays and scrubs them down with the ruby soap that her older sister uses on her hands to keep them from growing scaly. Afterwards, she puts them on her windowsill and brings up the plants from downstairs to keep them company in the sun.
For a while, Lindsey believes that she's succeeded. But when she picks up her lunch tray after she finishes her Wednesday meal, her left shoe cuts tightly in front of her right, and in a moment that lasts less than two seconds but feels so remotely, deliciously long, her body comes falling down, some of the students' eyes already picking up on incipient disaster, others still eating their sandwiches calmly, and then her legs collapse together like two weak tree branches and the tray goes straight vertical, peas beginning to trickle down its edge into a pile that her head will fall near, and the gravy begins to grope blindly towards the ground, and there is something spinning in her vision but she cannot recognize its shape and then there is a cold, sharp impact and she's on the ground.
Her shoes point smugly at the sky.
The laughter is so tight around her that it seems to come from nowhere. When she tries to get up, gravy swirls over her blue blouse in all kinds of directions and so she has to spend the rest of the school day with a wet, vaguely brown tinge to her clothes. The lunch ladies try to rinse it out but it only adds a vague, awful smell, the smell of the sponges that they use to swab down the tables. It takes so long to get through three hours, and now there must be a new story about her, the girl who trips over herself. Or maybe they've made something else up to explain the fallen expression she wears over her eyes and the soggy pencil trapped in her fingers.
The afternoon air is thin outside. The sidewalk she follows is plain pale white; the fields she looks at are well-trimmed green. The baseball diamonds are still flat and wet from last night's rainstorm.
"What do you want?" she asks her shoes.
But shoes don't answer questions. They only twitch around her soles towards the right, towards the street that mothers are using to drive their children home.
"Stop it," she says, but shoes don't listen, either. They pull harder, on her toes this time. Lindsey stamps her heels into the ground and looks as fiercely as she can at her shoes. Her left one tries to make a furtive break towards the street but she holds it fast against the sidewalk.
"Where do you want to go?" she asks the shoes.
There's only one way to find out.
She takes a deep breath, just in case, and lets them walk. Her shoes-her favorite shoes, she reminds herself, her favorites-move with a unyielding cadence across the road just a few seconds before an deep green minivan would have hit her. Its horn comes honking after her but the sound isn't important enough for her to hear it. Walking on the opposite sidewalk feels just like walking on the one she should be taking, but when she looks across the road, her feet still mechanically marching at the ground, she feels a pang of something. Maybe it's regret-but she doesn't have time to think clearly-her feet keep begging for more speed-no, it's her shoes asking, not her feet-
Lindsey's shoes turn a corner and all of the paths she's ever taken before in her life disappear behind her. She doesn't catch the name of the road she's walking down, but it slopes down and down as it curves to the right, past houses full of empty garages and bicycles lying abandoned beside mailboxes. No cars or people or even birds come as she walks faster and faster. Her backpack slips from her shoulders and lands on ground that's already yards behind her.
The shoes lead her through processions of hills and curls of forests, through a road that diverges but seems to circle back onto itself, but still descends downhill. The last thoughts of home and school, the last memories of the people she knows, evaporate. Perhaps there are people now watching her, wondering why she walks so stiffly, but she sees no one.
She can no longer feel the friction of the ground, or even the slight impetus of her weight. Lindsey's never been lost in her life before-the closest thing is when her father gets lost sometimes on the way to the beach, when the directions that he's followed for years blur in his mind, and he'd want to find a new path back to the way they needed to go, but her mother always insisted on turning around and going back the way they came, and always her father would give in-
The sun stings her, as if she were just waking up. She is standing on a road that appears to be going nowhere she recognizes, with thick-bodied trees growing in a blanket of dead leaves leading the way. There are two yellow lines cutting through the middle of the old, mottled asphalt and there is also a man lying in front of her.
He doesn't move and neither does she.
There is no wind pushing Lindsey forward, not even the pull of gravity downhill. It is her shoes that press her closer to the man. The sun drifts behind a cloud and the man remains still. He's lying on his stomach, and he's wearing a strangely formal set of clothing; a dark blue blazer and black slacks. She can see a hint of tie beneath his shirt collar. His arms are stretched out like an airplane's. And a wet patch in his blazer, as if a drink had been dropped on him, as if-
She lifts up her fingers and recognizes the color. It's blood.
Her arms turn rigid and yet the shoes will not let her run or even turn away. It drips along the surface of her fingers, leaving behind a profound rosy color and an odd, haunting warmth. She cannot take her eyes from its motion.
Impossibly, the man's head lifts up, the eyes opening. The hands clutch at the ground. The mouth opens, a word trembling on the lips, and then nothing. The eyes watch her as they fall back, the neck muscles release their grip, and finally, there is no more.
The shoes let go and Lindsey runs. She no longer cares what direction she chooses; she only wants to be somewhere other than inside herself. Her legs almost skip along the surface of the road. There are no thoughts in her mind, no tears whipping behind her. There is nothing but a pair of yellow lines that lead her forward.
She rounds a corner and stops, because she realizes that she's standing at the opposite end of the road her house is on. The end that no one ever needs to use anymore because it leads nowhere anyone needs to go, not even to the dentist. She's only two minutes from home.
Lindsey walks slowly now, past houses she doesn't want to recognize. Perhaps there are people watching her again, shutting their curtains so that she won't see them, running to their front doors and locking them, because her hand, still hanging lifelessly from her arm, is as red as a beaten rosebush.
When the sidewalk guides her up the door to her own house, she remembers that her housekey is in her backpack, which must still be lying wherever it was that she dropped it. She can't remember where and she doesn't want to. She lifts a finger to the yellow plastic doorbell and presses. A flurry named her mother comes downstairs and opens the door.
Her mother asks, "What's wrong?"
Lindsey has to remember to speak.
"I can't explain it."
"Are you bleeding?" Her mother picks up her hand by the wrist and begins to look at it.
"It's only a tiny cut-" The words come out but they don't feel like lies. She pulls her arm from her mother and clutches it to her chest. "Please," she says, "Just let me into our house."
"I think we should go to the hospital-" her mother says but Lindsey raises her hand and states, "Look. It's healed already. I'm fine."
And then she's inside the house, and nothing else really matters. They ask her four thousand times how it happened, and invent eight thousand possible ways that it could have happened, but she repeats to them that no, it didn't happen that way. She's fine. Eventually she is allowed to escape upstairs, and by suppertime, Lindsey has washed her hand clean. The red water swirls down the drain and disappears.
But she keeps the shoes on.
They ask again at dinner, but the only answer she can provide is the one she gives herself. In school she sees the man's outline through the half-closed blinds; his form is hidden in the houses she draws, his eyes in her suns. Always he is standing; always he is looking forward- not at her, but at something taller and farther away than herself. Once she believes that he is behind her in the lunch line, and almost drops her tray again when it's only short Terrence in his place. More stories are invented about her- why her eyes are red at the corners and why she no longer raises her hand in class- but she still doesn't care.
She sees him riding the garbage truck on Saturdays. She sees him under the dinner table. She sees him in the palm of her hand. And then he enters her dreams. She can distract herself with the details of the texture of his skin; she may observe the strayest of hairs along the back of his neck. Sometimes he no longer has a face. Sometimes she subtracts the hands growing loose and damp along his sides. Other times she removes the clothes around his body into a mist of unmemory. Once she even forgets his body entirely in her dreams.
But he's always there. He cannot be unseen.
One night on her favorite boardwalk, Lindsey asks him, "Why did I find you?"
His mouth opens into a darkness and the bolts of the Ferris wheel above them begin to loosen. "Did you need to?" His voice is a darker, masculine version of her own.
"No," she says.
He walks away from her but she follows. The man wanders through a crowd of children - some of their faces smirking as if a long-ago joke is just reborn in their minds - and, discovering a hole in the boardwalk, he falls through.
In the dark sand she finds him facedown. The surf rolls backwards, retreating from its resting point deep in the sand towards the waiting ocean; shadows retreat from the round wood posts holding up the boardwalk. She kneels before him and, surprising herself, reaches a hand towards him. Slowly it goes, piercing the air with her fingertips and then, before she can touch him, he raises his head and asks, "Did you want to?"
"No," she says.
He sinks into the sand, furrowing a brown mist behind him. She waits for a long time, but the sand doesn't react. She walks a little and peeks up through the cracks in the boardwalk. There doesn't seem to be a sun in the sky.
"I didn't mean to," she says. "It wasn't me. It was just my shoes taking me someplace I didn't want to go-it's not my fault. Won't you leave alone?"
Three waves slide up the sand together, leaving a whisper behind: "No."
Lindsey sits on the ground. It's cool and dense. She asks, "Why not?"
The man behind her says, "Why did you find me?"
"My shoes," she says without turning around.
"But shoes don't do anything they aren't told to."
She is about to say something but it catches in her mind because she realizes that she doesn't know whether what he's said is true or not-though it must be-though it mustn't be-and the man begins to say something else, but she isn't there to listen, for she's woken up in a bright curtained haze, at home, in her bedroom. She remembers where she is once she can see her arms and legs.
In her nightgown she picks the shoes up from underneath her bed and places them at the bottom most part of her closet, beneath the empty shoeboxes and the receipts that belong to clothes that don't fit her anymore. Lindsey comes downstairs; already there is the warm scent of breakfast twisting through the spaces of the house.
Quietly, her feet move forward.