Posts Tagged ‘dizzyd’

An interview with Dave Smith (@dizzyd)

June 24, 2011 1 comment

Hi all! Many of you liked the interviews I made during the Erlang Factory, therefore I decided to interview a couple of more famous erlangers….I hope these interviews will help Erlang newbies to have an insight on the world out there. The interview I propose today is with Dave Smith (a.k.a. dizzyd). Dave is Director of Engineering at Basho Technologies, Inc., in my humble opinion he gave not trivial answers, so I strongly suggest you to read our conversation.

Ask and Answer

Paolo – Hi Dave, thanks for making yourself available for this interview. Please, would you like to introduce yourself to our readers?
Dave – My name is Dave Smith, but a lot of people know me as “Dizzy” — there are a lot of “Dave Smith”s in the world. 🙂 I’ve had the opportunity to contribute to a couple of different Open Source projects over the years, including Jabber and more recently things like rebar, riak, bitcask, etc.

Paolo – Do you remember when you first heard of Erlang?
Dave – I was working on the first commercial Jabber server and had just completed writing a library (in C++!) to manage async sockets on a threadpool. The intent of the library was to make it easy for people to write scalable Jabber components. I read about Erlang and wondered how they had solved that same problem…only to find their implementation was far, far ahead of mine. I thought the syntax was weird and the string handling (all lists, in those days) was poorly suited for Jabber — nonetheless I liked the ideas.

Paolo – Can you describe to our readers your first experiences with this language?
Dave – I think it was a pretty typical experience pre-good books on Erlang. There was lots of fumbling with seemingly random syntax and scratching my head over the point of the OTP stuff. However, even with this pain, I was able to rewrite a business specific system over the course of a long weekend and the end result was a more stable, scalable system with a 90% reduction in lines of code. All very typical for Erlang. 🙂

Paolo – In your past work experiences, you used C++. Was it difficult to switch to Erlang? What features of C++ (if any) would you like to see in Erlang?
Dave – I can’t say there’s anything in C++ that I miss in Erlang. If anything, Erlang has renewed my interest in simpler syntax — I much prefer C over C++ whenever possible now.

Paolo – You are currently Director of Engineering at Basho Technologies, Inc. How does it feel to work in one of the most famous companies using Erlang?
Dave – It’s an honor and privilege to work at Basho. We have a rare freedom to pursue building a product with the best-of-breed language for distributed systems and we do so in a decentralized working environment. More importantly, we’ve managed to assemble a roster of world-class engineers who constantly push each other to improve. I like coming into work and knowing that I’m going to have to work hard to keep up with my co-workers. 🙂

Paolo – Basho is well know among erlangers for riak and rebar. Can you tell us something more about these two products?
Dave – Riak is the product for which Basho is best known. It’s an eventually-consistent, distributed data store that’s designed to scale in a manageable way. Writing this system in Erlang has enabled us to focus on the distributed algorithms and not worry so much about the details of socket, thread management, etc. The expressiveness of Erlang has also enabled us to be a more efficient engineering team and deliver the high quality code one expects from a data store. Rebar is an Erlang build tool that makes it easy to compile and test Erlang code. It uses standard Erlang conventions for choosing what files to compile and makes it very, very easy to create new projects that other Erlang devs will understand.

Paolo – What is in your opinion the biggest benefit a company can have using riak?
Dave – Low, predictable latency data access and operational ease-of-use. When used appropriately (i.e. don’t expect Riak to be a RDBMS), Riak is able to provide an excellent latency profile, even in the case of multiple node failures. In addition, it’s easy to add/remove nodes while the system is running without a lot of operational juggling. Another useful benefit is that multiple nodes can take writes for the same key, thus making it easier to construct a geographically distributed data store.

Paolo – Do you think that you could have reached the same level of product “quality” using another programming language?
Dave – Quality is determined less by the language and more by the values of the team writing the code. The process model in Erlang makes it easier to construct systems that tolerate partial failure; the expressiveness makes it easier to write less code (and thus less bugs) for a given application. However, just because these things are “easier” doesn’t mean you’re going to get a high-quality system. 🙂 Ultimately, quality requires engineering discipline to take advantage of Erlang’s strengths and wield those powers appropriately.

Paolo – Many Erlang programmers I know are students at university. Does Basho provide opportunity for internships?
Dave – At this time, we are not providing internships, unfortunately.

Paolo – If you were a newcomer in the Erlang world, where will you focus your attention?
Dave – Erlang is a pretty wide-open language in terms of stuff left to do. Pick something that’s fun and challenging and go for it!