Last September, I watched Greg Wilson’s three-minute pitch for Software Carpentry, and I was SOLD! Do I want to get more done at the computer in less time? Absolutely! The only difficulty was waiting until this week for it to happen. Finally, this past Monday and Tuesday (May 13-14,) Software Carpentry arrived at UC Davis. The instructors were (in order of appearance) Matt Davis, Tracy Teal, Azalee Bostroem, and Chloe Lewis. Vince Buffalo showed up to help and observe, as did two members of the Eisen lab, Russell Neches and Guillaume Jospin. We were also accompanied by master assessor, Caitlyn Pickens.
On Day 1, Tracy Teal gave a great introduction to the shell. I would describe the pace as quick baby steps, which was perfect for most of the room. Even those who use the shell all day every day, like myself, were able to pick up a few new tricks. And, Tracy has such a quick wit, that if you didn’t pay constant attention, you were going to miss something really funny. Then, Azalee introduced git, which I had heard about before, but I’d always felt was something that “real” programmers used. It never occurred to me that I could use it for version control, or even that version control was something that I should be doing. And, holy cow, I should DEFINITELY have been using git or something like it for at least the last 7 years. She made many compelling arguments for using it, but the two that stuck with me were 1) avoiding the existence of files named Dissertation_final_last_MostRecentVersion_7.doc and 2) avoiding the scenario in which you’re feeling pretty good about yourself because your new script actually does what you want it to do, so you decide that you’re going to add one minor tweak to make it even more awesome, and then it stops working, and you don’t understand how you broke it, and so you try to fix it, but you end up getting so far away from a functional script that you decide to delete it and start from scratch because, well, when you started from scratch the first time, that’s when it worked.
On Day 2, Matt introduced us to Python using the iPython Notebook. As someone with a decent amount of self-taught experience with Perl, I originally did not understand why we were playing with colored blocks. I admittedly spent too much time trying to figure out how I was going to be incorporating colored blocks into my research. But, when we switched from manipulating colored blocks to manipulating text files, it was like the clouds parted and I was already programming in Python! It took me a while to figure out how I would use the notebook for my research (well, I’m still not 100% sure, but I’ll give it a try) but there are some things that I loved about it right away. For example, help is easily accessed while you’re writing the code, so if you can’t remember the syntax, you don’t have to do yet another Google search for: perl split syntax. The other thing I really, really like is being able to test little chunks of code without saving and running the entire script.
Chloe gave a nice introduction to making pretty figures with matplotlib. She tied in the basics that we’d learned from Matt to convince us that “Yes, we can!” plot our data! I love that there’s a gallery of plots to choose from, and I hope that the reviewers don’t mind (or notice?) when my next publication includes a figure that’s been XKCDified!
Overall, it was a great boot camp! These folks have clearly invested a lot of time into thinking about how to teach scientists to be smarter computer users, and it shows in the quality of the instruction. I would love to host a boot camp at UC Davis on a regular basis, so if you are interested in attending one in the future, please send me an email, and I will notify you when the next one is coming!