2024-02-25 from the editor of ~insom
------------------------------------------------------------
I have ongoing work, which might take much of the rest of my
life, in thinking about my relationship to work and to
computing. I don't really have answers yet, although I feel
closer to them then I did a few years ago.
One thing I want to get out of my brain and on to ~paper~
electrons is the drive to learn better ways to do things.
I saw the phrase "pierce the veil" used the other day, in
its supernatural context, and knew that's the term that
could help me think about this. I've read various classics
of computer science (dragon book, dinosaur book, some
smalltalk-80 implementation books, little schemer, SICP) and
variously done exercises from them. I think I wrote about
SICP on here at some point. Nearly 20 years ago I also
became interested in Smalltalk and in Lisp.
Each of these interests sprang from the idea that there's
some deeper level of computer programming understanding that
I don't have -- either because I don't have a formal
computer science education, or just because it's a
non-mainstream language which hasn't been plumbed for
insight.
I am not sure that this is true, at least in a meaningful
way for me. I don't have so much hubris to think that I know
it all, but I think I know more than enough to build the
kinds of things that I want to spend my life building. I
don't know formal verification and I've never written a
compiler -- nor do I have great insights on establishing
strong boundaries in enormous million-LoC codebases. But I
don't want to either. I don't want to work on a million-LoC
codebase and I think my aesthetics are such that I consider
such a thing a bug (outside of, maybe, something like an
operating system kernel).
Some of these things which have been recommended for years
are great books and languages, and there's much to learn,
but also that learning has been done and these books have
been read and they influence much of computing around us.
Some innovations (JUnit and xUnits coming from SUnit in
Smalltalk, for example) are an artifact of "that's what
language these people were using at the time". The spread of
xUnit-like unit testing to other languages shows there's
nothing magical about Smalltalk that lead to unit testing be
invented in it. It's just what the CCCS was being written
in.
Lisp probably seemed like an amazing super-power for Paul
Graham (yuk) etc. when he wrote "On Lisp" or "Beating the
Averages" but much of the practical improvements of Lisp are
now available in many languages. They may be less pure but,
once interpreted languages with a reasonable set of basic
data structures (sets, lists, hashtables) became available,
they diluted most of the magic of Lisp. (IMO, YMMV, etc.).
Lisp and Smalltalk are rightly considered a sea-change
compared to C and Fortran etc. but less so when you hold up
modern Ruby or Python (which stole so many of the best bits.
Thanks, Lisp and Smalltalk!).
I think the zealotry around these languages informed me when
I was an impressionable youth. Even as a young teenager I
remember hearing that Lisp was banned from programming
competitions for being too powerful (probably not true, but
sure built up Lisp in my mind).
Greats of our field like Chuck Moore talk about the flow
states that one can get into with Forth and concatenative
languages (Lisp folks say the same about homoiconicity,
Smalltalkers about messages) -- but mere mortals can
experience these things in the messy-but-batteries-included
things that we have today.
Again, I don't know it all, but I've very slowly realised
that I know an awful lot, picked up over the last ~25 years.
Of course I want to be a life long learner, but it's like I
never switched out of student-mode to realise that acquiring
new knowledge and skills is not as appropriate, for someone
at my stage, as polishing the knowledge I already have.
(It's somewhat popular to call this Eternal Student Syndrome
-- I'm glad it has a name, but it's not a real diagnosis).
I have to figure how to fit this into my self-image and
adjust my habits accordingly.
(Postscript: I still enjoy writing Scheme, probably moreso
now that I don't expect it to open the mysteries of the
universe up to me. It's just a pleasing way to write
computer programs.)