Moving On

Recently I resigned from Cloudant, where I'd been working the last two and a half years as an Erlang programmer. It was a great job and a great group of folks to work with. I learned a good deal about distributed systems. Built around CouchDB, a document store, the core product is ideal for applications that need to achieve web scale. CouchDB hits the sweet spot in terms of features. A rest style api using json, user-defined views, incremental map/reduce and multi-way replication that supports off-line use. Cloudant added clustering to make it a very scalable distributed database. Erlang is ideal for building this sort of system. Cloudant's business is starting to round the corner of the hockey stick and it's taking off, that part is always exciting, I wish them the best.

I've been programming for many years and for the past year I've been feeling the need to pay off some debts. Programming is very hard, in my opinion it's more a craft than an engineering discipline. Interestingly it's the math that makes this so. In fact programming is also a form of applied mathematics. Programs are proofs. This mathematics tells us that programs can't, in theory, be completely tested. This is where the craft comes into play. Programs have to be written to be readable and testable. Programming is also a collaborative process, more so now than it ever was before, which makes effective communication important. Much has been written about this and I intend to say more about it on this new blog, but I'll do so in the context of running code, as I document some new work I'm doing. In my opinion the programming world is so dynamic that one has to keep writing code in order to maintain informed opinions about it. To use an analogy from the running world, you are only as good as your last 10K.

The debt I'm referring to is to Free Software. I've been using emacs forever, gcc, gdb, git, etc. I worked in the lab at IBM back when a colleague was not able to invite RMS to come speak about awk or emacs or some such thing, I forget the details. Since then, careers were built around Linux and of course now IBM is a strong supporter of free software and has it's own IPL. It makes sense, after all mainframe software was arguably first used in a fashion similar to free software. Programmers were actually expected to send patches back when they fixed bugs. I watched the schism that created "open source" some years ago and that event made me start to consider the legal, political, and societal aspects of programming, and free software in particular. Free software has been very wrongly demonized, it has nothing to do with business except only to make it hard to erect toll booths to extract rents. I find Eben Moglen's work quite convincing in spelling out the role free software plays in building a better world.

I've been a FSF supporter for quite a while (#331) but donating money every year is not enough. Over the years I'd occasionally take a peek at Guile to see if anyone had picked things up and moved it along at all. Lo and behold in recent years some people have and there seems to be a thriving community.

Scheme is lisp, having worked a lot on common lisp I find scheme more elegant. It brings out the fact that lisp is really more or less a sugared lambda calculus. However Guile is tightly integrated with C, which gives us the other half of the Church-Turing thesis, the machine side. So I think it's an ideal choice for exploring database ideas.

So here I am, I've got a new blog up, using this neat software Tekuti (thank you Andy Wingo), written all in scheme, running on debian. I feel like I just came home, I should check what's in the fridge.

[FSF Associate Member]

Date: 2013-07-28 Sun

Author: Bob Dionne

Email: bitdiddle at member dot fsf dot org

Created: 2017-04-08 Sat 15:29