Alex's log 2010-12-28

Words of power

“I can see why it takes a magician to discover a spell, but why can’t a non-magician use a spell once it’s known?”
“Well, some spells, the very simple ones, can be used by anyone—although the Mighty discourage it lest the ignorant be tempted. A major spell is too complex to be learned properly by a non-magician. A mispronounced word, an incorrect gesture and the spell becomes something else, often something deadly.”
Wiz thought about what it would be like to work with a computer that killed the programmer every time it crashed and shuddered.
“But can’t you teach people the insensitive spells?” he asked. “The ones that are safe to learn?”
Shiara shrugged. “We could, I suppose, but it would be pointless. Safe spells are almost always weak spells. They do little and not much of it is useful.”
“Can’t you put parts of simple spells together to make a bigger one?”
Shiara frowned. “Well, you can link some spells together, but… that is not the way magic works, Sparrow.”
“Wouldn’t it be easier that way?” he persisted.
“There are no shortcuts in magic. Spells must be won through hard work and discipline.”
“In my world we used to do things like that all the time.”
Shiara smiled. “Things work differently in this world, Sparrow.”
Wizard’s Bane by Rick Cook

What do Quake, Emacs, DOS and MS Office all have which webapps don’t? Commands. I can’t bind Reddit’s upvote to a key, or even just trigger it by name, let alone use it in a macro.

“Now hang on just a minute,” you cry. You pop open the Webkit inspector on the upvote button and point to the onclick event. “See?”

<div class="arrow up" onclick="$(this).vote('7dbc9e85c33dce99eda1cc42fadecbdbf48b113d', null, event)"></div>

Oh, very well. I switch to the JavaScript console and try to upvote an interesting Kotka post.

> vote 2
SyntaxError: Unexpected number
> vote(2);
ReferenceError: vote is not defined

“No, no, no! Don’t be silly!” you say. You return to the DOM browser, follow the div back through its ancestors collecting CSS class tags. “Good thing they’re using jQuery!” You triumphantly type out

> $(".link:eq(2) .arrow.up")[0].onclick();

and hit the enter key. “Ha!”

Reddit vote command screenshot

The wrong arrow turns red. I just shake my head. So close, yet so far.

Did commands get forgotten in the rush to webapps? I mean sure there’s bookmarklets and browser extensions and other doodads. But there’s sod all conventions, let alone manpages or even the humble “help” command. You need to have a good working knowledge of JavaScript, the HTML DOM and CSS just to do the basics.

Mozilla’s Jetpack is a far cry from the rocketjump macro every gamer with half a teaspoon of ingenuity can come up with.

> alias +rocketjump "+jump; +duck; wait; +attack"
> alias -rocketjump "-jump; -attack; wait; -duck"
> bind mouse4 +rocketjump

Sure, call it a clumsy hack, but it gets you to the quad damage faster than the guy trying to figure out the jetpack’s controls and that’s all that matters. You don’t need to be a rocket scientist to point an RPG at your feet, so why do I need to be a computer scientist just to bind the plus key?

Wanted; a user interface beamed back from the near future. Or perhaps the near past. Conkeror is a start, but it’s still very wizardy. In what was considered (pre-iDystopia) the most user-friendly platform, even mere mortals could create macros from the menu commands of apps and app authors didn’t even have to do anything special to enable this. No, I don’t even mean Emacs.