I managed to get rid of the shaky/cold feeling, the sound
hypersensitivity, and most of the knee pain, using a combination
of theobromine, ibuprofen, lavender, basil, and tramadol, but the
dizziness, peripheral vision, and attention span problems didn't
diminish enough. Right now I feel like I'd be perfectly happy
standing up and playing the double bass, and mostly-ok playing bass
recorder, but quite not-okay piloting a ton of steel down I-95 at
thirty or forty meters per second to get there. I need to recruit
another Baltimore driver into
Three Left
Feet to carpool with, so that on the nights when I'm well enough
to play but not steady enough to drive, I'll have a ride. (Plus,
at just over a gallon of petrol each direction, and today's gas prices,
splitting the travel cost would be a good thing.) But for now, here
I sit, feeling frustrated again. So I'll spend [noticing the time
as I'm finaly done typing this] a hundred and sixty minutes writing
babble for my journal with a couple of CBS shows on in the
backgound ...
I decided to take out some of my frustration on virtual rocks.
In college, we referred to this as "rock hunting." The convenience
store referred to it as "making the Asteroids machine profitable".
Asteroids and Asteroids DeLuxe were among my favourite arcade games
(the others being Tempest, Robotron, Defender, Defender Stargate,
Qix, and Missile Command). I never cared for it on the 2600 (or
the 5200 for that matter), and it didn't feel right on the PC/AT
either, but the version that's on my Debian machine finally got me
to accept a raster version of Asteroids. (If I have to
explain to anyone what "raster" means and/or what the alternative
is, I will. If you've got access to an old Asteroids stand-up
arcade unit, it'll make more sense if you go look at it. And if
you already know what I mean, you probably understand why I care,
whether you agree with me on this one or not.) So sometimes
when I'm feeling tense and too scattered to feel like reading, I
fire little dots at pictures of rocks. After all, what's more
relaxing than doing lots of vector addition at no-time-to-think
speeds? (Okay, noodling on guitar is more relaxing, but Newtonian
mechanics plus blowing things up makes for a nice change of pace.)
Of course, I couldn't just play the game. I had to start
analyzing the types of errors I made. And while I make at least
my share of "thinkos", a lot of my piloting errors were fat-finger
problems -- mostly holding down a key a tiny bit longer than I
meant to (not surprising, if I'm mostly playing when feeling
physically out-of-sorts) resulting in over-rotation or too long
a burn, putting the ship on a vector other than what I was aiming
for.
Okay, this won't help my left-hand response-time problem, but
thinking about control mechanics got me thinking about improvements
to the user interface to make the ship more responsive, to allow
more delicate control. I like responsive machines -- and responsive
computer interfaces. When a well-designed and well-tuned control
system (or user interface) drives responsive and properly working
equipment ... well sometimes it's almost as though the machine
is reading my mind; ideally the machine feels like an extension
of my body. This is how a really nice pen feels -- not as though
I'm holding a writing implement, but that my hand extends to the
page and has become able to produce ink. This is what a bicycle
feels like to me when I get in the zone -- that I have become (as
I've described in the past) a half-mechanical centaur, not conscious
of controlling a machine, but extending myself into the
machine, so I "feel the road" with "my" tires, not (as
is obectively happening) interpreting vibrations transmitted to
my feet, ass, and hands through the frame of the bike. And this
is how driving a car should feel -- I think about traffic but
(unless there's a mechanical problem) I don't think about how to
control the car; the car "simply" Goes Where I Will It to go,
and if there's ice or snow or gravel, I "feel" how "my" tires
are holding. This is what's frustrating when a device doesn't
work correctly, too -- and what's tiring about beginning to learn
a new tool: I have to become aware of it as a machine, of
how I'm controlling it, instead of thinking only
about the desired results and having the tool "magically" do
what I'm thinking. If the chuck of the Dremmel keeps loosening
so the bit slips, I'm paying twice as much (conscious)
attention to what I'm doing as when things are working
smoothly.
I like responsive tools. I like control. I like controls
that work a lot like my body works[1], controls that let me
affect more than one aspect of what I'm doing with the same
touch. This is part of what I like about guitar (and expect
to like about the bass once I acquire enough skill with the
bow) -- my making subtle adjustments, tiny changes, to how
I hold and move my hands, give me huge differences in how a
note sounds. The gross movements determine the pitch and
the volume, the fine movements determine the flavour. The
guitar is expressive because it is responsive.
Similarly, subtle changes in breathing and embouchure make
enourmous differences to the sound of a saxophone ... but I
don't play sax well yet. (I'd like to.) To some extent
this is true of most musical instruments, but some instruments
are more expressive than others ...
But I digress (hmm ... I tend to do that more under the
influence of theobromine, I think.)
Thinking about how I'd like to fly my little picture-of-a-spaceship,
I started wanting pressure-sensitive keys -- what a synth player
would describe as "velocity sensitive with aftertouch". In
Asteroids, you have no control over the amount of thrust --
the thruster is firing or it's off, and the only control over
the impulse is the duration of the burn. With force-sensitive keys,
a player could control the thrust as well as the duration.
For that matter, one could even control speed of rotation.
Finer control. Yum.
But what would I do with an "aftertouch' keyboard when
not playing a video game on it?
Imagine if hitting the keys harder caused what you were
typing to be automatically rendered in italics, and harder
still translated to boldface, or even caps-lock. (Or if
your editor were in HTML-aware mode, it could automatically
insert <em> and <strong> tags. For some applications
there would be obvious default interpretations to apply, but users
could override them with their own settings, or invent idiosyncratic
controls for tools/modes without an "obvious" behaviour.)
Pressing backspace
normaly but then increasing the presure after the key was down
could trigger delete-word or delete-line. This could be
frustrating to get used to at first, but once an
operator with a delicate enough touch did get used to it,
it could be amazingly responsive and cut out one more level
of conscious thinking-about-how-you-do-what-you-do. Once
the hands were trained, you'd just think "stressed"
and it would come out emphasized; you'd just "think louder"
and it would come out bolded. With enough care, perhaps the
interface could be designed to distinguish between emphasis
(which in HTML should be done with <em> and is often
rendered as italics) and italics for book/movie titles (which
I do with <i>, but someone else might configure to do
with <span class="title"> or something). All it would
take (well, not that this would be trivial, of course) is to
come up with a set of fine nuances the system could detect,
that a human could reasonably train his or her fingers to
encode reliably, and intuitive enough[2] that the mechanics
of it could eventually become unconscious.
I don't think this would catch on -- at least not enough
so to make production of such keyboards cost effective --
especially since so much software would have to be modified
to make it at all useful (I'd make the keyboard drivers do
the detection and interpretation and report some sort of
class code that the OS would then pass along to applications,
but applications would still need to be modified to know
to look for that information in the input stream), and only
people as into control-control-nuanced-control-more-control
as I am -- as interested in making the user interface
experience as close to telepathy as possible -- would even
find any value in it. But as a thought exercise, I'm having
fun with the idea.
Combine this with an eyeball-tracking pointing device
(the cursor goes where you look; wink for a mouse-click)
and we could get very very close
to "thinking into the computer". On a good day, typing
is fairly close to that for me (with an editor I like well
enough, such as 'vi'), but this could add another dimension.
As it is, I think "<em>think</em>" and those
characters just appear on the screen[3] with some vague
awareness that my fingers wiggled along the way. This would
mean not even thinking about the characters less-than ee em
greater-than: I'd think "think" in italics and
the tags to make it show up that way would magically appear
in my editor.
This could possibly be one notch better than when I
was touch-typing WordPerfect and if I "thought a phrase in
bold" my left pinkie would flick out to the F6 key before
I thought about "how to bold this". In that one application,
on a keyboard with the function keys Where They Belong
(my hands stayed in "home position" when I hit the
function keys, which doesn't work as well when they're across
the top instead of down the left side), I could
"think in bold", "think in underline", "think a paragraph
indented", and have the text just come out that way
without consciously thinking about how. Adding
more dimensions of control to the mechanical sensors of the
interface could give me that again and a whole lot more.
Imagine selecting text in a browser with the mouse and having
the machine detect whether you wanted just the characters, or
the HTML code behind that chunk of text (the formatting, the
<a href> tag if any) in a one-step process based on
exactly how you held the mouse button, instead of a two-step
process of picking an option from a right-click menu, or
first right-clicking to get the URL then coming back for
a second complete select/copy operation for the text
(Our computers already make use of some aspects of "nuanced control",
of course, though only based on timing. First, the keyswitch
is "debounced" (depending on the physical design of the switch,
IIRC) so that electrical or mechanical jitter is filtered out
and the computer figures out that the fourteen electrical
spikes from the 'a' key only represented one "the user meant
to press this key" event, then the system has to decide whether
you've held it down long enough that it thinks you wanted a
series of the same letter repeated. Once upon a time this was
a novel innovation -- mechanical typewriters don't do that.
Now we consider it so natural that we never even think about
it: it "just happens". On some systems you can fine-tune the
amount of time before the computer decides you really meant
repeated characters, and how rapidly additional copies of the
character should be generated after that, so that a picky user
aware enough to know what to be picky about can tweak the
machine's reponse to match what feels "most natural" to him
or her, thus making the interface even more effective/efficient.
Similarly, on some systems the ratio of how far the
mouse moved to how far the mouse-cursor moves is constant
(but configurable) and on others the ratio changes depending
on the speed at which you move the mouse. That is, moving the
mouse a short distance very quickly may send the mouse pointer
clear across the screen while moving the mouse the same
distace more slowly only moves the pointer a short distance.
If these behaviours are properly configured, most users will
never consciously notice them until they switch to a computer
that works differently -- mostly, it will "just work" and they'll
find the computer "feels nicely responsive" without being aware
why. The speed
at which two mouse clicks are interpreted as "a double click"
instead of two separate events is another example of overlaying
additional control information onto one physical control by
encoding information in the timing.[4])
Of course, there'd also be a greater risk of "fat-fingering"
a mouse command or some text and getting a result you
didn't intend. And the devil's in the details -- there'd be a
lot of "noise" to filter out so that a user could get the same
results when bleary-eyed and clumsy as when fresh and perky.
Without actually building the devices,
writing the code, and playing with it for a while, it's
hard to say whether the power-and-convenience or the
magnification-of-clumsiness would dominate. But I'd love
a chance to find out.
Or maybe it's just the theobromine talking. An extremely
large dose of chocolate was involved when I wrote that bit
of erotic fiction people find disturbing, too, so my reality
may be slightly out of alignment at the moment.
As long as I'm thinking about unconventional user interface
ideas, how come the "pie menus" I heard Don Hopkins talking
excitedly about so many years ago have never made it into any
tools I use? Those sounded really cool, and I wanted to play
with them and find out whether the reality was as nifty as the
description, but we're still using linear list menus everywhere.
[1] When my body works to my satisfaction, that is. I'd like
rather more reliability from my tools than my body has
given me lately.
[2] The more intuitive the better, but it doesn't have to be
perfect on that score, as long as it's not so dissonant that it
becomes awkward to train. I'm a 'vi' user, and as powerful as
it is, and as well as I've learned to "think in 'vi'", I wouldn't
say that hjkl cursor movement is perfectly intuitive, or that
'L' to move to the bottom of the screen is at all intuitive. The
thing is, they're reasonable enough to be easy to train your fingers
to do -- to the point that a skilled 'vi' user who's been at it
long enough to forget what it felt like to be just starting to
learn it will find that these things feel "natural" despite not
having been intuitive back when they started.
[3] Unless I'm using a laptop with a keyboard just barely smaller
than I'm used to, or my fingers are really cold.
[4] Years ago I considered programming a computer to notice
idiosyncratic details of the timing of a user's keystrokes, so
that it could automagically detect which user was typing on it
(or if not that advanced, perhaps merely to include a rhythm in a
password to make it harder to break by trial-and-error than a
conventional text-only password). What I didn't think of until
just now is that even with conventional keyboards, we could make
"staccato" and "legato" typing mean different things.