developers[]: Danny Thorpe

What is your favorite programming language and why?

English, because if you can’t describe what it is you are doing (or want to do), you’ve got much bigger problems than choosing a programming language.

I feel most at home / most productive with just about any strongly-typed compiled language. Bonus points for generics. Lately I’ve been working mostly with dynamic languages, and I really miss the days when I could discover my typos and syntax errors long before the app is up and running. Strong typing also makes finding dependencies much more precise than global text search.

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

  1. Pulling an all-nighter to finish a project by deadline is not the mark of a great developer, it’s an indicator of poor planning. If you find yourself in a scrappy startup that hero worships all-nighters, my advice is: leave.
  2. Work hard, but also *make* time for a life.  Travel, social, hobbies, whatever fuels your passion, do it. The joy you create outside of work will spill over into your work.
  3. Never underestimate the power of off-by-one errors.

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

Debugging a host application’s undocumented expectations of an OLE/ActiveX control, so that I could implement said control.  Specifically, reverse engineering Internet Explorer’s expectations of ActiveX plugins by stepping through miles of machine code looking for codegen patterns of IUnknown.QueryInterface requests, what interface GUID was being requested, and what methods were expected on those interfaces.


Prior to The Matrix, I described the experience as “Getting into a house through the kitchen sink.” After The Matrix, references to Cipher (“I don’t see code anymore. I just see blondes, brunettes”) became inescapable. While still cringeworthy, I’ll tolerate “I don’t see code anymore.  I just see stack frames, vtables, and function calls.”

The silliest part?  That spelunking around inside the machine code of another app wasn’t a task for work. It was an adventure of exploration to answer a what-if question that came up in a lunch conversation. Every new puzzle piece discovered, or discovery of a new technique to help things along, was as euphoric as beating the all-time high score of a video game.”Is it possible?”  “Yes. Yes it is.”
“How can you be sure?”

😏

What is your favorite open source project and why?

NBitcoin.  Kick-ass translation of the bitcoin-d core to C#, great developer behind it.

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

Put $10k on Bitcoin. Hold for 5 years. 

What one book should every developer read and why?

Neuromancer by William Gibson.  Written in 1984, but still hauntingly prophetic about how tech and society impact each other. 

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

There’s no career path as a developer. Eventually, you’ll have to move into management to advance your career. 

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

Self-Realization of the Mantras of Code Optimization:
1. Doing nothing is always faster than doing something. 
2. Procrastination pays. If you can put off doing something long enough, you might not have to do it at all!

Also: After years of working with Intel x86 machine code, getting to know the DEC Alpha AXP RISC instruction set was an eye opener – the stark primitiveness of RISC compared to the many nuances and peculiarities of x86 CISC.  

That was nothing compared to getting into GPU / SIMD architectures.  3000 processor cores all running the same machine instruction in lock-step, but each operating on different data.  It was a mind-altering realization.

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

I always use a debugger. Sadly, in some dev shops that’s considered “weird”. When they see what can be done with a good debugger, “weird” mutates to “magical” or drooling gibberish, and again with the Matrix references.  Life is too short for writeln debugging. Life is too short for guessing at what the computer is doing. Fire it up in a good debugger, and see exactly what the computer is doing. If execution doesn’t match your expectations, your expectations need a reset.

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

1. Contributed to the development of Delphi
2. Contributed to the development of Space Cadet Pinball (Win95) / FullTilt! Pinball (Maxis). That moonlighting gig was a gold mine of extreme geek adventures!
3. Built (single-handedly) a covered call option contract system on the Bitcoin block chain, pulling out all the stops for “Finance 2.0” rethink. Multi-signature escrows with automatic time expiration and rollback (non custodial accounts), contract fungibility, order matching market system. Failed to make it to market out of regulatory concerns and costs, and failure to find a fintech partner to operate within. “The operation was a success, but the patient died.”

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

Blue.  No, Green!

One Reply to “developers[]: Danny Thorpe”

  1. I had thought Gibson the person who coined the term cyberspace, in Neuromancer, but I looked it up to find it was in use earlier as a name for a collaboration between an artist and an architect. They envisioned a device which could create free form spaces to suite individual tastes, somewhat similar to current builder systems that use 3D printing with concrete to make buildings. Gibson was the first to use it in fiction in an earlier story Burning Chrome.
    https://en.wikipedia.org/wiki/Cyberspace https://en.wikipedia.org/wiki/Burning_Chrome

Comments are closed.