Gwen Bell · Blog

The History of Scuttlebot with Dominic Tarr

September 1st 2016

Scuttlebot is an open source peer-to-peer log store used as a database, identity provider, and messaging system. It has: Global replication, File-synchronization, End-to-end encryption. Scuttlebot behaves just like a Kappa Architecture DB. In the background, it syncs with known peers. Peers do not have to be trusted, and can share logs and files on behalf of other peers, as each log is an unforgeable append-only message feed. This means Scuttlebots comprise a global gossip-protocol mesh without any host dependencies. Dominic Tarr on Scuttlebot

@gb Dominic, hey. You live on a boat. In New Zealand. How long have you been living on a boat? Did your parents live on a boat (and if not, where'd you grow up)?

@dominic Normally you inherit boating, but in my family it actually went the other way. I grew up on a farm, inland. You can't really get that far from the sea in New Zealand, but I didn't have a nautical childhood. Basically, I just decided that a sailboat would be cool one day, and then realized that if I lived aboard, I could save money buying a boat instead of paying rent. I hadn't actually even seen a sailboat up close at that moment.

That was when I was 21, in 2004. I've lived aboard 3 different boats since then, and also built several outrigger sailing canoes (and other various craft).

I live on my boat at anchor, and I have to paddle across when I want to come ashore, and I have to move my boat to different locations depending on the weather conditions. I don't see this as a waste of time because it's a refreshing time out from coding.

Okay, I could go on and on and on, but I'll stop there.

[Note from gb I had to wait a week for the next response since Dominic was heading to a conference. Here's a photo of his boat that you can stare at before reading the remainder of the interview if you want.]

gb Didn't you live in the woods for a bit? You lived in a hammock and learned to make your own shoes? This is all very fascinating for those who have always lived 'on grid' -- how'd you get off the grid?

dominic Don't worry, there will probably be boating content in all many of my answers, even those not specifically about boats. [And] yeah. That [the woods] was in (roughly) 2010 - 2012. I had left my First and Last Professional Grownup Job. I fired my boss! That is how I like to think of it. Previous to that, I had spent the summer sailing around in this outrigger canoe I had built, and sleeping on beaches etc. I ended up sailing to this commune and spent a month there. But after that, I felt that just becoming a hippie was too easy, and that I should give polite society a fair chance. So I did, and it failed. After burning out from that job, I just had to ride around on my motorbike and grow my hair long for a bit. I spent 6 months living in a swamp (on another boat) then went to Wellington to visit friends, and stayed. I had $200. Wellington has lots of extremely bushy forest all around it (somewhat like Portland, OR) so I just found a secret spot and strung my hammock up. I worked for mininum wage in a sushi resturant (whole other story). Since I wasn't paying rent, I was saving like, $1000 a month, that is as much as I could save at the previous fancy job, while paying rent. I only worked there 3 months. I was always totally open about sleeping outside, everyone was very interested.

There were two questions that everybody wanted to ask me and the answers were "I get by with a little help from my friends" and "a genteman doesn't say."

That year culminated with me attending the rainbow gathering which I decided was totally stupid, and that it was time to move back to the city, get a haircut, and get a job. What I meant, though, was do something hard. I did get a haircut though. So, sleeping in the forest, and working from a hackerspace, I started coding. I was doing ruby. I showed a friend a prototype, and he said "great, now rewrite it in the language of the future". I switched to node.js and never touched ruby again.

node was very new at the time. (version 0.2.1 when I joined) I could see that the node.js community was full of "mad scientists". Since it was a new thing, I figured it would be full of people who were interested in new things. (I had previously switched from java to ruby following similar reasoning) I bought myself a ticket to the conference, and across the pacific. That was mostly the end of the forest phase.

gb Is it true that you are indeed off grid? What parts about living off grid suck? Which parts are awesome (beyond the fact that sometimes ye gods give you the gift of a fish in the morning)? (Below, from Dominic's stream, fish gift before and after.)

dominic Living on a sailboat is like trading first world problems for third world problems. I don't have to pay rent but I am now fully responsible for having clean drinking water, and all the other things that arrive or leave your home via a pipe. Also, of course I have to make sure that nature doesn't destroy my home. If something bad happens, it's probably my own fault, if only by not foreseeing and preparing for that eventuality.

Before I got my first boat I naively imagined that it would be a lot of freedom, and it is, but it's a lot more responsibility. That is independence.

There are a lot more variations between alternative lifestyles than between default lifestyles. I've lived in the forest, on boats (several times) and in a car (in Australia). I definitely like the boat best. I think the best thing is that it makes you very interesting. Most people view living in a boat as quite romantic. (but not, say, living in a van - although that might be easier in other ways).

A few people telling you that you have inspired them to, at least, rethink their own relationships with society, is very encouraging. It feels like you are making a contribution to broader society, and to do so by mostly shirking the responsibilty that society thinks I ought to have (get a job and a morgage) suits me just fine!

gb The interesting thing about this is I get your motivation a bit better now. You've used the word 'encouraging' a few times. Not just in this interview, but also in your interactions on the network. The things you're doing, cyber sailing (and it's true, I think of you as more cyber sailor than anything) are probably in equal parts encouraging (as in resulting in people living in a courageous way) for you as they are for others. Which, in a word in Spanish, is chido. (There's another word, which is apoyo which means support/protection/help -- and it's used in the sense that there's an urge to be ultimately supportive of the good efforts of others.)

gb What got you started with Scuttlebot in 2013 and Cyphernet (2012?) before that?

dominic secure-scuttlebutt is the same project as cyphernet, cyphernet was just an earlier version of the idea. cyphernet was meant to be broader than secure-scuttlebutt, but I realized that there wasn't a general purpose data replication algorithm, but that append-only logs are a) very simple, and b) map directly to social-media applications, which are basically what the internet is today. Other decentralized protocols try to represent web sites as if it's the 1990s. As if the decentralized future internet is just a replica of the centralized internet!

The other project was npmd. This was a reimplementation of the npm client, with the idea of moving towards a decentralized package manager. npm has a lot of edge cases that made that difficult, and things that seemed like reasonable decisions at the time. npm has a replication feature, but I realized it only had that because it was built on couchdb, which has replicaiton. So, to make a secure, and decentralized, package manager, I should first make a secure decentralized database, then just use it to implement a package manager - so I shelved npmd and started working on secure-scuttlebutt.

I wrote a detailed thing about the history of secure scuttlebutt. Note: this link is only accessible inside sbot.

gb What's your tech stack? I know Linux, but beyond that, Dvorak, and beyond that...? And how do you do it all from a boat (specifically, serverside things that can't yet be done on sbot)!? And how do you stabilize your work environment? Twist ties? Glue? Belts?

dominic I currently have a lenovo thinkpad x201, with archlinux, firefox, npm. I'm not in love with any of that stuff. It's just the best things available for the things I want to use a computer for.

When you use something a lot you learn about all its flaws, and when something is really successful it gains a life of its own and magnifies the importance of those flaws. Success is kind of a curse, in that way, your creation goes on to torture future generations who would love to replace it but they can't.

This is how I feel about bash, for example, or the web. Also, the context changes, and design features no longer make sense in the new context, yet that design has achived staying power - tar (Tape ARchive format) is a great example of that, tar would be absurd if you invented it today. The whole stack is riddled with things like that.

qwerty is another, there are appealing myths about qwerty origins (like, designed to slow the typist down) but actually nobody knows for sure why qwerty is qwerty. Maybe dvorak is a better keyboard layout, but is hitting buttons with your fingers really the best possible way to talk to a computer? Yeah, so maybe I should also say underneath my laptop is indrustial capitalism and the English language, also full of absurd legacy.

I think the best thing would be to influence people that that go on to create something better. I don't want to create a technological legacy, but rather something other people can build past, and then abandon like scaffolding. I'm very interested in the concept of bootstrapping.

Like, we now have lasers. But once upon a time our only tools were sticks and rocks and bits of dead animals. So we bootstrapped to lasers from that, therefore you can make lasers using just sticks and rocks and sinew.

gb What got you started with being a programmer in the first place? Is this something you've done for ages, or a relatively new thing? Was it some itch you wanted to scratch and now you well and truly have scratched it?

dominic I originally wanted to make computer games. I started in QuakeC, it was a scripting language for Quake that made JavaScript look very feature rich. It was the bare minimum you needed to make a 3d shooter. It didn't even have string manipulation, or any kind of inheritance. There was one object type, Entity, and everything in the game was an instance of that. You could add a field to that type, and everything got that. If you wanted to represent a collection you had to add properties to Entity, and then say, create a linked list out of entities. I thought it was great. I had no idea how limited it was. Once I started making games, I pretty much stopped playing them. Programming was just a much more interesting game for me. All my projects where too ambitious to ever finish anything though, and I no longer have anything I created in that period. I later got into electronic music and mostly did that instead of programming. Although I did a computer science degree somewhere in that period (as well as dropping out and living in a sailboat) I didn't actually do very much programming until after I quit my first-and-last-grownup-job, which seemed like it might have been about programming but wasn't really.

The trouble with programming is that it's an infinite exploration game, and the better you get at it the more it expands.

So now I'm pretty good at programming, but there are also so many things I can't do because I'm already doing this. You can never "scratch the itch" because you just discover more itches! But, you can get to a place where no one has ever been before, and then build a highway to that place. There is nothing in ssb that has not been done before, but as a combination of things it is, and that is exciting.

September 2016 in Photos ➡

⬅ The GRH: Evolution of a Vision

This is Decent, a decentralized social network. Save your keys if you want a consistent identity on return visits.