Over the years, I’ve made a few techie gifts that haven’t really been great gifts. I apologize. Things like those digital displays that were supposed to show the books you’re currently reading. Interesting for me to build; not that useful for you. But you asked me a few months ago about interweb places that I had gone over the years to learn about coding, and I started to compile a list in an email.
And as I watched you level up your laser cutter skills this year, alongside your quest to move to another school library, your request struck me as sort of intersectional. That is, laser cuttery is a tech-enabled hobby of yours, and learning new tech-enabled stuff is also what librarians do. So maybe finding some interesting tools or projects to tinker with code would be interesting? If it’s useful at home or in a library, this is an attempt to make something that I certainly find interesting, but to try and make it, this time, in a way that I hope is actually useful to you.
(This animation is actually an embedded program, not a gif. Code here. More on how to make stuff like it below.)
Getting started: the simple route
If you want to just dive in, the introductory Khan Academy course on programming is a pretty good because it’s chunked and sequenced well; it is 100% browser-based; it is highly visual; and it is very free: https://www.khanacademy.org/computing/computer-programming/programming
You could just head there and start learning things and come back later.
The answer to your question about places I went to try and learn some programming basics is a little meandering, so I put that in a separate post. The primary suggestion that post lands on is that if you want to learn some sort of coding, it helps to find the projects or tutorials that meet you where you are and that allow you to build that are interesting at that moment in time. In the next part, I try to match some suggested places to learn with some suggested projects.
Things to do with programs
You know this from learning any craft, including laser cutting: if you want to learn something, motivation is key. But “learning to code” isn’t really all that motivating in itself. In fact, I find that a lot of the arguments about “why you should learn to code,” along with the techie white guys often delivering those arguments, to be off-putting. Because of that, an unfortunate amount of the culture of learning about programming can be de-motivating. But there are great places to learn and great projects to work on. And once you start making stuff that does what you want it to, that’s when it gets fun.
So where might you want to start?
Write code that lets you draw and paint with the computer (separate post)
This post jumps into examples of how to use a visually-focused language called p5.js, right in the browser.
Write simple programs that focus on talking to the computer (also a separate post)
This post explains a few entry points for getting started with Python, probably the most popular first programming language for folks to learn. Some of this can happen in the browser, but this is also the road that heads quickly towards the Terminal command line.
Tinker with blocks of code. (As opposed to writing the code.)
There a burgeoning number of sites that offer introductions to programming without having to write code from scratch.
The original idea for this way of learning comes from something you’ve tinkered with before, Scratch. A lot of the the tutorial sites collected on Code.org work this way. Code.org organizes other folks’ platforms by K-college grade level, but they also have some in-depth courses like “Computer Science Discoveries” that look like they cover a lot of interesting ground. But the programming part involves not writing code per se, but in moving blocks of code around.
Personally, I don’t find the “code blocks” interfaces to be all that useful, mainly because once you’ve build something in one of them, it only lives in that weird set of blocks. On the other hand, it seem like a good route if you just want to focus on the mechanics and not the syntax.
I wish I could tell you I knew how to directly connect programming skills to laser cutting, but I don’t. Maybe we could figure it out together?
What I wanted to build here was a little tool that lets you play around with all of the Goodreads data you have stored in your account. But the learning curve was a little steeper than I thought. However, here are all the contents of my Goodreads shelves in a single XML file (you can access your own pretty simply). Python is probably the way to go here, as there are some built-in XML tools in the language.
Programming robots and micro controllers
This is where I think things get really fun: when your programs make things happen in the real world, not just on a computer screen. Arduino is a platform for prototyping this stuff. There are lots of pieces to orchestrate beyond the program, of course–circuits, motors, processors, wiring, resistors, LEDs. But when it works… well, it can lead to the kind of gifts mentioned at the top of this post. And other, more useful things too.
I hope there’s at least some useful starting places here. Happy programming.