šŸ‘½ Lee Tusman

← Nosebook šŸ‘ƒšŸ““

How I eventually learned to code

30 Nov 2021

9-minute read

Note: this is a replanted post from many years ago

A flower in Apple LOGO II
A Flower in APPLE LOGO II

I’m not a professional programmer. I use it to make art, procedurally generated simulations and experimental media, games, small utilities, personal automation scripts, websites, social software projects. I also teach programming.

Because of various aspects of privilege (tall, white, glasses, higher education…) I am often assumed to be an ā€œexpertā€ programmer, or that I became a programmer from a young age. Far from it!

Here’s my journey to learn to program:

As a kid I did not know anyone, child or adult that programmed. I did not have a computer and there wasn’t one in my school. But I was interested. I got a book from the library about LOGO. I read that book even though I couldn’t play with the language without a computer. I think my school got a computer when I was in 4th or 5th grade and it did not have LOGO installed. I only remember Number Munchers (early 90s). But reading about LOGO began to teach me computational thinking in my head. I was also into Chess as a kid, building chess sets. I remember drawing a connection between the movements of chess pieces to the idea of moving in a grid of coordinates in LOGO.

FORTH

I also got a book from the library on Forth. I was likely around 12 years old or so. My mother was going back to college and we got a home computer, a Macintosh. I had no idea how to find the Forth language or get it installed on my family’s Apple Macintosh home computer since it wasn’t available as a box for sale at the computer store, which had limited and expensive Macintosh software for sale in shiny boxes. I found one of those shareware CD-Roms with hundreds of games at the store, and it was for Mac! WOOHOO! This was incredible. My sister and I played these all the time. So many wonderful memories of exploring these weird games. There was a ā€˜robot’ fighting game (these simple colored circles) that you could write scripts for and have them ā€˜battle’. Again, these were like simple circles that would battle each other in a top-down view. This was a Forth-like language as I remember. I struggled and could get only a basic robot script to work. If anyone knows this game or things like it, please email me and let me know! Would love to revisit. Would have been mid-90s.

BASIC

I read about BASIC online. It sounded like a good beginner language. Since I had a Mac I could only find FutureBasic for Mac available at the store. It was expensive, $40. My mom bought it for me for my birthday or Hannukah gift. I couldn’t figure out how it worked. It had an IDE, which I didn’t understand, and no introduction, and it worked completely unlike the 80s books on BASIC that I found at the library. My mom asked a friend’s son to help me. He had some programming experience I think, maybe VisualBasic for PC, but he couldn’t figure it out either.

Pascal

I took a computer science class in high school taught by someone that I do not know if they could code. I think they were a substitute teacher. They had a workbook of sorts but I did not learn anything. I played Snood and similar games instead.

Failure…

So far this had all been a failure. I didn’t learn to code, didn’t know how to learn, and decided to focus on making music, art, printmaking, sewing, zines, reading, and biking and other interests. That consumed most of my life for a long time, well over a decade. I still have all of those interests!

Python

Well after college, almost a decade later, I wanted to try to code. I visited the FreeCodeCamp website and did tutorials. I learned about variables and maybe a few things like loops or conditionals. I found the Turtle module and made LOGO-like mini little tests. But I found Python boring. Or at least the tutorials I was reading. It had me compute various things like number of days, prices of things, text calculator app, etc. Ugh. I moved on.

Python Turtle Graphics

Scratch

I read Rise of the Videogame Zinesters by Anna Anthropy. I was inspired and wanted to make weird games. She describes no-code tools and I was excited to try them. She also described code-lite (not a real term I don’t think, just using it) engines and tools, including MIT’s Scratch. I had read about the Lego Mindstorms system, which allowed you to build and code with LOGO, developed at MIT’s Media Lab, but my family couldn’t afford it. I really longed to try it. But I learned that MIT had transitioned over time to working on Scratch. I made some games with Scratch, a children’s drag and drop lego-like language to make interactive projects. It worked as a desktop app (Flash) and later online in Javascript. I made simple and strange games and diversions.

Puzzlescript

I also tried out Puzzlescript, which is a minimal engine to build puzzle games, and other tools by Increpare. I was drawn to the strange and supportive community of Glorious Trainwrecks (the site still exists but the forums are no longer very active, as unfortunately most online forums have decamped for Discord, a startup which now ā€˜owns’ and controls these spaces), a website for other misfits building games in 2 hours or less, with all kinds of hacky, jokey, strange, experimental results. I met great and supportive weirdos in the forum on that site. It paralleled my experience working in art collectives and in improvisational music jams, noise music and the like.

Processing

On some nerd blog, maybe something like BoingBoing I read about Processing and learned there was an experimental intro workshop being taught by one of its co-creators Casey Reas. Although the workshop was taught in another country, the workshop materials were online for download. It sounded exciting. In the workshop, participants, who had no previous coding experience, were given the code of a clone of the 80s game Breakout, and then told to try changing things to see how that would make new forms. In essence it was breaking and hacking the code of this game to make experimental visual art. They published example images and gifs. I downloaded Processing and the starter code and figured out how to get it to load. Then without understanding any of the code I tried changing numbers, deleting random lines of code (I really did not understand much) and got sizes to change, colors, new number of balls, angles of bounces, etc. It did produce some wild and strange stuff. I was interested! Should I try to learn this?

I went online and bought a copy of the Learning Processing book from Daniel Shiffman. It arrived. I started reading the book and trying it out on my computer. I learned variables, functions, loops, conditionals. I made very simple frogger-like games.

I was excited and was working at a hackerspace in my home city. I kept learning, and started teaching. I became interested in Bash because I got a Raspberry Pi and I started to learn about Linux. I taught some intro workshops in Processing and Bash. I started to learn about Arduino. I was having fun.

A couple years went by as I worked more and more with programming - primarily Processing and Scratch! I was trying to implement the concepts I had in my head in code, and whas more successful in Scratch than I was in Processing at this point, but I kept learning.

Later, I attended one of the first iterations of the School for Poetic Computation and did a 2 week workshop program, meeting other artist-programmers. It was eye-opening. I also met professionals in the field for the first time.

A random walker written in PLOGO, my toy implementation of turtle graphics in p5.js
My toy implementation of PLOGO in p5.js showing a random walker in ā€˜retro’ mode

p5.js

I went through grad school, worked with mentors who implemented some of these coding libraries, did more and more coding of my own. I was a TA and started teaching. Nothing improves your own knowledge as well as trying to teach others to code! About this point as a TA I had to finally learn object-oriented programming, which had tripped me up previously. I learned so much while trying to help students. Things started to become more intuitive and I was having lots of fun, and stretching my brain, developing new pathways. I was doing code sketching and making installations and games. In grad school I also started to learn Unity as well as 3d and VR were in, despite not having much of my own enthusiasm, I figured they were good skills to have. I did not find it nearly as intuitive. Now I can see that Unity is a tool made by committee, for commercial customers, a collection of random parts cobbled together, poorly, that barely functions at points, and definitely not made primarily for learners.

Present

I can fast forward many years from there. I still love learning, and teaching too. For a while I concentrated solely on Javascript, as I’m interested in presenting my work on the web, so I put a few years primarily into mastering that. But I’ve since branched out to many other languages like Lua, C#, a little Forth, some Python for machine learning. I love constantly learning and challenging myself and teaching others. It took me forever to learn to code, but I don’t regret it, I just wish I’d found another entry point even earlier. If anything, I’m glad I felt encouraged to become an artist, writer and musician. I think you can learn to program at any age, and it’s best if you have other skills and interests as you can bring that to your programming interest, and be a more ā€˜whole’ person, if you will.