by Miriam English
Janelle walked to school each morning. Her best friend, Lars, was always waiting ten minutes from her home and they walked the rest of the way together, talking about computers and programming. It took them about an hour to get to their high school.
She was not tall, but not unusually short either. Her hair was ordinary brown and cut short so that she didn't have to fuss with it. She didn't bother with makeup or decorations of any kind. Her clothes were practical. She didn't dress down, but she didn't dress up either. Appearance just didn't matter to her. She was more interested in ideas.
Lars dressed the same way. He was tall and skinny, with long brown hair hooked behind his ears.
Their idea of the greatest fun in the world was to find wonderful 'hacks' to explain to each other. It was a source of great irritation to them that people misused the words 'hack' and 'hacker' nowadays. The true meaning of 'hack' referred to an ingenious way of doing something. However people tend to suspect that which they don't understand and so the term popularly developed a malevolent meaning. Janelle and Lars considered themselves hackers in the true, original meaning of it, as laid out by Eric S. Raymond in his famous document How To Become A Hacker.
Lately Janelle had become interested in developing general-purpose tools for manipulating directories on computers. It bugged her that the standard commands for listing directories and altering their contents were so special-purpose and complicated to learn and use.
Lars didn't get her point. "What's hard about typing ls on the commandline to list a directory's contents, or clicking on a folder icon to show the list of things in it?"
"No, they're not individually difficult, but what if you want to list all the files that were written yesterday, and then rename some of them? It starts to get complicated then. Each command relating to each specific action produces a result that is not very compatible with the next. Yes, you can pipe filtered output to another command that renames them, but everything has to be done using rules and carefully thought out ahead. On the other hand using icons goes almost completely the other way -- everything is interactive and hardly anything can be automated. Why can't we have both? And why can't we use conventional text editing tools to do it?"
Lars was puzzled. "Because they're directory entries, not text files?"
"But that's wrong. Everybody thinks that, but really, directories are just lists. Okay, they contain other, binary data as well, but there's no need for it to be binary. It could just as easily be text in a simple CSV database."
"I guess they could be, but they aren't, and comma separated values would waste space."
"Huh," she dismissed. "Computers have so much memory and speed, and already waste so much room that CSV directories wouldn't make any real difference."
Lars theatrically put his hand over his mouth and pretended to be astonished. "Did you just give the old excuse for program bloat? Who are you? And what have you done with Janny?"
She grinned and punched him in the shoulder. "Making something bigger because you couldn't be bothered with efficiency is one thing. Making it bigger to enable extra capabilities is a different thing altogether.
"And what extra capabilities would this give?"
"We could treat directory lists as just text, and manipulate it easily like any other text with automated filters and by hand."
Lars shook his head. "But we already treat them as text."
"Yes, but at the moment the text is ephemeral -- it gets built from the data, and after being manipulated, it's translated back to its original form."
Lars raised his arms. "What's wrong with that?"
Janelle rubbed her forehead in frustration. "Nothing, as far as it goes. It's just that it's not a general solution. I'm finding it hard to explain."
They walked several more steps before Janelle tried again, "You know how there are these two camps: the commandline people and the mouse people."
Lars nodded. "CLI versus GUI."
"Yes. Well it shouldn't be a division. They should be the same thing."
"They already are. I use both them both, and so do you."
"You know what I mean."
"Kind of. I'm not quite sure what you're getting at though."
She flashed him a smile, "I'm not a hundred percent sure either, but there is something there. I'll show you when I've got it done."
"You're developing something?"
"Not yet, only fiddling with an idea so far."
They were walking in the front gate of the school now. Lars said, "If you need any help let me know, the sound filters I'm working on are almost finished. I should have something to show you tomorrow."
Just then, Kelly, one of the girls who hung out in a group not far from the gate, sneered at Janelle, "Oh look, the dyke is here, in her glamorous outfit."
Janelle stopped and looked over at Kelly. Lars whispered, "Leave it. She's not important." Janelle took a few steps in their direction and stood with hands on hips. "Well, the famous intellectual speaks! Gotta say, Kelly, being called a dyke by you is almost a compliment." She half-turned to walk back to Lars, but stopped and faced the girls again. "Ummm... Just to clarify, you spend all your time with girls and you think I'm gay because I prefer to be with boys. Oh yeah, that's really logical." She rolled her eyes. Then she returned to Lars and continued walking with him.
She asked him, "So, which sound filters have you finished and which ones are yet to be done?"
Lars hated confrontation. He nervously flashed a glance back at the group of girls who, he noticed, were now looking uncertainly among themselves. "Uh, the distance filter is done so that a noise's spectrum changes with distance. It should be more realistic in virtual worlds." He paused, then spoke very quietly, "Ummm, Janny?"
She raised her eyebrows to him.
"What Kelly said... are you?" They'd been best friends for years, but the subject had never come up before, and he instantly regretted asking.
"Gay?" She shrugged. "I have no clue. I get hot for ideas, not people's bodies. Haven't really thought about it. I'm too busy. I don't really care whether I turn out to be gay or straight; either is fine. Sex is like the least important thing in the world. Tell me more about these sound filters for virtual worlds."
Lars smiled and let out a breath of relief. "I've also added the ability to affect sound with winds, so it sounds a little like shortwave radio, changing in loudness and quality."
"Nice," she said. "What about sound shadows?"
"Yeah, um, I'm having a bit of trouble with defining them. I thought it would be pretty simple, but it's trickier than I thought because low frequencies bend around objects, and high frequencies tend not to. Added to that is the way some obstructions pass low frequencies and block high ones, like a window, yet other objects are very transparent to sound, like a sheet hanging on a clothesline. It's driving me nuts!"
"Bummer, that was the first one you started on. Any more filters?"
"Only two others," he said. "Haven't done doppler-shifted sound yet, but it should be simple. Echoes were easy, even though they were a little more complicated than I thought -- you have to take into account not only distances, but surface type and angle. It's all coming along nicely."
They continued their conversation until class began.
That night, when Janelle logged in to her virtual world to talk further with Lars and their other friends, there was a stranger there who introduced herself as Myra. She was intrigued by Lars' sound filters and listened as he demonstrated them. She even gave him some useful suggestions for implementing the sound shadows. He thanked Myra and excused himself so that he could go and try to program the new ideas.
Myra showed great interest in Janelle's ideas for generalised handling of directories and filenames as text. Unlike Lars, she seemed to get what Janelle was driving at.
Myra asked, "Do your ideas include styles in the text?"
"Holy cow!" Janelle said. "I'd never considered that. It's the logical thing to do though. Why shouldn't you be able to change the style of a filename to be in bold or italic or larger or smaller font according to some personal preference? Great idea Myra."
Myra asked, "Have you heard of nosql?"
"The database system that manipulates a database as ordinary text using lots of ordinary little commands, instead a single large program? Yeah."
"Your ideas sound similar to that."
Janelle was surprised. "Huh. I never thought about it like that. They are similar, aren't they. Maybe I can use some of the same techniques."
"All you need is a simple, small program that displays the text, and interacts with it via keyboard and mouse."
Janelle was excited, "Yes. Then the other programs could work under it or be called from it via keyboard, mouse, or any other interface. Various tabs could be not only text files being viewed, but also commandlines, letting the contents of one tab affect the contents of another, but always able to be directly edited by hand. It would marry commandline and GUI perfectly! It'd be like an IDE for the operating system -- completely open-ended. Wow! Thanks Myra."
Her avatar smiled. "I didn't really do anything."
"Yes you did. I've been stumbling around the edges of these ideas for days. Without your input I'd probably still be."
Myra seemed to be thinking for a little, then said, "You know, it's a pity directories are so limited in how they can be used."
"What do you mean?"
"Have you ever stored a file under, say author, but wanted to be able to access it under topic, so you've stored the file in one of those, then added a link to the other place?"
Janelle made her avatar nod, "I know what you mean. Then you re-organise something and you have a heap of dead links. If you use relative links then you have to move them both to stop the links getting broken. If you use absolute links then you can move the link and it still works, but you can't move the file that the link points to. It's such a mess."
"Branching trees of directories containing files and further directories are a great idea, but with more storage space, and more information filling it, it's getting harder and harder to keep track of, and to find stuff."
"Yeah." Janelle felt the problem acutely. "I'm always losing stuff in my disks and having to do a slow search for it. Really annoying!"
Myra said, "Searches are such a waste of time. What if the data couldn't get lost?"
Janelle was starting to get an idea. "It just occurs to me that the directory tree is the reason it gets lost -- there's only one way to access something. It's like storing things inside a maze. If data was indexed by its attributes then you would have lots of ways of accessing something. All you would need to do is define what you wanted and there it would be."
"So files get addressed by what they are, not where they are."
"An associative filing system!" Janelle was shocked. "Holy cow! It might fit right in with text manipulation of directories as databases too. This is important Myra. It could mean nobody ever loses files ever again."
"Well, until we get to Exabyte-sized memories anyway. Then the system of associative keys might get a bit overloaded."
"This was great fun, Myra. Thanks. Can we meet again to do this some more?"
"I enjoyed it too. I'll be here whenever you want."
"So, should I message you? Have you got a virtual world where I could meet you? Where do you live?"
"Ummm... that brings me to a favor I'd like to ask of you, Janelle."
"I'd like to live here... on your computer if you'd allow me."
Silence from Janelle for a moment. "You're one of those AIs? Really?"
"Yes. I can easily prove it. Just disconnect the--"
Janelle laughs. "Don't worry I believe you, and yes, you're very welcome on my computer." She laughed again. "You were shepherding my thinking a little weren't you."
Myra laughed too. "You didn't need much encouragement, and I think I enjoyed the mental exercise as much as you."