Interview with Rob Vugteveen — an old-school FORTRAN programmer

в 14:27, , рубрики: fortran, Биографии гиков

I decided to make an interview with one of my American friends — Rob Vugteveen. He was working as a FORTRAN programmer back in 1980s, so it's quite a unique experience.

Interview with Rob Vugteveen — an old-school FORTRAN programmer - 1
Rob Vugteveen, Carson City, Nevada, USA

K: Hi Rob. I've heard you were working as a Fortran programmer many years ago. Is that right? How the industry was looking back then?

R: Good morning, Kirill.

In the 1980s I made my living as a FORTRAN programmer in the mining industry, primarily in the processing of exploration data and presenting it graphically. We were using VAX minicomputers from Digital Equipment Corporation. This was a time when desktop PCs were growing in popularity, and procedural languages like FORTRAN were being challenged by object-oriented languages. Also, graphics display systems were shifting away from character-cell terminals to X-window-based displays.

FORTRAN (“FORmula TRANslation”) was built for computationally intensive programs, and it did not have its own graphic libraries to display information. There were companies that sold large FORTRAN subroutine libraries to provide that capability. These were not yet designed for the growing popularity of X-window technology.

When we were forced to move from expensive VAX computers to cheaper PCs, we had to write hybrid programs using FORTRAN for computations and C++ for display. It was a bit messy at first. I left that job for something completely different (building a mining museum) and haven’t really done any programming since.

FORTRAN is still used today in scientific research for computationally intensive work, but I’m sure it’s been adapted to work with graphical display systems through external subroutines written in object-oriented code.

K: How your most interesting project on Fortran (or FORTRAN, like it was called earlier) was looking like?

R: I was writing mine-planning software for an open-pit copper mine. The elevation contours of the mine would be drawn on the screen like a map. A mine engineer could use a mouse to draw a polygon around a portion of the mine where the earth would be blasted and removed. The software would query a 3-dimensional grid of drillhole data and determine how much copper would be recovered from that portion of earth. One of my tasks was to write the code to modify the contour lines to account for the material that was removed. I had to invent that procedure from scratch, and it took me more than a week to develop the algorithms for every possible type of line intersection. We take this operation for granted now every time we make a vector operation in Adobe Illustrator or AutoCAD. But those didn’t exist then, and I was particularly satisfied to have figured out how to do it.

K: What was your best success with it?

R: I discovered that my algorithm could also “put material back” in the open-pit by reversing the direction that the polygon was drawn. That meant the mining engineer could create a waste dump over ground that no longer had copper ore beneath it. It was a breakthrough in the program’s design capabilities.

K: What was your worst mess up?

R: Occasionally the contour modification algorithm would get into an endless loop, and force the engineer to kill the program and start over. I discovered a special case when a point on the original contour and a point on the engineer’s polygon had exactly the same coordinates. My algorithm didn’t anticipate that possibility and assumed the polygon could not be that precise. However, after several days of debugging, I fixed the algorithm to work in all cases.

K: Computers and programming languages made a large progress since then. How do you feel about these changes?

R: As computers have become smaller, more powerful, and less expensive, people have come to expect more and more from their machines. Programmers keep pushing the limits on what can be done. Object-oriented programming was the big thing, and variations of the C language were very popular. Fortran was still the number-crunching engine for many scientific and engineering applications, but the Fortran applications got wrapped in an outer shell of object-oriented code for more of the graphics and user-input functions. More specialized languages seemed to spring up as computing power increased, with Java growing out of Sun Microsystems (later acquired by Oracle) and becoming Javascript (from Netscape). The UNIX operating system took hold, MS-DOS gave way to Windows, and a whole host of programming languages appeared every decade since. Most of these built on previous developments to become easier to use and add functionality, such as distributing computation tasks in parallel threads across multiple processors and other resources.

I was amused to read this week that C++ has recently overtaken Python in the top three most-used programming languages. It is likely that top three ranking will continue to change as processing power increases, hardware capabilities expand, and more applications are developed that haven’t been imagined yet. Even with all those other languages, there are still many new scientific and engineering applications being written in Fortran, and the language continues to be improved. The most recent version is Fortran 2018.

My favorite Fortran joke needs a bit of setup: In Fortran, variables that start with the letters I, J, K, L, M, and N (those between I and N as in INteger) are implicity stored as integers in the computer. Those starting with any other letters are stored as real numbers in memory. So the joke is:

God is real… unless explicitly declared an integer.

K: I've heard you are learning JavaScript right now. What made you decide to return to the IT industry?

R: In my current job, I am using Adobe products on large numbers of images. Adobe has a scripting capability that can be implemented using Javascript. I want to learn it so I can be more efficient with processing large sets of images and do things that cannot easily be done from the menu-based functionality of those programs.

I'm also using QuickBase, and some functionality that I want apparently relies on external calls which can be written in Javascript.

Oddly enough, I never took a class on Fortran or C++ back when I was in college or afterward. I learned it on my own by determining what I wanted to do and looking up how to make it happen. Javascript seems a bit more complex for that approach, so I'm relying on YouTube for online instruction. We'll see how quickly I can become productive that way.

K: You also just started to learn WordPress. Could you please tell us about your experience making websites?

R: I made my first website for a visitor center that I built at a copper mine in 1997. I started using Apple iWeb, then moved to Adobe Dreamweaver when iWeb proved to be inadequate. I kept up the site for five years until I left that company in 2002.

I didn't really build a website again until 2016 when I was looking for work and wanted to create an online resume for potential employers to see my capabilities. I chose WIX as a way to get something up quickly, then I used it to experiment with another website just for fun.

Now I'm looking into learning WordPress with a friend in the Ukraine who has been kind enough to coach me.

K: Great answers, Rob! Thank you for taking your time to answer all these questions.

Автор: k_topolyan


* - обязательные к заполнению поля