developers[]: Jeff Duntemann

Jeff Duntemann is a writer and lecturer on technical topics, especially programming. He came up through the ranks at Xerox Corporation, learning Smalltalk, COBOL, Z80 and x86 assembly, and several in-house languages running on Xerox hardware. He left Xerox in 1985 to begin a new career in technical writing and publishing. His books include Complete Turbo Pascal, The Delphi Programming Explorer, the best-selling Assembly Language Step by Step, and many others alone or with co-authors. He also writes science fiction and fantasy, all of which is available from Amazon in both ebook and print editions. He lives with his wife Carol in Scottsdale, Arizona.

Twitter: @JeffDuntemann

WebSite: http://www.contrapositivediary.com

What is your favorite programming language and why?

Pascal. It’s readable, whereas C and C-like languages are not. Good native code compilers are available for it on almost all hardware platforms, and some of the best (like FreePascal) are now FOSS. GUI builders and visual software components are widely available, both as commercial products like Delphi and FOSS products, like Lazarus. I’ve played with languages now for over forty years. C/C++ wastes my time, and the code is utterly unreadable after a month or so. Pascal code I wrote in the 1980s still reads as clear as day. The fact that there’s a contest in the C community to see who can write the most opaque code in C will give you some idea of the mindset over there. No thanks.

What one piece of advice would you give to a rookie developer?

Just this: Learn assembly language FIRST. If you become competent in assembly (you don’t have to be some sort of wizard) you will know how the machine works, all the way down to the metal. Which architecture you study matters less than learning the fundamental ideas in assembly generally: opcodes, memory addressing, super-scalar execution, branch prediction, and so on. Also, there will come a day when you have to single-step code in a low-level debugger like gdb to figure out some bug or software weirdness that defies higher-level analysis. Without a working knowledge of assembly, you might as well just give up.

What is the most difficult programming challenge you’ve ever encountered?

Access to custom low-level hardware from Windows. Under DOS it was a snap. Today it’s easier than it was when Windows and other windowed environments were new. But back then, yeek, it was nasty. I’ve moved all of that sort of development to the Raspberry Pi, which was designed with custom hardware add-ons in mind.

What is your favorite open source project and why?

FreePascal/Lazarus. These are often considered a single product, even though FreePascal is perfectly usable on its own. (Lazarus is its IDE/GUI builder.) I favor them because what I do now in the programming realm is mostly teaching programming concepts to beginners. Any book or course must specify a particular toolset to avoid confusion among a multitude of IDEs and compiler quirks. I can’t specify Delphi because the compiler costs over $1000. For students (and creators of teaching materials like me) there’s nothing like FPC and Lazarus.

What would you say to the developer that was you five years ago?

Trying to control custom hardware from Windows is hopeless. Give it up. Cheap boards like the Raspberry Pi will soon be close to desktops in terms of compute power, and all hardware-control challenges should move there.

What one book should every software developer read?

Bruce Schneier’s Applied Cryptography. Security is only going to become more complex and difficult to understand as the field evolves, and all of it will have roots down into crypto. There’s never been a better treatment of cryptography than this.

What is the worst advice that you commonly hear given to developers?

“Never use uppercase characters. It means your code is shouting.”

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

This was long ago, obviously, but it was the realization that Windows programming is really stimulus/response programming. Windows hands up some sort of stimulus (mouse click, keystroke, mouse enters or leaves a window, etc.) and your software must respond in a useful way.

What is one weird or unusual thing you always do when you code?

Take my shoes off.

What have you done as a developer of which you are most proud?

Taught other developers how to understand our increasingly complex field. I wrote and published a lot of beginner’s guides of various sorts, along with tutorials in magazines, and published a lot of such material written by others in my capacity as the editor of The Coriolis Group and PC Techniques/Visual Developer.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

Q: What was the coolest thing that ever happened to you in the software industry?

A: It’s a tie. One was meeting and interviewing Drs. Kemeny & Kurtz, the inventors of BASIC and probably the two most influential (if not the best known) people in the history of programming. The other was meeting Admiral Grace Hopper before one of her talks, and taking one of the little bits of wire she was handing out, the length of which (11.8 inches) was the distance electricity could move in a single nanosecond.