(Feel Ma Peine was the first song I ever heard on the BC Weekly and it was love at first listen!)
The funny thing about this post is that it was meant to be finished on my first day and it is now day 4. There are many excuses, but the overlying reason is that I hadn’t completely finished thinking about how I wanted to write this blog. It turns out it was more simple than I had imagined. Rather than reflecting on what I had learned at the end of the day and succinctly composing lists about how to be an intern, I just need to be an intern. And in this state of being, I think these posts will communicate best. The tips and advice should be read between the lines while I discuss my day-to-day learning. In the words of my boss Joe, “Keep it contemporary.”
Day 1 was a big deal. Mine felt especially so, not just because it’s the first day on the job, but because a) I am the first intern that Bandcamp has ever had and b) I came all the way to Vermont for two weeks of orientation and friend visiting! Props to Bandcamp for putting that together.
Joe’s plan is to spend a lot of time one-on-one getting me set up and familiar with Bandcamp development. The day started out fairly easy going. First, setting up at South Street cafe (not to be mistaken for Second Cup as the Canadian in me always does), we began customizing my laptop for the months of work ahead. I was going to have a computer that runs its own local version of the entire Bandcamp website.
Once confirmed that I had Mac OS X 10.8.x and ruby 1.8.7 as the default, I got access to the Bandcamp subversion repository and checked out a magical ruby program called setup.rb that updates and installs everything needed for Bandcamp, including software like
just to namedrop a few. Honestly, from this list, I only have experience with python and MySQL and know very little about the rest of the items. Turns out there are a lot of tools involved with running a website like Bandcamp. From 5 minutes of googling I have discovered that SoX, lame, ffmpeg, and FLAC are all involved with streaming and encoding audio files. I’m not sure how much I will be interacting with all of these tools, but hopefully I’ll learn a little bit more about the roles they play and have a better understanding of the complexities involved with running a music platform.
Half way through running setup.rb we relocated to another cafe. There we had a look at some live stats using commands like netstat and top. So since I’ve mentioned the command line, the one thing in particular that I wish I’d spent more time on in life is playing with and setting up Terminal. Joe set me up with a few shortcuts that he uses, like:
alias t='cd ~/bc/bandcamp/trunk' alias l='ls -lFG' export LESS='-fMnQRSPw%f line %lb'
Knowing useful tools on the command line would make my quality of life 100,000,000,000,000,000 times better. And I’m not even exaggerating. In particular, a command that I hadn’t used but Joe has insisted I become best friends with is less (notably instead of using vi to look at files). Also being more than just competent with vi would be a good idea. Hmm, I have an exciting few weekends ahead!
Over lunch Joe and I discussed a rather controversial topic about gender inequality in the workplace in technical fields and tossed around ideas for why this might be. This topic has been very interesting for me, especially in the last year when a friend and I began a Women in Engineering and Computer Science group at UVic. Our conversation developed into talking about outreach and how to get started in tech. Then a light bulb went off and the Bandcamp Intern blog was conceived.
After lunch setup was complete and I was able to run a copy of the site on my laptop. I set up a band account here and also on the website in production to use for testing. I put in a sound bite and everything!
Day 2 began with the result of the conversation that we had at lunch on Day 1. We had had a really interesting discussion about what it means to be an intern at Bandcamp and what sort of responsibilities that includes, so it was a really unusually obvious direction to take when we decided to document and publicize the experience. Essentially today was allocated to becoming an internet writer, and it really turned out to be the perfect day for that task.
After some morning coffee from Second… er, South Street, I headed to the beautiful campus of nearby Bennington College. There I went straight to the library and set up irc, which Bandcamp uses for almost all its daily internal communications, and started reading. Turns out there are some beautifully written blogs in the Computer Science field, and there are also some really boring ones. Maybe with more experience I will appreciate them more, but the bloggers that really stood out for me were Steve Yegge and Joel Spolsky. In particular, there was one post that Yegge wrote that I had read last year during my previous internship (on a recommendation) and hadn’t remembered till after I had read it all the way through and fallen in love with the article all over again. This is a MUST read.
Later in the day, Joe and Ethan (one of the founders of Bandcamp) were investigating an odd sales dip on the previous Sunday. Joe was looking at admin pages full of stats and graphs and at nagios, that display all sorts of information about what types of things are being purchased, from what referrer the customer came from, whether the error occurred during the purchase, etc. and asked me to help out.
Something that you should probably know about me is that python is my main squeeze. It’s the language I’m most comfortable programming in, and I was excited when Joe asked me to process some data queried from their database and analyze it because I then had the opportunity to use python’s SciPy library. Unfortunately, I wasn’t prepared and I didn’t have SciPy installed. So, when it took me more than 30 minutes to try to install the library, I had to resort to Excel. The plots turned out interesting and our results concluded that it was most likely a coincidence with no direct cause, but I should set up SciPy for next time.
The rest of the week seems to be focused on one bug in particular that I have been given the official authority and responsibility to solve, and that certainly deserves its own entry.