(Note that this breaks down a *little* in competitive situations, or around good friends, because even not-jerks might do a little teasing about such things.)
The thing that brings it to mind is . . . telling people how to do HTML over AIM . . .
Quick comment: AIM parses HTML. So if you type <a href="http://www.google.com">';google</a> in AIM, it'll make a nice link to Google. Now, knowing that . . . you can end up with conversations like:
someone: How do you make links in HTML?
tech: Type <a href="http://www.whatever.com">';this</a>, and it'll look like this.
someone: So it's like text?
(note: they *actually* typed <a href="link">text</a>)
someone: Hey, that didn't display properly!
tech: Yeah, if you actually want a <, you have to type <. > is >.
someone: Ah, okay.
Several days later . . .
someoneelse: So how do you write an angled bracket in HTML?
someone: Well, you just write <
(note: they *actually* typed <, of course.)
someone: Wait, that didn't - oh geez.
Because in order to write a literal <, you *actually* have to write &lt;.
And can you figure out how I wrote that sentance two lines up?
And can you figure out how to write it so that it'll display like what I actually wrote, in a comment? (so that the HTML parsing makes it look like what I wrote up there *before* HTML parsing.)
And no fair peeking at the source ^^
Hrm. I think I just put myself into the "jerk" category . . . well, lemme explain why I was thinking about this. I was thinking about this because of programming reasons - if you do a bunch of programming in the right directions, you'll often end up with a system where you can express incredibly complex instructions in just a line or two of code. For example, in the game engine I'm working on, I can just call .request( 600 ); on a graphics item to say "I'll need this loaded in 10 seconds." And it'll use small amounts of CPU time to load the picture gradually over the next 10 seconds to keep the framerate from having major problems, and I don't have to do a thing. Then when I actually need it, I call .activate() and it keeps it in memory until I call .deactivate(), at which point it deallocates it.
Except that's not what happens at all, that's just what it seems like. Because a single graphics item can be referenced by two, five, or ten thousand different entities in the program. So it keeps track of how many times it's been activated. If it's not loaded, it keeps track of when it will need to be loaded. And if nobody's using it, it doesn't immediately vanish, it hangs around for a while in case it's needed soon, then gracefully bows out in some amount of time (which varies on the graphics item).
In fact, this interface isn't limited to graphics. The interface is built so I can use it on anything - text, audio, and graphics primarily, since those are the big things, but . . . anything else. Things that the computer generates in realtime, even - why restrict it to files? I could set it up so a "graphics item" is actually a fractal created in realtime. And it would all work exactly the same.
And, of course, I wrote maybe a thousand lines of code or so keeping this whole interface working . . . which I completely ignore, because they're hidden, they're Behind The Scenes I Care About. Anyone using the interface would say "oh, that's easy! I could write that. This is a simple interface."
And of course it's a simple interface - it's easier to use this way.
Comp sci is the only discipline I know of where almost the entire thing is devoted to (1) avoiding as much work as possible, and (2) making everything you do look as trivial as possible.
What a weird world.
And now I'm gonna hit post and go back and check to make sure all my weird & escape codes worked properly :)