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