There have been two instances so far during my career as a geoscientist in which programming has been the key ingredient to solving a problem. The first was in 2003 during my graduate research work at the University of Calgary. I was tasked with the analysis of multicomponent data recorded with a handful of Orion 3-C seismometers over the rim of the Steen River impact structure in Northern Alberta (see for example Niccoli et al., 2004).
The analysis was to be conducted in Matlab® and ProMAX but prior to that, the data would have to be retrieved from several proprietary format Nanometrics files. The retrieval involved first a comparison of the files with the times in which each seismometer was active with the file listing the shot times for a total of ~1350 shots from 12 commercial seismic lines. After that, for each positive match in the comparison, the shot time would be used to write a sequence of three commands to execute the extraction, decompression, and dumping of each shot to an individual output ASCII file (times three, once for each component).
One option was to enter these commands manually, which would have taken weeks; the alternative was to write a program to do it all automatically. However, at the time I’d barely started programming in Matlab, I was not even sure that Matlab was the best option to do that, so I could have ended up spending even more time in the effort.
Luckily for me David Brydon, a students in an Italian Language tutorial I was teaching, was a Computer Science major, and a maverick programmer in Perl, at the time still the superstar general-purpose scripting language (Myhrvold, 2014). I offered to hire him to help with this task, and he accepted. We worked together on the logic for the automatic time comparisons, and then he wrote the two scripts that would accomplish the tasks. A quick back of the envelope calculation tells me it would’ve taken me about 10 weeks to complete the task manually (at 2 minutes per command, assuming I could put in 40 hours a week of continually typing commands at the prompt); the scripts took about two weeks to write, and a day or two to execute, therefore sparing me a couple of months of tediously repetitive work, a time which I was freed to use working on other aspects of my research.
This experience also left me with the desire to acquire those programming skills for myself – and not just knowledge of the syntax, but also that very unique way of approaching a problem. The opportunity would eventually come, but it would take another eight years. By the end of 2010 I had been working as a Geophysicist in the Oil and Gas industry for 5 years. I had a keen interest in visualization and had been growing progressively more dissatisfied with the default rainbow-like colormaps conventionally used to display seismic structure maps. Although I had read a number of seminal papers deconstructing these colormaps (for example Rogowitz and Kalvin, 2001), yet there were, to my knowledge, no accessible tools that allowed me to apply that knowledge, evaluate colormaps in an objective manner, and make better ones. That really bugged me, and it pushed me over the threshold to try to build the tools myself, which I did using Matlab.
For the longer version of this story, please read my 7-part series (Niccoli, 2012b). In the process, I learned a great deal about colours, visualization, and programming. I also started a Geoscience blog, packaged a popular Matlab function (Niccoli, 2010), wrote an essay for a book (Niccoli, 2012a) and presented at the CSEG Geoconvention (Niccoli and Lynch, 2012) Last, but not least, I made new friends and professional connections, and I also believe some of those achievements played a part in me landing a job interview with ConocoPhillips Canada at the end of 2013.
“Small software” to the Rescue
STEVE LYNCH
Open Collaboration: Hackathons and Tomorrow’s Subsurface Software
MATT HALL
Feasibility in Setting up a Rayleigh Wave Explorer in Matlab
ENRICO CAFFAGNI
Programming a Seismic Program
EVAN BIANCO AND MATT HALL
Learning by Doing
MATTEO NICCOLI
Join the Conversation
Interested in starting, or contributing to a conversation about an article or issue of the RECORDER? Join our CSEG LinkedIn Group.
Share This Article