Teaching basic lab skills
for research computing

Interview with Sergey Fomel

Sergey Fomel is a professor at the University of Texas at Austin, and the leader of the Madagascar project.

Tell us a bit about your organization and its goals.

I work at the University of Texas at Austin, with a joint appointment between the Bureau of Economic Geology and the Department of Geological Sciences. My group conducts research on computational geophysics, with applications to petroleum exploration.

I also serve as a project leader for the Madagascar open-source project. The goal of Madagascar is to provide a convenient and powerful environment and a convenient technology transfer tool for researchers working with digital image and data processing in geophysics and related fields.

Tell us a bit about the software your group uses.

We use Madagascar for all relevant scientific computations. For general data manipulations, Madagascar can be as general as tools like Matlab. The main difference is that multidimensional hypercube objects do not sit in memory but reside in files on disk or are passed through Unix pipes. This allows us to work with data that might be too large for RAM.

For theoretical work, we use occasionally symbolic math software such as Mathematica. Currently, I am trying to switch from Mathematica to SAGE, which seems like a good open-source replacement.

Supporting tools: Subversion for version control (a must), SCons for compilation and data processing flows, LaTeX for writing papers. Madagascar number-crunching programs are typically written in C, although there are interfaces to many other languages. We assemble elementary binary programs (compiled from C) into data processing flows using our extensions to SCons. We also use SCons (in combination with customized latex2html) to publish final results in a "reproducible research" format (papers with links to software code and data necessary for reproducing computational experiments).

Tell us a bit about what software your group develops.

We build software for use in our own research but also for sharing with others. Some codes get distributed first to our industrial sponsors, who incorporate them for their own use in industrial geophysical data processing. As for the general research framework, I believe it is very important to share it with as many other research groups as possible so that we could reproduce and verify each others's results (computational experiments) once they get published.

What's the typical background of your scientists, developers, and/or users? What do you see as their strengths, and where are the gaps in their knowledge?

Most of the people in the Madagascar developer community have background in geophysics or related fields (petroleum or electrical engineering, physics, applied mathematics, etc.) The strength in it is that every developer is also a user, people join the development effort to "scratch a personal itch". The weakness is the lack of formal training in software engineering, computer science, or numerical analysis. Geophysicists are inventive people, many of them with a natural talent for software development of numerical computations, but sometimes one just needs to follow good rules.

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

Software Carpentry is exceptionally useful. It feels the gap in education for scientists like us, who use software tools every day but have only a fragmentary knowledge of them. By making this knowledge systematic, Software Carpentry simply makes us better at what we do. I could name some specific ideas (testing, scripting, debugging, version control) but actually all of them are good, the most important is to be as systematic with our tools as good carpenters are with theirs.

Dialogue & Discussion

You can review our commenting policy here.