From: Tayssir John Gabbour
Subject: Re: Aha! moments
Date: 
Message-ID: <1162398591.556460.162160@h48g2000cwc.googlegroups.com>
Zach Beane write:
> What are some of the things that triggered your own Aha! moments? What
> sort of stuff delighted you when you discovered it? What advice would
> you give people who want to have more Aha! moments?

'scuse me for being late, but I've got some experiences to share.

Seeing a codebase full of cut & pasted (declare (special ...))
declarations, with like a dozen variables each. Made me realize there's
a poison tome out there teaching newbies all sorts of evil things.

Doomed Lisp code can accidentally carry the key to its own salvation.
There was this spaghetti codebase, which had over 30 undeclared global
vars. The nervous client needed to use it in a multithreaded context...
in two business days. Fortunately, since these global vars were
dynamic, there was a remarkably clean fix which took just part of an
afternoon. It exceeded expectations, as the client assumed I'd write
some "framework" which they'd use to go through the code manually,
rather than simply solving the problem outright.

The first chapter of Queinnec's _Lisp in Small Pieces_ caused me to
notice the similarities between Lisp and the GUIs I'd been developing.
Most explanations of programming languages are highly fetishized; the
Aho/etc Dragon Book makes writing compilers seem to be the most boring
job known to mankind. However, Queinnec is bright, and now it seems
about as interesting as anything else one might write.

"Real-world" Lisp code can certainly be grim. But I suspect more for
banal rather than exotic reasons. Spaghetti and sloppiness, sticking
everything in one huge file and in cl-user.

For some reason, I wish to plug Alan Kay; the second part of "Doing
with images makes symbols" is useful in daily Lisp work. Not to mention
"The computer revolution hasn't happened" is impressive. But anything I
write explaining why will sound contrived. (Incidentally, both are on
video.google.com.)

Watching really old Lisp flamewars is interesting. Weird positions like
"Lisp should just stick with either dynamic or lexical, because both is
confusing." Helps one not take stuff too much for granted...


Tayssir