September 26, 2017

When I was a kid, we had a Commodore 64. That's right, 64kB of RAM, all packed into this gorgeous package:

Commodore 64

One day in junior high I found a book in my basement about programming it. The book had programs written in Commodore BASIC that you could type in to create games. I got right to work, and I hated it. The program didn't work. I gave up. No more programming.

... until...

TI-85 Graphing Calculator

The TI-85 graphing calculator, my companion in math class throughout high school. There were some games for these things being passed around the school, and one day I got ahold of one that someone had modified. Curious, I took a look at the program to see how he did it, and I recognized a lot of similarities to the BASIC I vaguely remembered from my time with the C64. Before too long I started modifying programs myself, then writing my own. In my pre-Calculus class, every time we learned a formula I wrote a program to do it for me. This meant I finished my homework faster than everyone else while also learning the concept better (after all, to get a computer to do something, you have to really understand the steps involved).

At one point in high school I signed up for a basic programming class. No one else did, so the class never happened. I took a study hall instead, and didn't program again for about 17 years.

Instead, I went to college and majored in music, with an emphasis in recording. After graduation, I worked at a punk rock studio for a couple of years. At one point my boss wanted me to build a website, but I had no idea how.

When I left the studio, I became a guitar and bass teacher. When the music store closed, I opened my own music academy. When I sold that business, I kept working in music education, which I still do today at Music House School of Music. At every one of those jobs, however, I became "the computer guy." I always knew just enough more about computers than my colleagues that they brought me their problems, until in my most recent job I earned the title of Tech Manager, a job which was created for me. At this point, I still had no experience with programming outside of calculators and Commodores.

The thing is, there were things we wanted to do. I got asked to make small changes to the website, so I had to figure out some HTML. I got asked to send customized emails with Zapier, and to do that I had to learn to manipulate strings in Python. I got asked to migrate info from our old CRM to the new one, and had to deal with a JSON API. All the while, I knew that our old WordPress website was crumbling due to lack of maintenance and that we were due for a rewrite. The question was, what kind?

To answer that question, I started to learn. First, I took Harvard's CS50 online to learn programming basics. Then I started researching web application frameworks, because we wanted a lot of features that go beyond a static website, but wanted the app to be integrated into our public website to give a unified online experience. Specifically, we wanted to create an app for our students and teachers to communicate with one another, so a student's guitar teacher can know what songs the student's band is working on, or a student's parents can check what their assignment is, or any number of other things that are involved in operating a school full of students enrolled in multiple interrelated programs.

I chose Ruby on Rails. The majority of what we need is being able to create and view notes on various programs associated with particular individuals: basic CRUD. Since the site had to be editable by non-coders as well, I added Camaleon CMS, a WordPress alternative for Rails. So far this decision has paid off handsomely. In under a year, I went from no significant programming experience to having our marketing website built and deployed, looking and functioning much better than the old site (which was built by professionals at great expense), and I accomplished it while still teaching guitar and bass and managing the school.

As for the app? I'm still working on it. I'll let you know how it turns out.