Howard Hinnnant, C++ mensch
The Ripple Labs employee spotlight is on Howard Hinnant this week, who is in Bellevue, Washington for cppcon, the inaugural conference for all things C++.
Howard has been a prolific and long-time contributor to the C++ community as lead author of several C++11 features including move semantics, unique_ptr, and <chrono> API and has authored over 30 C++ committee papers.
During his time at Apple he developed libc++, an open source implementation of the C++11 standard library, which the iPhone maker continues to use. He is also a Library Working Group Chair Emeritus at the Standard C++ Foundation.
Today, as a senior engineer within the 11-person rippled team, Howard is channeling his self-taught expertise to help build the core protocols that will power what we see as the birth of the value web.
rippled is the core, peer-to-peer server component of the Ripple protocol (which already includes a number of C++14 features). It essentially is Ripple—by facilitating the processes that manage and validate transactions.
Moving forward, the team’s priorities are stability, performance, security, and scalability—while introducing new features like m-of-n multisign, additional cryptographic curves, and autobridging, according to rippled project manager Yana Novikova.
At cppcon, the former aerospace engineer will be presenting his latest paper, Types Don’t Know # (N3980). Before Howard left, I sat down with him and Vinnie Falco, team lead of rippled, for a brief fireside chat.
Ripple Labs: So what’s up with cppcon?
Howard: This is the first year so it’s kind of an experiment, but I suspect it will be a success. It has the support of the leading professionals in the industry.
Vinnie: Cppcon is a very technical conference that focuses on the development and growth of the language itself. So a lot of the discussions and presentations will surround the technical aspects of the language and could very well be precursors to new features.
Ripple Labs: What will you be doing at the conference?
Howard: My contribution at this conference is going to be talking about the work we have been doing and implementing in rippled, mainly the parts that concern how to hash things and putting items into unordered containers.
I’ve written a proposal for it, which I’ll be presenting. It hasn’t been accepted yet by the committee, but it’s under consideration at this time. This proposed implementation allows people to easily switch among different hash algorithms.
Vinnie: N3980 addresses a long-standing shortcoming in the hash functions for unordered containers, which can result in suboptimal performance when using a standard library. It basically allows programmers to easily choose between different hash functions such as Murmur, SipHash, SpookyHash, and FNV without changing every call site.
Howard: Now developers have a choice of hash functions without having to rewrite everything. You write the hashing infrastructure once, and with very little effort, you can switch between different algorithms, which wasn’t previously possible.
Vinnie: It’s very relevant to decentralized programs. The result of Howard’s work benefits anyone developing peer-to-peer software.
Howard: It has very wide applications because the hash containers are extremely widely used. You name it, people are hashing things. It’s quite a basic utility.
Vinnie: When it comes to digital finance, hash functions are crucial, along with the performance of these programs. Bitcoin, Ripple, and countless other systems use them.
Ripple Labs: What does it take for a proposal to get accepted by the committee?
Vinnie: Howard has had work accepted in the past, but it’s obviously not a walk in the park. This is serious, very theoretical work—and it needs to improve the language. It’s work so incredibly technical that very few people are even qualified to analyze it.
Having something approved that goes into the language—it can take years, maybe a decade. It’s a very small club.
Ripple Labs: So Howard, how did you get so good at C++?
Howard: I was self-taught. I’ve always been interested in programming, but I had only taken a couple courses in Fortran and assembly. I started collecting languages on my own. I taught myself C, Pascal, and Postscript.
Eventually, I picked up C++ and decided I really liked it, better than the other languages that I learned so I kept teaching myself about it.
Ripple Labs: What was so attractive about C++?
Howard: For me, I really like how you can program at a high level and in the same language, program at a low level. C++ offers complete control. It doesn’t require low level languages like C or assembly but still has high level facilities. It allows you to do everything.
Ripple Labs: OK, last question. What’s your favorite C++ feature?
Howard: The destructor. It’s the most elegant form of garbage collection I’ve ever seen.
- Howard’s paper: Types Don’t Know # (N3980)
- Howard’s bio
- Howard at cppcon