"Life? Don't tell me about life."
Last night part of my dream included writing some data on a
calendar. It was my own calendar, but a strange one -- I had written
very little on it, and the designers seemed to have given little
thought to practical use. The weeks overlapped between months, so
March's page also showed a week or two of April. On one page, the
calendar was further compressed because the designers had thought to
include a listing of all the movies projected to be released around
that time. It looked like everything was crap -- uninspired sequels to
moderately successful films.
When I awoke, I realized I'd been neglecting my own calendar. I didn't
take note of the 23rd, the date my employer inexplicably wants my
monthly timesheets so I can get checks on the 8th. It's a rather
inconvenient arrangement. When I see Lee I suppose I'll get him to
sign this timesheet. Unfortunately I haven't really recorded my hours
since midmonth, so I have to try to deduce how much I might have been
working for a week or two, and then I have to look within myself to
project what I might work in the days before the end of March. It's a
rather silly business, which always makes me feel a little
uncomfortable. No wonder, then, that I habitually put it off -- which,
naturally, only serves to increase my discomfort.
I notice I'm not sore from the long ride yesterday. I seem to have
found a rather ergonomic form of exercise, or I'm just young and heal
quickly. Tonight I'm going to a half-hour weight-training class at the
YMCA, which I hope will get me started on some strength-building
exercises. I'd like to develop some more muscles, but I can only laugh
at the obsession some men my age have with weightlifing. I've got no
interest in spending so much time pressing weights and eating
processed supplements. For me, the gym seems a strange place. There's
something odd about going to a building to stop in a tiny room and
exercise without ever moving. I think joining the Y was probably a
good decision. It's good for exercise with little planning effort,
because I can go to a class there any night of the week, and intense
exercise is good for my body. But I can definitely see that in the
long run, outdoor exercise is more rewarding than indoor workouts. At
the risk of sounding too pessimistic, working out indoors seems to
make exertion into just another modern chore -- work, food, and travel
are all technologically defined and scheduled in our busy lives, so
why not make exercise into another convenient task? Relatively
speaking, this criticism applies more to corporate gyms with a large
advertising budget and a focus on body image. The Y is a decent place,
and I have fun at the classes there. However, I'm starting to feel
that the possibilities it offers me for social and personal development
are limited.
I wonder about my knees. Both my knees intermittently display some pain
when I'm putting a lot of pressure on them, like running or doing the
frog kick in swimming. I had Nicole's dad, a physical therapist, check
them out a couple years back, and I can't really remember what he said
about it, though I still have the little list of exercises he gave me
up on my bulletin board. I didn't do them, ever. It's an issue I've
been avoiding, really. My little sister had some trouble with the
cartilage in her knee joints, I believe, and had several arthroscopic
surgeries. Her recovery seems to have been pretty limited. She hasn't
used crutches in a long time, but she doesn't feel comfortable walking
too far and can't ride a bike. Not only do I have no money or
insurance for intensive care on my knees, I really don't want to be
placed in the same sort of situation. I think the Y offers its members
a free session of physical therapy -- I might do well to make an
appointment.
Writing my pet program is proving difficult. My idea is to write a
minimalist program for organizing my life -- while I have fantasies
that it might be a great success, used by nerds the world over, I
think it's best to just consider myself the target user for the
moment. The basic paradigm of this program, which started me thinking
about the project, is that there are Projects and there are Tasks to
advance those projects. Projects are long-range goals, not necessarily
with any clear condition for completion. Tasks are individual
checkpoints in the realm of a Project (or multiple Projects). At
first, all I need this project to do is to display the uncompleted
Tasks and which Projects they relate to. I've been frantically
sketching ideas for more powerful interfaces, as well, but that can
come later.
After deciding on this basic structure, I spent a long time (well,
several days) agonizing over what language to use. The only obvious
criterion was that it had to be fun, as I am certainly not going to
slog through, pro bono, on some project I hate. My first choice was
Scheme or Common Lisp. My attachment to Lisp languages is twofold:
they were the first language I did really powerful programming in,
back in my first years of college, and they also seem very elegant and
consistently designed. Lisp might stand for "LISt Procressing" -- Lisp
is built around the data structure of the "cons" -- a two-datum pair
of pointers or variables, with conses chained together to form
lists. In computer science, lists are not particularly efficient or
specialized, but they do have the virtue that they can be used to
represent nearly anything. Much of Lisp revolves around manipulating
these lists in the very straightforward "functional programming"
paradigm, which emphasizes nests of functions, each with a return
value and no side effects, if you can help it. But in my opinion the
Lisp paradigm breaks down when you try to write more sophisticated
applications, with a user interface that is not in Lisp. Larger
applications seem to fundamentally depend on side effects -- maybe
that's an overgeneralization, but my point is things get awkward when
you try to do such a project in Lisp. So I thought about it for a
while and gave up on the idea.
I learned some Java for a class in college and I've been using C++ a lot
for my current job. But both of these languages suck. Actually,
they're quite good for many applications - in particular, Java is
great for quickly writing midsize programs, and C++ is a powerful and
versatile language, one of the most popular ever designed. But they
suck for me to use, so they have to be out. I even got as far as
writing some stub code for my project in Java, before I started
thinking about the perverse, boneheaded ways Java does all kinds of
stuff, and how much I hated casting every last object, and how the
clunky interface on Eclipse made me want to die, and before I knew it
I'd wiped the IDE off my computer and resolved never to use Java
again, except perhaps on my resume. So those two were out, I guess.
I don't know much about Perl, despite the fact that I spend a fair
amount of time altering a Perl script that controls simulation
batches. It seems nice, but for my tastes it's too focused on
practical matters and doesn't deal enough with a beautiful design,
like Lisp does. And I want to marvel at my language, darn it! So I
adopted Python, for no strong reason -- it's powerful and easy, I
guess -- but I got bogged down in the tutorials, because I've started
trying to learn so many disciplines without any real commitment and
drifted off, and this seemed no different.
I felt lucky when a forum poster referred me to Ruby. Ruby is another
"scripting language", commonly used for smaller applications, but it
seems to me there's no reason it doesn't scale well to larger
apps. It's a strongly object-oriented language, which builds on the
experimental idea in Smalltalk that everything is an object, or a
pointer to one. So even though you'd normally write something like "4
+ 5", in Ruby, that's syntactic sugar; it's shorthand for calling a
method of the number object "4", so an equivalent statement would be
"4.+(5)". Actually, OOP has had this idea for a long time. But I'd
never seen it until the other day, so I'm still in the phase of
wonder. Ruby also has a lot of cool concepts, some borrowed from Lisp,
like higher-order functions, which allow you to apply an operation to
every element of a list or array. This is invaluable, and I always
hated Java for making me iterate. Overall, it might be superficial but
I get the right "feel" from Ruby -- that the designers really shared a
lot of my ideas about how a language should work, and I'd really like
to use it for my project. I've been working on the basics and working
on stub code, but progress is slow.
I'm not too sure what to do with myself. I could be working on work or
Ruby, but I'm not. I could watch another movie I downloaded, but I
don't really have a good time doing that. I've been slumped in my
chair, reading dull threads on a web forum. No point, really.
This loss of direction and interest in the world seems to be the heart
of my depression. This morning I laid in bed for a while, waiting for
some reason to get up. It just didn't seem to matter. Staring at the
blank ceiling was boring, of course. But the alternatives -- getting
to work, entertaining myself -- seemed similarly distasteful. I've
done almost nothing today, in the four hours I've been awake. It's not
so much that I have a strong aversion to doing things -- but they
don't really cross my mind or seem worthwhile.
Sometimes I tell myself I lack a clear plan of how to proceed or
definite goals. That's apparently true, but I wonder if it's really
the whole picture. Sometimes I'll really take things into my hands,
like when I try to make a big scheduling plan for my day. That sort of
works, but it's not consistent. It's very frustrating. Things will
sometimes work better when I make an effort like that, but I can't
keep up that angry drive to turn things around all the time. My
momentum to keep struggling just falls off, and things grind to
another stop.
Extending this metaphor, now I'm thinking of something from my ride
yesterday. Riding a bicycle uphill is a fact of cycling life. Around
here, you always ride in the hills, and going downhill is a lot faster
than up, so you spend plenty of time climbing. When I climb, I notice
I'm not content to ride at a fairly slow pace in low gear. I tend to
push myself to be working pretty hard, regardless of the size of the
hill. Sometimes this isn't a bad idea. For instance, it's never a long
ride to get to the UCB campus, so if I push myself a little on the way
there, it doesn't matter because I'll be stopping soon. But if I'm on
a two- or three-mile climb, that doesn't work. I push hard at first,
but I can't keep it up forever. And once I'm winded, I'm at a serious
disadvantage -- even the low effort required to keep at a slow speed
seems like hell. It's much more efficient to ride at a steady,
sustainable pace the whole way -- my approach is comparatively
wasteful. Sometimes it just seems like my nature to work in furious
bursts, though, and I don't feel like it really lets me live up to my
potential.
Sometimes I feel like a sort of robot, or perhaps Dennett's "zimbo" --
an apparently human creature with a complex capacity to represent the
world, but without true experience or consciousness. (Dennett
presented this as a logical absurdity -- perhaps I am refuting it
thusly?) I wonder if I'm really a state machine, which should be
computationally equivalent to a zimbo. For the sake of argument, I
attempt to enumerate my mental state:
- I am hungry.
- I hear Pet Sounds by The Beach Boys. It's a nice record.
- My tailbone is a little sore, because I'm sitting with my legs up
above my butt, and the chair is not padded too well.
- I view a laptop computer display, and behind, my bed covered in
sheets and detritus such as books and papers. Behind, my messy
bulletin board and otherwise bare wall.
- Few smell or taste experiences are apparent.
- I have emotional state. My main emotion right now is in a certain
disembodied frustration and regret that I can pin on no source.
- I have active representation of my world. Primary active symbols
appear to include: the Emacs session I type this in, the keyboard with
which I type it, the song on the stereo, and the class I wish to
attend at 6:30. Most symbols are not active -- that is to say, there
are a vast number of things I am not thinking about, but could think
about.
It's a little simplified, but not by much. Overwhelmingly, my
faculties -- my senses of taste, smell, and proprioception, my
episodic memory of myriad people, places, and things, my procedural
knowledge of everything I have ever become skilled in, et cetera -- lie
idle. That's true of most people's minds, most of the time. Indeed,
there are cognitive limits emergent in the way our minds work, so one
can never be doing too many things at once. But isn't there a certain
disappointment inherent in this realization? Why can't I do all I'm
capable of, all at once? It's as if you bought a fancy car but
discovered you couldn't operate the radio and headlights at the same
time -- or you bought a computer and discovered you couldn't run all
the programs simultaneously.