"My compiler"

a 40 year old line printer printout, labeled

I've held on to this printout for alomst 41 years. In 1982 I decided to get a bachelor's in computer science, to deal with the need to make money and get my parents off my back about finishing college in some way.
The last semester I took a course called "Language processing", IIRC. I naively thought it might deal with processing natural language. This was the final assignment in that course (which was about processing computer languages.)
My recollection is that we wrote a toy simulator, then a toy assembler, then a toy compiler. All of these were trivial compared to anything real, although I didn't understand that then. The professor advised it would be wise to use C, and yacc and lex. I had not learned C or UNIX, so I took the other (not recommended) approach of writing it all in Pascal, which I somewhat knew.
I believe I got it all working, despite not knowing a lot of things that would have helped. This was on a VAX running UNIX, in 1984, at the SUNY at Buffalo (you can see the faded printout of that at the top of the picture)
I think I was using vi. I think I also wrote letters to the student paper in vi that semester.
My hope was to be able to get paid a high hourly rate, and work part time, and focus on music in what I thought would be a lot of free time. I had shown some signs of being good at math and thought this would be easy.
As it turned out, this was a completely unrealistic plan. Much drama ensued.
Years later, I did for a while try and whole-heartedly devote myself to computers. My ultimate conclusion is that I am not that great. I think most working programmers are not incredibly smart, but they know how to use some current tools effectively. By tools I mean software - frameworks, languages. operating systems, databases, etc.
I mostly wrote apps that put some sort of front-end on relatively simple relational database back-ends. In my quest to master it all, I came to realize there are much harder things, and also that they are a bit much for me.
I got very into Linux starting in about 1994, which I was not "supposed" to do for my job. That ended up being some of the most useful knowledge I had, later, when lots of other developers were not as comfortable with that stuff.
It seems like now (2025) the tech job market is more difficult. I think getting programming jobs means knowing the tech in use at your prosepctive employer, and passing coding puzzles designed to test people's innate ability. I have a page justify.html about my early programming. I think I have a moderate aptitude for it. Lots of people I've worked with were more talented, and did stuff I couldn't understand.

So, this printout was going to be part of a meal ticket to get me out of being an adult human. IIRC the code, which is barely visible now, had functions and data structures to recursively (involving more than one function, calling each other) parse arithmetic expressions of arbitrary complexity (think of there being layers of parentheses). That's kind of tricky. I remember finding it difficult and feeling proud of having passed it. Now I wonder if the passing grade was a gift, but maybe that's a sort of self-deprecating fantasy.

John Holland
B.A., Computer Science, SUNY Buffalo, 1984