17 Mar 2021

Learning LISP

I've decided to learn Lisp and I guess I could end this post here but wanted to document how I came to decide to do this and the personal history involved. I was first exposed to Lisp in college in either 1990 or 1991 by my favorite professor. Unfortunately, at the time I wasn't very interested in what seemed to be an odd language that was nothing like our teaching language Pascal. (I would of course learn upon graduating that there wasn't really any demand for Pascal, but that is a story for a different post.) So my first experience with Lisp came and went without me learning the language.

My first job out of college was working on network management software at a company that focused primarily on network hardware. We worked on 5 different vendor implementations of Unix (Sun, HP, Dec, IBM, and Silicon Graphics.) A co-worker introduced me to Emacs and I was again faced with this odd language, Lisp. I learned enough elisp to write a few functions and when I got stuck went to my co-worker for help. I still use Emacs and while there have been periods of low usage I've always found a place for it in my software jobs. But I still never took the time to properly learn elisp and most of my Emacs configuration comes from copying elisp from the Internet.

My wife and I recently watched the AMC series [[][Halt and Catch Fire] and it caused a lot of nostalgia for the 80s and my early days with computers. Although the show focused more on PCs and Commodore 64s there was at least once scene in Gordon's garage where an Atari box was in the background. I was in the Atari camp primarily because of a local computer store that sold Ataris and I was friends with the owner's son at school. It is safe to say that since my first introduction to computers I'd rather spend time using a computer than pretty much any other activity. Aside from some tinkering in BASIC and entering programs from magazine (manually, often little more than arrays of hex codes) I didn't really do any programming. I played plenty of games and was really in to logging on to BBSes, making ASCII animations, printing banners and cards and just generally being in front of the computer. I've always had a bit of regret that I didn't get in to programming at that point but I'm not sure that I really even knew about any options other than BASIC.

In high school I finally had a proper introduction to programming. I don't remember the first class but I must have been interested in it enough to take the optional additional class (or classes?) where we used Pascal on Apple IIs. From there I was admitted to a C class taught by some people at Data General. Even with that exposure it didn't occur to me to pursue a degree in college that was centered on computing. Growing up we had been regularly pushed toward science and when I was applying to college it was to study Marine Biology.

After my first year in college I did change schools and majors and began a degree in Computer Science and I have worked in software jobs for most of my professional career.

Getting back to Halt and Catch Fire… The nostalgia translated into seeking out an emulator for the 8-bit Ataris and resulted in finding [[][Atari800MacX]. At the same time I was beginning to question (not for the first time) my relationship to technology, especially around the question of free software. I think Emacs is a great example of a successful free software project and I knew I could do a lot more with it than I was doing. But of course that immediately means using Lisp, both for configuration for any extension to Emacs I might want to create myself. Then I wondered, was there ever a Lisp implementation for the Atari 8-bit line of computers? Yes, there was. It was InterLISP 65 and someone graciously scanned [[][the manual] for it! This may seem like a strange impetus for learning a language that I already have a very good reason to learn (Emacs) but that is the way it went.

I already have a couple of books on Lisp programming, acquired during a Humble Bundle sale and of course there are a variety of free resources on the Internet. So far I've spent a couple weeks in my free time on it. I have SBCL and Common Lisp installed on my Mac and Slime in Emacs. I've also started using Emacs for both Org Mode and this blog. Hopefully one day soon I will have a Lisp program to share.

Tags: programming lisp
Other posts
Published with ~org-static-blog~
Font Fantasque Sans Mono
Creative Commons License by Stephan Cleaves is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.