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.)

   Tilde Town