Teaching basic lab skillsfor research computing

Interview: Jim Graham of Scimatic

Over the next few weeks, I'll be interviewing the people whose sponsorship has made this course possible. First up is Scimatic's Jim Graham.

Tell us a bit about your organization and its goals.

Scimatic (www.scimatic.com) is a company that writes software for scientists. Historically, we've written software on contract for manufacturers of scientific equipment. We have also written our own software product, Samples, to help scientists keep their experiments organized.

We're available to help scientists by writing software.

Tell us a bit about the software your group uses.

We develop software mostly using Microsoft's development tools. Almost all of the projects that we are working on currently are written in C# using Microsoft's Visual Studio development environment. C# is a pretty-rapidly evolving language that is assimilating nice features from dynamic languages.

We've also done projects in C++, Java and Python.

For tooling, we use:

Version Control: hosted Subversion. We have some interest in DVCS systems, but until there are first-class integrations to visual studio and Windows, we'll stick with SVN.

Project Management: Trac. It has per-project management, tickets, issues, project wiki, email notification and a tight integration to SVN. Pretty much if it's not in Trac, it doesn't exist.

Unit Testing: NUnit, the .NET port of JUnit. We have tried MSTest (the unit testing framework from Microsoft), but it was too verbose.

Continuous Integration: CruiseControl.NET: It's good enough to run builds on every checkin. We run compilation, unit tests, generate documentation, and build the installers with one run of the build.

Scripting: I use Perl because I'm old school. We'll probably convert any "mission-critical" scripts to Python so everyone can own them.

Tell us a bit about what software your group develops.

We build products for scientists. Traditionally we've worked on contract, and our client decides how they want to distribute the software. In addition, we are developing our own product that we will sell directly to scientific customers.

How do you hope the course will help them—that is, what big ideas and what specific skills do you what students to learn from it?

I hope that scientists realise that almost every project they work on will require some type of software, and that they will need to know how it works. After that, I hope they learn to write reusable, compartmentalized software stored in version control system that they can access six months after their paper is published :) My experience has been that every piece of software that I thought was a "one-off" gets reused—best to write it as well as possible.

I hope they also get a sense of how large and complicated software projects can be, and who to call for help if they need it.