Robert M Flight's home on the web
As part of the instructor training of Software-Carpentry, we were asked to write a blog post about two things:
Here are mine. I thought others who read my ramblings might find them useful. Note that these are cross-posted on the Software-Carpentry teaching blog.
As part of my undergraduate degree, I was required to take higher level mathematics, either calculus or linear algebra. I had previously taken introductory calculus in high school, that consisted mainly in learning how to do derivatives of functions. Unfortunately, I tended to coast in high school, and my first year of university I did the same. I got a C in my first semester of calculus (differential calculus), and then a D in my second (integral calculus). I tried a different course, and recieved an F. This was my first (and thankfully my only) F in all of my school years. By this time I was in my third year, and was slowly starting to figure out how to study effectively. However, this class was required if I was to be awarded my degree in my chosen majors (biology and chemistry double major). So, I buckled down, and started truly trying to understand the material. I did the problems, and when I couldn't figure them out, I went and got help. I asked questions, I worked with others in the class, and I kept trying, and trying, and really trying to understand the material. I finally finished that class with I think a B grade, and a much better understanding of why integrals, and calculus, is important.
I do bioinformatics type research for a living, which necessarily means writing code, because I need code to do my analyses. As part of writing code, in the last year I have started heavily using the
git revision control system. This past year, I was co-author on a publication about software that I had written. That software project is in a
git repo, and I am very glad it is. The reviewers of my manuscript requested many changes to the underlying software package. Because I had it in
git, I was able to create a new branch and start making requested changes, all without worrying about breaking the current codebase. Due to keeping the code on GitHub, I was also able to point to actual commits that address the reviewers concerns.
In addition, some of the reviewer points required writing entirely new analyses. As I worked on this, I needed to write over 500 lines of new functionality, as well as the new analyses. All of this went into the
git repo, allowing me to keep track of progress, and easily revert or branch off as necessary when things went wrong. I don't think I could have done the work that I did in a timely manner without version control.