git ssb

0+

gb / %qG3fbP4DptsCKB/FLbe…



Tree: 39bd13a5c8cd3691193d79e575dc556d109567fa

Files: 39bd13a5c8cd3691193d79e575dc556d109567fa / gb-dt-interview.md

14522 bytesRaw

title: Dominic Tarr // @dominic // Answers Some Personal & Technical History of Scuttlebutt Questions Asked By Gwen Bell // @gb //

date: 2016-08-31

@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.

gb No!!! You're too good a storyteller ('but I'll stop there' -- classic move, sir). And it's late in Mexico City so I'll have to read more mañana.

Side note: I sometimes parrot you when I'm telling a story by saying ...and then... I nearly died! the way you did in person when we met. I don't even remember how you 'nearly died' but it was so breathless, all ears in the room turned in your direction.

Anyway, yeah I heard the water hitting the boat I on the [sbot dev] call last Wednesday. It was so lappy sounding. My guess is that it informs the work you do. Alright, calling it a night.

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 cumulated 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)?

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.

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.

gb Probably hard, and maybe final, question: what area do you most need to grow? What's your Achilles heel in the world of programming? (And if you feel comfortable saying so, how are you addressing said challenge?)

dominic Probably dealing with rabbitholes. Sometimes programming can be a powerful drug, like, you can focus on a challenging problem and it completely takes your mind off other stuff. Possibly other stuff you should be doing.

Programming is basically surfing on a wave of dopamine. That can be a pure thing - if you are creating something nobody else needs, but otherwise feelings of obligation can form, and that can cause stress when something ends up taking longer than you expect.

Last week I was feeling like that, and started working on a fun thing on the side (a pure js database) but then that got complicated and I worked on it too long. So, I hadn't progressed on the thing I was working on previously, and then the thing I didn't actually need to do got stuck... so I went back to a simple thing I had been meaning to do for ages just so I could feel like I had made progress somewhere. And what about like, community supporting stuff like for example, writing documentation? How do I do that while I'm busy trying to escape from these rabbitholes?

[As for how did scuttlebutt start] I was really just exploring ideas, I knew that what the world needed was a replicated database but I didn't know how to create that yet, so I settled for a replicated datastructure.

That module was already my third iteration into data replication.

First I wrote https://github.com/dominictarr/snob (which worked how I thought git worked - as a tree of patches).

After that, I wrote https://github.com/dominictarr/crdt.

scuttlebutt was refactored out of crdt, mainly just to tidy it up. I intended it as a base class you could build more interesting replicatable datastructures on top of. I included an example, model.js

but then everyone just used the example directly!

I also talk about that in the history of secure scuttlebutt.


@dominic, we've put a few weeks into this, so let's rock and open it to comments, shall we? Thank you for taking the time to respond. I made minor grammar edits and if it's all good, will push it live with your ok.

g

Built with git-ssb-web