The 25th of September there will be the Erlang Factory Light in Paris. I had the chance to interview one of the speakers: Benoit Chesneau (@benoitc). Benoit is a web craftsman mostly known for his support as committer to the Apache CouchDB project.
Ask and Answer
Paolo – Hi Benoit, can you please introduce yourself to our readers?
Benoit – I’m a French web craftsman, living near Paris. I do only custom work. Though I’ve not studied computer science (I’ve a master in Multimedia Project Management) I have years of experience in building small and big-scale database backend website working professionnaly or not on web applications since 1995. I founded Enki Multimedia a company building innovative web services and open-source applications. Recently I launched the project refuge. Upondata, the digital curation platform is one of the the refuge projects I will announce this week. I’m also an Apache CouchDB committer and Gunicorn author.
Paolo – How were you involved in the Apache CouchDB project?
Benoit – In 2008, I was looking for a database that could accept any schema of data for a personal project. CouchDB was appealing.At this time, I was working on openbsd most of the time, the first thing I had to do was to port couchdb to this platform and fix the build.
Paolo – How would you describe your experience with CouchDb and Erlang?
Benoit – I Discovered Erlang with Apache CouchDB. Since then I published lot of code in Erlang and for CouchDB. Most of my public code is around Couchdb though (couchbeam, couch_es, bigcouch_spatial, couch_zmq, couchdbproxy, …) but I also have some other codes around. I think I’ve today a deep knowledge in couchdb arcanes. The part I’m still learning is all the things around the b-tree and the view engine. I’ve learnt a lot about the view engine recently by working ond different itterations of couch_es before to go to the simplest one. The parts that are still difficult for me are mostly the one where I miss some computer science skills like with the b-trees. But I learn fast.
Paolo – What are the benefits introduced by document-oriented databases as CouchDB? When should developers use them?
Benoit – There are many reasons to use couchdb. Its low memory and CPU usage (once the views are calculated), the master-master replication, its simple and very relaxing API… For me any developer that take care about its data (due to the append-only nature of Apache CouchDB) and want to store any kind of data should use couchdb or bigcouch if he
needs a cluster. If he doesn’t need strong relations between its data of course. Also couchdb is pretty extendable and if you need to do more you can easily integrate your own product in the API. That’s what does couch_es with elasticsearch for example.
Paolo – Your talk at Erlang Factory Lite in Paris, will be on “Extend CouchDB and Build new apps based on CouchDB”. Can you describe the topic of your talk in few words?
Benoit – Since the beginning I keep trying to adapt couchdb to my need. So I played with a lot of parts of the code (in particularly the HTTP api but not only). I also developed different libraries and tools in different languages around couchdb. This talk will try to introduce you in the architecture of CouchDB code. How to extend CouchDB and hack it for your needs. It will also show you some tricks you should know when you want to develop applications around CouchDB (embeded or not). I will take the examples of Upondata and Refuge projects for that.
Paolo – Who should follow your tallk and why?
Benoit – Any persons who want to learn how to play with CouchDB in your applications.
Paolo – During your talk you will give some examples on how to use coucbhbeam. What is couchbeam? Why did you create it?
Benoit – Couchbeam is a simple erlang CouchDB framework. It provides you a simple client that you can use to put and get your data in databases. It provides some helpers to listen in realtime the changes in a CouchDB node via the _changes api and also allows you to stream the results of views line by line to your application. Appart couchbeam I will also introduce couchc, a full erlang client.
Paolo – You are also author of Gunicorn, a WSGI HTTP Server written in Python. Can you tell us what features of Python you would like to have in Erlang and viceversa?
Benoit – Both are complementary. These days, I’m using Python for quick prototyping and data analysis. Erlang for the rest. But it really depends. I think the thing I miss the most in Erlang is the standard lib and ecosystem you have in Python. I have hard time sometimes in Erlang because I have to write a simple feature. In Python the thing I miss is the pattern matching and the message-passing API (trying to write one actually).
Paolo – Can you tell us about some of the IT companies you founded? Do you use Erlang in your daily work? Have you any Erlang coder as collaborator or employee?
Benoit – The first organization, I developped, was making websites in 1995. We were 4 guys trying to convice french companies to own a website. Since then I launched different projects, canafoold in 1998-2000, a companythat was referencing food delivery services and let people order to them via a website. Neurofriends in 2003, which aimed to be something like friendster at this period, but was closed 2 years later for personal reasons. Between them, I’ve launched some projects (like couch.it, friendpaste, …) less formally and did some freelancing (always as a craftman). My last project is the refuge project and is supported by my private-held company Enki Multimedia. But at some point this project will be separated maybe under a status of fundation to make sure the platform will be independant. I only do custom work for my customers and I’ve no employees (although I’m more and more thinking to it). All the work I do is opensourced and I’m using every-day Erlang.