It’s Ada Lovelace Day once again, and given that I actually remembered it was today in time to write something to mark the occasion, I really had no excuse not to. But what to write about? Then, inspiration struck, what have I been doing recently, as my down-time at work project? I’ve been learning to code. What better way to honour the first programmer, than to talk about coding? I’m not by any stretch of the imagination a programmer myself, but I am learning to code. So my contribution to the day, this year, is a history of coding, not in general, but in the specifics; the history of my own encounters with coding.
The first time I ever tried to code something, I was eight or nine years old and had no idea that was what I was doing. It involved an old Acorn BBC Micro and a Turtle. (Googling now reveals that what we actually had was the Roamer, not the Valiant Turtle, but we always called it the Turtle.) It was a maths practical exercise, involving collaborative working and calculating angles to make the Turtle draw shapes. It didn’t teach me to love maths, but it did teach me that there was a lot more to computers than word-processing and games.
My next encounter with programming was appropriately enough in Computing class. After years of disappointing IT classes where I mostly learned how to touch-type and how databases were structured, it was a delight to finally get to actually code things. But even then it was mostly writing little programmes that did basic maths or drew ASCII art. It was too little, too late in many respects, as most of my classmates who were interested in programming had already figured the basics out themselves and the rest of us had lost interest.
As a student I discovered the joys of the internet, and figured out enough html (and good old BBcode for forums) to get by, until Myspace came along with its accidental customability, at which point it was time to break out the big guns. I borrowed a book from the library, made learning html my summer project and went to town. It was an ideal first playground for html, tinkering within a pre-existing structure, learning what worked and what didn’t, both in terms of practical coding and design principals.
Over the last decade or so, as website user interfaces grew steadily better/more layperson friendly, what few coding skills I’d picked up over the years, slowly atrophying as I needed them less and less. I still defaulted to the ‘text’ or ‘html’ options on blogging sites and other content management systems, partly to keep my hand in, partly because the pretty ‘visual’ or ‘rich text’ interfaces are still not quite as clever as they think they are.
And probably, that would be that, I would never have bothered to acquire more coding knowledge than was necessary to make life easier/prettier on the internet of the early 00s.
Except, well, robots.
I love robots. Above all things those afternoons lying on the floor with my classmates, a turtle and a really long roll of dot matrix printer paper, taught me, was that robots are awesome. My practical adventures in robot building started as a fun way to learn more about electronics, but the more I built robots the clearer it became to me that there was a definite limit to what I could do with a robot without programming it myself. (I literally stood in the middle of the Small Boards Club meeting and announced in doom-laden tones, “I’m going to need to learn to code properly, aren’t I?”) If I were the sort of person who believed in fate, I would have suspected the universe of giving me a nudge.
The nature of my work as a tech, is that the work goes in phases, with lulls and rushes. Related to this, we have a variety of ‘bespoke’ tools at work that one of my colleagues has built over the years in lulls. Which are great, except that, well, what if the person that coded and built them gets hit by a bus. So they’ve been encouraging the rest of the team to get a better understanding of coding to help maintain them. And well, I wanted to learn to code, didn’t I? Who was I to turn down a work approved excuse to do so. So here I am with a work downtime project – it’s in my annual review paperwork as an objective – that is currently, nebulously labelled, ‘learn to code’.
The main problem I’ve come against in my attempts to learn to code is that an awful lot of tutorials fall into one camp or the other, of either being the absolute basics for absolute beginners or presuming that you already know one language well and are just learning a new one. (I’ve encountered this in many areas where I’ve been trying to learn something new as an adult, especially languages where all too often, resources are geared to either absolute beginners or the practically fluent, with nothing in the middle for the intermediate learner.) So I went back to basics and did an intro to HTML course – about 75% of which I either already knew, or realised I had known that at one point – but the other 25% was vitally useful, giving me the structural knowledge that I’d never previously needed. I’m working on CSS at the moment, and while it still occasionally melts my brain, and Java Script (my original goal in all this) remains even further down the road, it now seems like an achievable goal.
C++ still gives me the heebie jeebies, but one day, I may eventually be that kind of sound person.