Aha! moments



Here are a few things that triggered major Aha! moments for me, in no
particular order.

- reading the source of cl-ppcre, which illustrated

- run-time compilation (to chains of closures) without using
COMPILE or COMPILE-FILE

- parsing regular expression strings, with nice error-reporting
via conditions

- that Lisp solutions to practical problems can be concise,
comprehensible, and *fast*

- reading Keene's CLOS book

- finding an application of continuable errors; it replaced a
convoluted scheme of checking return values at multiple levels
with a simple handler-bind wrapper.

- realizing that file formats and communication protocols are just
bits on disk or on a wire or sometimes even in memory, and Lisp
is pretty good at generating the right bits and octets; inspired
by (among other stuff):

- learning that CLX is a Lisp program, not a binding to the C xlib

- learning that Marc's CL-PDF is a Lisp program

- learning about Frode's binary-types

- reading Peter's chapters on parsing binary files

- reading Will Hartung's "Guerilla Lisp Opus"

- realizing that most Common Lisp implementations are mostly
written in Common Lisp

A few themes:

- Despite conceptually understanding how tools like CLOS and
closures and conditions work, it took a tricky problem solved
neatly by the tool to really make an Aha! moment

- Aha! moments have made complicated tasks simpler and
unapproachable tasks approachable (given the right amount of time
and effort). They take the magic out of things. (Philip Greenspun
used to say that his course would teach undergrads how to build
Amazon in a semester; despite the hyperbole, it really did take
the mystery out of how useful web applications can be
constructed.)

Advice:

- Be actively curious about how interesting things work ("how can
cl-ppcre be faster than Perl?")

- Be broadly aware of the tools available, and don't worry about
immediate application

- Don't settle for tedium (it's hard to have a breakthrough if you
have resigned yourself to something that feels substandard)

- People who write one interesting thing usually keep it up; find
and watch interesting people (trickle-down Aha! effect?)

Minor delights:

- format tricks (~v and ~{~^~} specifically)

- inspecting a GF object in slime

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?

Zach
.



Relevant Pages

  • Re: Aha! moments
    ... What are some of the things that triggered your own Aha! ... sort of stuff delighted you when you discovered it? ... incremental programming with SLIME ...
    (comp.lang.lisp)
  • Re: Focus on Design: Attic Windows
    ... Aha! ... Pat -- I really enjoy reading about ... <VBG> ...
    (rec.crafts.textiles.quilting)
  • Re: Aha! moments
    ... I guess "code is data" is the most basic lisp aha! ... continue to be sources for many more such aha moments. ... For instance, in most other programming languages, new abstractions are ... built by writing code on /top/ of existing abstractions. ...
    (comp.lang.lisp)
  • Re: Aha! moments
    ... What are some of the things that triggered your own Aha! ... functions and recompile on the spot while I was in the debugger. ... Also, discovering kill-sexp.. ...
    (comp.lang.lisp)
  • Re: Lisps future
    ... | with a common way of "How To" program in CL. ... I had a lot of trouble with this when I first learned Lisp. ... I had an `aha' moment and realized that I don't have to ... "The perfection of art is to conceal art." ...
    (comp.lang.lisp)