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

Open Collaboration: Hackathons and Tomorrow’s Subsurface Software

Feasibility in Setting up a Rayleigh Wave Explorer in Matlab

Programming a Seismic Program

Learning by Doing



About the Author(s)

Matteo Niccoli graduated from the University of Rome, Italy, with an honors degree in geology, and holds an MSc in geophysics from the University of Calgary, Alberta. He worked for Canadian Natural Resources in Calgary, for DONG Energy in Stavanger, Norway, and is now with the Geophysical Services group at ConocoPhillips in Calgary. In his free time he does research and occasional consulting in geoscience visualization with his company MyCarta. On his blog he writes about exploration data enhancement and visualization, as well as image processing and its applications in geoscience, medical imaging, and forensics. He is a member of APEGA, CSEG and SEG, and recently joined the Recorder committee as technical editor. For visualization related questions he can be contacted at and is @My_Carta on Twitter.


Myhrvold, C., 2014, The fall of Perl, the Web's most promising language,

language, accessed 18 August, 2015.

Niccoli M., Hildebrand, A.R., and Lawton, D.C., 2004, Seismic velocity investigation of

the Steen River impact, CREWES Research Report, 16, no. 19.

Rogowitz, B., and Kalvin, A., 2001, The 'Which Blair Project: a quick visual method for

evaluating color maps,"Proceedings of the IEEE Visualization Conference, San Diego,

CA, October 21-26,   pp. 183-188. doiI: 10.1109/VISUAL.2001.964510

Niccoli, M., 2010, Perceptually improved colormaps,

colormaps, accessed August 18, 2015.

Niccoli, M., 2012a, How to assess a colour map, in 52 Things You Should Know About

Geophysics, M. Hall and E. Bianco, eds., Agile Libre publishing.

Niccoli, M., 2012b, The rainbow is dead…long live the rainbow! series,

series-outline/, accessed 18 August, 2015.

Niccoli, M., 2014. Geophysical tutorial, How to evaluate and compare color maps, The

Leading Edge, 33, no. 8, 910–912.

doi: 10.1190/tle33080910.1

Niccoli, M. and S. Lynch, 2012, A more perceptual colour palette for structure maps,

extended abstract and presentation at CSPG/CSEG/CWLS GeoConvention, Calgary,

lor_Palette_for_Structure_Maps.pdf, accessed 18 August, 2015.


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