My first program
I knew nothing about programming until I was 21. It’s not that I was under-age, and programming was not (yet?) prohibited, fun as it is. It’s not that I wasn’t a geek, I was: a Natural Sciences student at Cambridge, using a spreadsheet to track my meager expenses, running Debian (and SuSe, and Mandrake, and eventually Ubuntu) Linux on an already old-ish Acer laptop. It’s just that somehow I had never though of it as a creative activity.
But the summer of 2006 I had little choice. I had to write a program in (forgive me!) Visual Basic to run a cognitive experiment. My supervisor did exactly what was needed to get me up and running:
- declare some variables
- write an if statement
- write a while loop
- combine them to do a random bubble sorting
5 minutes later he was gone and I was in front of a confusion of lines of code, each shouting for attention. Before too long, I was coding…
Vertical learning cliff
…the cliffhanger above left you wondering. Did he ever learn anything better than Visual Basic..?
The answer is twofold:
- No, I learned DirectX first, which is even worse (at least were debugging and documentation is concerned)
- Yes, I learned Matlab. Well documented and much easier to debug (but not quite a “proper” programming language)
DirectX took me to designing more visually pretty coloured dots, and then to prettier, if psychedelyc, swirls of cyan and purple.
Matlab taught me modularisation, and DRY (Don’t Repeat Yourself) the hard way. I wrote scripts for the (mostly) “automatic analysis” package for SPM (Statistical Parametric Mapping). This was my first dabbling with XML files, which we used like aluminium, to wrap up analysis modules and build a pipeline scaffold. I picked up a Perl of wisdom or two and some Unreal UDK when working with Virtual Reality (VR) experiments. Finally, I dipped into a bit of R but, tired of pirates, walked the plank.
The plateau phase
Years passed as I workd on my PhD and made a few (unsuccessful) attempts to learn Python. Learned bits and pieces about the bash terminal, compiling from source and other Unix affairs. I dabbled in Version Control packages, and switched from Subversion (SVN) to Github.
Eventually, at the start of 2013 I realised I wanted more from life (and coding), so I took upon myself to stop being a mere coder and become a programmer.
Determined to learn the foundations of as many programming languages as I could, I enrolled in Codecademy and finished all the courses there (HTML/CSS, PHP, jQuery, JavaScript, Ruby, Python). Flat and gray knowledge, but a foundation to build more on top.
High resolution
One half of my 2014 resolution has been to learn to program in iOS. One Xcode installation and a Lovecraft themed To-Do list app later I feel (almost) ready to make a funky mathematical toy.
This blog is the other half, a way to document this learning process. Importantly, the very creation of this blog had to be uber-geeky. No Blogger, or Wordpress or Movable Type would do. Intead it uses Github Pages, Jekyll and Octopress.
351 days to go…