Welcome to our continuing series of CodeProject interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Dr. Drang, a consulting engineer who blogs about scripting and fatigue analysis.
Who are you?
My nom de net is Dr. Drang, and I blog about scripting, engineering, and occasional other topics at leancrew.com. In real life, I’m an engineer (civil and mechanical) who spends most of his time figuring out why things have broken.
What do you do?
My biggest coding projects have been finite element and fatigue analysis programs that I’ve written to solve particular problems in failure analysis. They’re not commercial, nor were they written to be used by anyone other than me. Most of my publicly-available scripts are little programs that help me use my computer more efficiently. They’re either posted on my blog or in my GitHub repository.
What is your development environment?
I used Linux from 1997–2005, but have been a Mac user since then. I have an iMac at work and a MacBook Air at home — pretty vanilla setups in each case. I write mostly Python code in BBEdit, with excursions into AppleScript in the AppleScript Editor. My main debugging tool is a print statement â€” it works in every language.
I’m spending a lot of time recently with SciPy, NumPy, and matplotlib, the numerical and plotting modules for Python. When I stopped programming in Perl several years ago, I chose Python over Ruby because of SciPy, but didn’t actually start using it until last year.
I’ve spent a fair amount of time fiddling with the Twitter and Flickr APIs, but I don’t expect to be doing too much more with them — I’m pretty satisfied with the little tools I’ve built.
What is your coding pet peeve?
I suppose it’s a generational thing, but it bothers me to see short programs written in an object-oriented style. Not using object libraries — that makes perfect sense — but setting up classes for a 50-line script just seems ridiculous. It makes me think the programmer is following some list of “good programming practices” and not thinking about the problem to be solved.
I like two spaces for indentation, which violates some PEP or another, but I don’t care. Four spaces just seems too big to me. I like camelCase, but only because I find underscores to be really ugly. If only hyphens were allowed in languages other than Lisp and Scheme.
How did you get started programming?
Like most engineers my age, I started programming in college in a Fortran course. A deck of punched cards submitted to an IBM 360 descendant and a fanfold of output (usually syntax error messages) returned half an hour later. It’s amazing we got anything done.
My senior year I took a Pascal course as a technical elective, and it really opened my eyes to what programming was all about. The professor put great emphasis on data structures and writing procedures and functions that did one easily described thing. Later, when I programmed in Forth, breaking the logic of a program into small bites with good names became even more important.
I’ve kind of fallen away from that highly structured approach in recent years, but that’s because the languages I write in now are much more expressive and at a much higher level. On the rare occasions when I do find myself writing at a low level, like in some recent calendar calculations done in Lisp, I do go back to a style with many short functions.
Because I’m not a professional programmer, I don’t seem myself as part of a developer community, but having immediate access to so much code written by others — mostly people who are much better programmers than I am — has been a big help in making my scripts better.
In the past couple of years, the Stack Exchange sites have become one of my favorite resources because of the discussion that surrounds the code. Programming is often about making choices, and seeing the reasoning behind different choices is enlightening.
I’d be remiss if I didn’t mention the commenters on my blog, who find my errors, point out better libraries, and sometimes get me thinking along entirely different lines.
What advice would you offer to an up-and-coming programmer?
You don’t want my advice. When I was in school, I thought it was foolish to get a CS degree because everyone would soon be programming and there’d be no need for “programmers,” per se. I was a little off on that one.