I hosted Caleb James DeLisle the last two nights and three days. Here in Mexico City where I've lived since 2013 save visa runs and that one time I wrote about in Death & Tech.
Caleb authored (and is the benevolent dictator for life of) CJDNS. That, in short:
Imagine an Internet where every packet is cryptographically protected from source to destination against espionage and forgery, getting an IP address is as simple as generating a cryptographic key, core routers move data without a single memory look up, and denial of service is a term read about in history books. Finally, becoming an ISP is no longer confined to the mighty telecoms, anyone can do it by running some wires or turning on a wireless device.
This is the vision of cjdns.
Caleb got in touch on sbot. He said he was heading somewhere nearby (he lives in France right now) and could he crash here on his way through. He came with gifts (some of which are pictured above) and a friendly (agradable in Spanish) attitude that persisted through his visit. When I dropped him at the airport today I said in truth: he was a real pleasure to host.
Here are some of the things I learned. And yeah, I still have loads to learn. But I now know some of the things that interest me more, based in part on his visit.
I've followed Caleb's story since I cloned down cjdns back in 2012. Please stop and read the white paper and project goals.
These are the notes I took in the first few hours he was here. I wrote them to notecards first (he opined in the chillest of ways that there was no whiteboard and markers -- notecards and washi tape had to do). Later that night I pushed my notecards to my notebook. Now that he's gone I have the mental capacity to push them to a git repo.
When the three of us -- Ev, Caleb and myself -- sat down around the table in the living area of the apartment I asked if I could ask a loaded question. That's how the learning got rolling. He chuckled, if I remember right. He agreed to hear the loaded question. I attempted to unload it as much as possible but it came down to: what's the best way to interact with him, seeing as he's a superior programmer to me in every way.
He laughed, said something self-deprecating I'm sure, and we got down to it. I want to repeat this here for the reader, just so you know. I was out of my league. In over my head. And I learned a ton as a result. Not once did Caleb pull a holier-than-thou, nor a omg-how-could-you-not-know-that, nor a patronizing tone. Not even once. I was, and am, impressed.
Oh, and before I go on. He was annoyed (as I perceived it) with the router. He switched us from a channel that loads of people were on to one that only this apartment is on and it got faster (though, still kinda slow) and he seemed to chill out after that.
He grew up in Heath, Mass., a place with about 700 people in it in the last census. No internet until 2008. He was thinking (when they did get internet) this should be fast.
The word 'hick' was thrown around during our conversations with affection. He's a Mass. fellow and I spent a lot of my growing up years in the Carolinas. Hence, hicks.
70s&80s ISDN <- reliable transport -- it's going to get there --> was gonna save the world
TCP/IP chunks -- like postcards, drop a few of them on the ground
TCP --> that protocol will resend if they're dropped, resend packets that were 'missing', just a usage of the internet IP --> throw postcards/simplistic hack
We can do anything we want under IP header. If I'm a router instead of announcing 'tweets' it announces prefixes. Try to think of it as a series of bits. Everything that starts with these bits is mine.
Switchboards -- reliable. Research BGP/IP Border Gateway Protocol. BGP: Secret part that makes this work.
Early gossip protocol: 'I know the person that knows...' shortest route <-- dumb. B/c it was 'just make it work' -- from Caleb: "it's 'dumb' because it doesn't take into account the speed of the link, it just goes the fewest hops. And yeah, in 1970s they really wanted to just make something functioning as soon as possible so they pushed back the tiny details."
IP addresses prob: lots of small blocks. You have to go deep in order to know where to send it.
Research The 'swamp problem'
People were assigned these IP addresses by nat'l ~~~~ foundation back in the 80s
192.0.0.0/8 & the swamp are related 192.168 ......... (16 bits half of an IP address) (allocated to everyone & no one) fc00::/8 <-- same thing in the CJDNS world -- (||fcc sells blocks of radiowaves)
Authorities on the subject think selling IP addresses is wrong -- think they should be available on an as-needed basis.
Routing table bloat: BAD -- need to store it all in fast memory & our machines aren't that fast. 'The BGP Problem'
Updated: 2016-12-15 to include a note to let you know errors, omissions and misunderstandings are my own, 2017-06-11 to tighten. Updated 2018-03-15 to delete backstory on waiting around at the airport.
← Your First Node.js Server Over a Porter