Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
#96 Gary Johnson on Gemini Protocol, Clojure and off-the-grid life image

#96 Gary Johnson on Gemini Protocol, Clojure and off-the-grid life

defn
Avatar
1.2k Plays2 months ago

We caught hold of Gary Johnson (via Satellite) from his remote yurt to talk about Gemini Protocol, Clojure (in Sustainability business) and his two-time yurt building and living off the grid. 

Check out:

Gemini Protocol - https://geminiprotocol.net

 Space Age - the Gemini Server in Clojure  https://gitlab.com/lambdatronic/space-age

And if you have a fancy Gemini Client try these links 

=> gemini://geminiquickst.art/ Gemini Quickstart (for non-technical users)
=> gemini://gemini.ctrl-c.club/~sario528/projects/clientlist.gmi Exhaustive Gemini Client List
=> gemini://botond.online/en/stats/ Geminispace Statistics Visualized
=> gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi Statistics on the Gemini space
=> gemini://geminiprotocol.net/news/ Official Project Gemini news feed

Transcript

Introduction and Guest Introduction

00:00:15
Speaker
Episode number 96, welcome to DeafN. And we have all the way from Vermont. I don't know the exact location. I'm not going to reveal your exact location. Gary, welcome to the show. Thanks for joining us from all the way, I think, across the pond, as they say. And yeah, it would be nice if you give a quick introduction about yourself, and then we'll dive deep into different topics. Yeah, thanks, guys. I'm excited to be on. I've been listening to DeafN on and off for a while now, and it was fun catching up on some of your podcasts recently. um So yeah, I was really excited that you guys ah invited me on the chat a little bit.

Gary's Off-Grid Lifestyle in Vermont

00:00:52
Speaker
um So my name's Gary Johnson. um My handle online is lambda-tronic on GitHub, GitLab, Places, various protocols, ah networks that I show up on.
00:01:04
Speaker
ah So as Vijay said, I live off grid in the deep dark forest of ah Vermont, which is in the northeastern United States, bordering with Canada, as well as New York State for people who aren't as familiar with US geography. um So Vermont is the most rural state in the United States.
00:01:23
Speaker
um We don't have any real population centers. Not really to speak of. Our our biggest city has 44,000 people in it. um so that's That's as dense as it gets here. yeah yeah and That's a big college town. It's not even our capital city. I think our capital city has between 7,000 and 8,000 people in it. ah It's the smallest smallest capital in the US. I live in a town of less than 1,000 people, which is not uncommon around here.
00:01:51
Speaker
so There are maybe about 10 town-ish size cities I could think of in the state of Vermont, um where you have some sort of population intensity, higher than you know a person per many acres. But ah but much of much of Vermont is just forested mountains. The state is 80% covered in trees. It has a ah very outdoorsy, very environmental ethos here. It's a very progressive ah state.
00:02:21
Speaker
um and We're also kind of the state that time forgot ah in in a lot of ways technologically in that a lot of the state doesn't have cell service or has very spotty cell service. um This has a lot to do with our extremely mountainous terrain. yeah So you're always in a cell tower shadow and are extremely low population density.
00:02:42
Speaker
because there just aren't a whole lot of people anywhere it's hard to justify the cost of putting in a cell tower to serve a very small community of a few hundred people ah so. ah As a result you get good cell service on our like two highways that we have or on or in you or in the towns right in the bigger towns and they'll have service but most the rest of us live on dirt roads out in in the mountains.
00:03:07
Speaker
And the the service is spotty or non-existent in a lot of places.

Vermont's Climate and Living Conditions

00:03:10
Speaker
So um i I live off-grid, as we said, I have a homestead out here. I own um about 70 acres of forest, um all extremely hilly and wild. um I live in a yurt, which you guys can see on our thing here behind me. um I've been in this yurt for almost 10 years now, living off-grid here in Central Vermont.
00:03:31
Speaker
How cold does it get it, by the way? I'm assuming it's going to be super, I mean, if it's closer to Canada, it's going to be cold. It's quite cold. Yeah. Yeah. Yeah. I mean, typical winter temperatures are not bad at all. a I mean, I'm an American, so I think in Fahrenheit, but it's, yeah you know, in, sorry, I apologize for that. um Yeah. So like typical winter weather in Vermont is sort of 15 to 25 degrees Fahrenheit, something like that.
00:03:59
Speaker
um So, something like 5 to 10 degrees, negative 5 to negative 10 degrees Celsius. That would be your sort of typical weather, nice weather, really nice weather to be out and about. Temperature can go as low as maybe thirty minus 30 sometimes, but very briefly, um which is not too far from minus 30 Celsius as well. yeah yeah So, it's it can get pretty pretty cold. um We have a pretty long snowy winter here, about five months of snow usually, um seven to eight month heating season.
00:04:29
Speaker
So it's a cold state, that's for sure. Were you born were you born in Vermont, Carrie? Is that you kind of grew up used to it and all that kind of stuff? or i I didn't know. No. No, my family is this not Los Angeles. My family's from, uh, Mexico, Louisiana.
00:04:45
Speaker
all right okay and so The opposite side of the state, way down in the southern part on the on the Gulf states. ah My wife is from Vermont though, so she's been her wife. I've been in Vermont for over 20 years, yeah um so I'm and very used to it at this point. I've gone native as best I can.
00:05:02
Speaker
Don't tell the native Vermonters that. they won't They wouldn't appreciate that.

Sustainable Living Practices

00:05:05
Speaker
And they'd still call me a flatlander. um that That's what they call people from out of state. ah Yeah. So anyway, ah like I said, low population density. So we don't tend to have a whole lot of built infrastructure, right? Just the the tax base is there to support it outside of the towns. So it's a lot of dirt roads and a lot of people living in their own little independent homesteads. um Pretty typical thing in Vermont is these little itty bitty towns.
00:05:32
Speaker
Well, the towns are actually large geographic regions in which there's maybe a very, very small village center and the rest of it's all just forest. And and the people are scattered in the woods and we usually can't see each other's houses. So i'm here's my house. I'm surrounded by a ton of forest. If I go up the road aways, I can maybe reach a dirt road that goes or driveway that goes to somebody else's house.
00:05:53
Speaker
And if I go down a little further, there's another driveway that goes to someone else's house and we're all tucked away from each other for the most part. um So I see a lot more wildlife than I see humans on ah on a typical basis, you know, you like sit on your front steps and eat lunch while the, while there's like a deer.
00:06:07
Speaker
eating grass in the yard in front of me by my solar panels or something. and A hummingbird flies up to to see you. It's like you're in a fairy tale all the time, living in the Shire here. um so That's that's kind of my thing. That's where I live. I power my house with solar power from an array that I built years ago. ah and with firewood that I harvest off my land with crosscut saws and axes and sleds and a whole lot of muscle power, basically. So all my heat, hot water and cooking comes from firewood about seven months out of the year. And then it's a solar power for the other five taking care of it. So yeah. What do you do with that kind of like services? I mean, cause I mean, it's kind of great to be independent and all that kind of stuff, but are there certain things where- Where do you get your Pringles? A fair question.
00:06:54
Speaker
Well, I was thinking more of like more serious things like like healthcare and stuff like that, like, you know, i ask doctors and, you know, if you have a probably like a proper kind of, uh, I do have you cut your finger a little bit while you're hacksawing all that wood off, you know, like yeah yeah well you shot off either try not to chop the foot off. You got to wear that. Um, but yes, it, it can be a little ways to the doctor.
00:07:17
Speaker
um Yeah, we do have hospital we have a good hospital network scattered around Vermont. um Actually, healthcare care is invested in pretty well here in the state. But um yeah, I think like in a lot of places in the US, you know healthcare is is can still be expensive and can be difficult to access sometimes. Right. I mean, you're making it difficult in fairness.
00:07:38
Speaker
because There's so few of us or what? I mean, you just got to drive there. But i think I think it's probably easier in in the place where you're living to get to the doctor than if you're living in Bombay with the fucking traffic and, you know. There's no traffic here. There's none, right? that Zoom. yeah Yeah, yeah. I mean, I'm about... Even if it is like 20 minutes away. I live like 35 or 40 minutes from the nearest hospital, um but there's no traffic between me and there. they're So you just drive down these country roads till you get there.
00:08:06
Speaker
Yeah, so so it's available, it's accessible, and you know I live 20, 25 minutes away from a town, ah a small town where I can go get groceries, um you know go to the hardware store, the lawn and garden store, things like that, things that I might yeah might need around here. What about like so i know you're drinking water, Gary? I'm drinking water out of a mason jar. Potable water? Oh yeah, even better. You're a yeah living hip hipster. it but A hippie, not a hippie. I'm not a hippie though. i'm ah we We would say that i'm I'm crunchy out here actually. Not hippie, like crunchy granola. It's a different slightly different cultural ethos. okay um So potable water, yeah. I have i have a spring on my property that that I hand dug and so that ah gravity feeds into my stone basement and I collect the spring water from there.
00:08:54
Speaker
and bring it into my house. And I run it through ceramic filters and drink it. yeah So yeah, this is gravity-fed spring water. Wow, brilliant. o yeah Very healthy. Indeed. But how how did you... Yeah, before we go into your closure and technology stuff, so...

Choosing Vermont and Educational Background

00:09:08
Speaker
Because, you know, as you said... This is a closure podcast, right? Yeah, eventually. Eventually, yes. Okay, sure. Eventually consistent and then becomes about closure. And then we say, hey, so you are in closure? Yeah, okay, moving on. Thank you.
00:09:20
Speaker
yeah okay na but But I think the the interesting part is, as you said, like you you you don't see your neighbors. and I live in the Netherlands where basically my neighbors and our couches are shared. you know We have that closed super dense area. But how did you how did you end up you know yeah coming from from from the south? and i think I'm guessing Indiana is south. and Louisiana, which is as south as you can get.
00:09:45
Speaker
Okay. okay yeah so I'm sorry. I'm i'm really bad with the US. No worries. It's it's the swamp lands with the alligators at the very southern part of the United States on the Gulf of Mexico. Right next to Texas. you know texas state People know about that one. What was the journey? and why Why did you end up in a place where you have your hand building artisanal yurt and living by yourself. and What was the motivation? and Okay. We'll do a little compressed life backstory, I guess. yeah All right. So my family is all from so from central Louisiana. My family is Cajun, Cajun French. And um for the most part, most of my family members just grew up and just
00:10:35
Speaker
put houses on their parents' land or right right next to their parents' houses and live in these communities very closely connected with their families. um My immediate family was different and we were the only ones who were different in this way among all of my relatives yeah because my father joined the military when he became 18, right? So before I was born, he joined the US Air Force and when and he was in the Air Force for 20 years. And so as a result, um we kept getting moved by the military to one Air Force based after another, after another, after another. So I probably moved like every year and a half of my life growing up. Um, so I, I grew up on Air Force spaces, which I, so when people ask me, where are you from? I say, well, you know, I'm sort of from Louisiana, but I don't have the accent. Uh, I'm not really from there per se. Um, it's more like I'm from Walmart. Okay. Because, uh, every Air Force base is like every other Air Force space. Um, there there are these little gated communities that have like,
00:11:34
Speaker
bowling alleys and movie theaters and grocery stores and schools. and like They have everything, housing inside these gated communities. I kept getting moved from one to the other in different states, but it's like I wouldn't really sort of absorb the culture of the state I was in because you rarely leave the gated community yeah in your day-to-day life.
00:11:53
Speaker
so but that's That's why I say it's kind of like growing up in Walmart. It doesn't matter where you are. It's yeah the same. yeah So I did that for a lot for you know my entire childhood. My father got out of the military when I was 15. And so um then he moved they moved back to Louisiana to be near their family. And I really just couldn't jive with the culture. i i went to i went So i I went to boarding school, my own and my own ah request.
00:12:20
Speaker
Went to boarding school for um finishing up high school, graduated from there and ah went off to college and ended up heading up north to Vermont ah pretty soon. And so I i so i went to undergrad.
00:12:34
Speaker
in Vermont at a tiny college called Marlboro College in out in the mountains in southern Vermont, like everything is. It was 300 students tucked away you know down at a little bitty road way out in the middle of the woods, right just sitting in a clearing in the middle of the forest and learning.
00:12:52
Speaker
and I really fell in love with the place immediately. The people, the landscape, the culture, it's just it was amazing. It was just like being in the Shire at the lower of the rings or something. Everybody's a hopping. I was like, this is crazy. This is such a cool place. I've never been to before. So yeah, I fell in love with the place in in undergrad. And I really, as I said, fell in love with the nature of the place in ah in a big way. So I was studying natural history and ecology, um ah wildlife tracking, bird language,
00:13:22
Speaker
all kinds of things like that while being a computer science student, right? like That was my my focus. But my undergraduate college, ah being so small, it had a focus on students being able to create their own degree plans.
00:13:35
Speaker
So that was that was pretty unique. And so um i as a result, I had to create a lot of independent study classes ah to sort of tie together all my interests in order to you ultimately graduate. And you have to do kind of a dissertation type thing, right, but a little bit smaller because it's undergrad that ties everything together. So I i wanted to blend my interest in computers and and computer technology with my interest in natural history and biology and so on. So what I did is I ended up diving into mapping landscapes, right? So so yeah GIS, Geographic Information Systems, was the natural fit. ah So I went and got some GPS receivers, learned how they worked. I sat down and wrote some PERL programs.
00:14:18
Speaker
right ah Back in the day that that spoke to the GPS units over the serial port, pull the data down, parse the format, extract it out, get it into a different GIS format that I could then send into a ah ah Linux you know open source GIS program, generate some maps in an automated way. And I pulled it all together and built a web application backed by this this GIS software that I was shelling out to from the server side. And so I built a web mapping application before there were web maps.
00:14:45
Speaker
Way back before anything like Google Maps existed, there were no we weren't doing JavaScript applications in the browser at that time. yeah um This was like 2002, 2003, something like that. And um ah yeah, so I built this whole field ecology web mapping system for my college ah because the school had 270 acres of forest and very active you know field ecology research that they were doing there. So I built this whole protocol and system for the school to use. ah It was called the Marlboro Lorax.
00:15:15
Speaker
After the Dr. Seuss character, lorax.marbro.edu. And you'd you'd go there. and Anybody could log in with their school email address, hit the LDAP server, signed it right in. And you could so you could upload your own maps ah to the system. And you could see all the maps that everybody else had put up there, including all the base maps I put in. you know so Satellite imagery, flyover aerial imagery, all that kind of stuff in there. And so you could go into this this simple interface. And you could click things like, OK, show me ah Show me some aerial ortho imagery of the campus. Show me a map of the trails of all that. We had a really extensive hiking trail system. Put the trails on there. Then show me where the tracking club is most recently spotted Black Bear sign or red foxes near the campus. Where are the porcupine dens and so on. And they'd all show up boop-poo pooop on the map and you can see, okay, so all I got to do is go up to the school sauna and I got to go, you know, just this far up to the Northwest and boom, I'll hit a porcupine den. Super cool.
00:16:10
Speaker
So all this stuff was getting mapped out that way. And I was, I was doing this stuff while the rest of the bio students were drawing things on, on pieces of paper with pencil and things that, and then taping them up on the wall in the biology building to make like a mosaic of what they thought campus forest looked like. And I was just making digital maps of it, right? Using real satellite data. So that's, that's what I got super excited about. I got really pumped about this ah exciting way that I could really kind of start to blend together my interest in environmental studies and ah computers at the same time.

Environmental Modeling and Software Development

00:16:44
Speaker
And so I graduated with my degree in computer science and geoinformatics. yep ah And from there, I went and I worked in i worked and it for an open source software company for a little while, writing educational software, but I was i really wanted to be doing environmental software.
00:17:00
Speaker
So i I pivoted away from that and I went and I took a job in outdoor education for a little while where I wasn't doing any computers. And I was just working with kids, ah young people and taking them out in the forest, ah doing wildlife tracking, ah wilderness survival skills, all this kind of like low tech stuff with them. and Having a lot of fun with that. But again, I was annoyed that I wasn't using my computer background. I just needed to get the two together again. So I i had a long think on this and ended up um going to grad school to get my PhD. So I stayed in Vermont. I went to the University of Vermont and I got my PhD in computer science again.
00:17:37
Speaker
ah especially with my my focus area was in ecosystem service modeling. So i had I was moving from mapping landscapes, which I did in my undergrad, to writing simulation models of what if scenarios on landscape, right? If I can collect the data, now can I actually write computer programs that'll play out what if scenarios. ah So that's what I learned to do ah over the course of my time in in my graduate degree, right? What kind of what else scenarios are you talking about, Gary?
00:18:05
Speaker
Oh, all kinds of things. Land use change scenarios where you want to look and see you know which areas are likely ah to see expansion for urban growth ah around population centers. ah What are areas where we expect to see ah you know wetlands are going to get drained and paved over or something.
00:18:22
Speaker
or an area is going to get reforested or deforested, or this forested area will be turned to agriculture, something like that. And so we look at these sort of changes on the landscape that are either things humans are doing like that or outside forcing functions like climate change related events, you know, greater droughts, increased temperature swings, ah stronger storms, things like that. We want to put those kinds of things into these virtual worlds and play out these sort of probabilistic what-if scenarios that are related frequently to assets that humans care about. How is it going to affect them? So yeah ah for example, we want to see, are we going to what does it look like to see greater prevalence of wildfires is something I've been doing a whole lot of in my professional ah career. i'm So I've written simulation software to try to simulate the growth and propagation of wildfires, which is a major problem here in the US and in lots of places in the world.
00:19:16
Speaker
yeah And we have a website called pyrecast dot.org and that yeah tracks all the big active fires in the US and does fire forecasting out to two weeks of all these fires. So you can click on them and see hour by hour growth of these fires, their projections updated every few hours, risk maps in the Western US. Is this from the GIS data or is it a simulation? it's It's a combination. So we're pulling in GIS data, the satellite imagery, and we're feeding that into our simulation model so we're initializing our simulation models with the data we get from the satellites. And then we we then to play out these scenarios into the future. It's like a weather forecasting model but yeah doing it for fire instead, right? yeah And then we put that data back on the website, we show it, we curate it in with a nice easy web maps now since the tech is so much more advanced than it was 20 years ago when I was doing this kind of thing the first time.
00:20:05
Speaker
yeah So um yeah, that's that's the kind of thing that I do, i mean but hydrologic modeling as well as mixed in that um sediment retention or or loss deposition, yeah all all kinds of things. right So a lot of natural hazards related modeling I would say ah to human assets is ah is definitely a big concern and forest change. So that's what I did my PhD related work on. It was sort of environmental computing scenario modeling stuff.
00:20:34
Speaker
and One thing that I was frustrated with was that as a person who had spent a lot of time in this sort of wilderness skills, primitive skills, ah survival community, and living out in in the forest, these little communities in southern Vermont, when I went ah to go to to grad school,
00:20:51
Speaker
at our at the giant city of Burlington, Vermont, 44,000 people. i I was disappointed to see ah that there seemed to be so little actual environmental action being taken or conservation action being taken by my professors or the other students I was with in my cohort. I thought, you know so they're coming in dodge ramps and then ah yeah you're right we're just living in like hum lason a big suburban house or something yeah and i'm like but we spend all our time talking about these environmental issues but i mean we're the source of the problem it's it's this consumption uh that's the issue here and none of us are trying to rein that in so i was uh i wanted to try to see what was possible with today's technology
00:21:38
Speaker
yeah So that's how I ended up out here, since that was the question you guys were leading to. So when I graduated, I said, okay, let's let's go put it to the test. I'm in Vermont, which is a great place to be homesteading and and whatnot. It's a very rural location anyway. So I said, all right, my my dream is to go get a tiny house in the deep dark forest. That's going to be the plan. And let's see how far I can take this thing. And where do I bump up against real world limits i in terms of what is or is not possible right now?
00:22:07
Speaker
so that That's how I got into it

Building Off-Grid Systems and Sustainable Solutions

00:22:10
Speaker
in the first place. It's also, it's a lot more affordable than going and and buying a house. house grob House prices are out of control in the US. So i yeah I bought a yurt. I found ah a woman who had about a hundred acres of land here in central Vermont. um And she rented me an acre of raw land. So I would pay her land rent, yeah just use that part of a field. And I built a platform, put up my yurt.
00:22:34
Speaker
solar panels, I put up a wind tower, I installed the satellite dishes, wood stoves, made gardens, the whole thing. And so ah and I lived in the Seert with my partner for the last decade. um And I'm on my own land now, but I spent three years on this other person's land while I was building all these off-grid systems and just seeing you know how far can I get trying not to use fossil fuels.
00:22:58
Speaker
basically, at least it's my home systems. And so so that was eye-opening. I learned a lot about things like biogas or thermoelectric generators, ah the limits of wind power in certain terrain, um solar power, what kinds of batteries work better in different kinds of temperature regimes, and so on and so forth. And so, yeah, that's what I did. and I built this this place up after about three years.
00:23:28
Speaker
of living on someone else's land in my yurt. I was able to purchase my own piece of land, and which is what I'm on now. This is another piece of raw land in the middle of nowhere with no power lines or phone lines coming to it, nothing on the road nearby. um But it was great for me because I already had all the systems for living here. So I just knew came over here, I built a stone foundation under my house um yeah with stone on the property, moved my yurt here, stood it back up.
00:23:53
Speaker
and i move my sheds over my solar panels and so on and so forth. And yeah, I had to build new gardens, but that was pretty much it. And so this is where I am now. And yeah, I'm very happy with it. But- It is a fucking Herculean effort though. i mean much more it is yeah just That's That's not even going to overstate how much work this is. Herculean to begin with. That's fair.
00:24:21
Speaker
ah much here gary is sisyus you know yeah please man I moved a lot of rocks. you know I moved some huge, huge rocks. I told you this this is a stone. fit It's not a concrete foundation. There was four concrete foundations for houses. This is actually stones. and The old timey way of doing it in Vermont were to build the dig holes in the ground and build stone root cellars. You find these old ones in the forest when you walk around. um There'll just be a pit in the ground.
00:24:46
Speaker
with stones lining it, you're like, oh, a house used to be here 100 years ago or something like that. yeah So I built one of those. I actually excavated the one that was on this property and reused its stones and combined them with stones from another stone seller on the or stone foundation on this property. And I moved them all over by hand.
00:25:02
Speaker
It was so much work god pushing was pushing boulders across the yard with rock bars and just dragging them. I mean, good grief. Real life to see if it's absolutely brilliant. yeah Meanwhile, we are like, ah, Jim, I'm not going to fucking go to the gym. on Fake rock. No way. Yeah, I'm too lazy to do that. I mean, washing up, who can do that? Oh my gosh, tell me about it. So yeah, it's it's but i think it's been an adventure for sure. I think it's like a really good good example of, you know, your work is not separate from your belief system and your day-to-day life, right? So you're you're combining them. and And I'm just going to be like a maybe stupid ass comment, so please shoot me down if that is too difficult. Go nuts.
00:25:48
Speaker
It feels like it's you know on an individual level, it's pretty easy, right but scaling these things beyond a certain limit. I think that's where the whole bullshit of this this massive agriculture and massive ... If we we remove all the extravaganins, like the unnecessary Netflix shows and all the crap, if we remove that crap,
00:26:10
Speaker
But the rest of it is, I would say, let's say 50% of the population wouldn't have the skills and it'll be fairly difficult, right? Or would you think the basics should be pretty easy or no one needs to lift their yurt and then move it? I mean, that's a very fair question. It's a very fair question. You know, I think here in the US, the kind of lifestyle that my partner and I lead is seen as probably pretty extreme, maybe less so here in rural Vermont, where I have a bunch of homesteaders all up and down the dirt roads near me, people living in tents and domes and tiny houses and stuff. But yeah broadly speaking, it's pretty off the deep end. yeah ah And and and that's that's totally fair because it's a relative comparison right to the the kind of
00:27:00
Speaker
style of ah Western developed living that's expected in much of America, right or in Europe, or Australia or Canada. And so ah there's that. But then again, um i mean I've done a fair amount of traveling for work and in my education. and ah Not every country in the world has the same like like expectance of living standards as we so have in Western countries, right? yeah ah And so I think there are a lot of skills that and are kind of lost, let's say, ah in more developed societies that are still thriving and, and you know, very strong and
00:27:36
Speaker
ah in more developing countries, or right as as they might be classified, things like that. Which is to say, there are plenty of very ah successful and vibrant small towns and villages where people can actually work on their own homes, have their own you know garden plots and so on and so forth, have a local farmer's market, all all those kinds of things. But you at the same time, you're absolutely right that ah you know population density is it's It's just it's a scaling scaling problem. It's yeah ridiculous, right? I can do this here because it's a super low density state, as I said, right? So there's a ton of land. The land is not incredibly expensive. So we can sort of space ourselves out from each other. yeah And I have access to these natural resources then.
00:28:22
Speaker
like a spring that I can dig on my property, yes you know open space where i can on a south-facing hill where I can set up solar panels or a wind tower yeah area for me to garden and so on and so forth. But I don't have a massive sprawling homestead or anything. I keep it pretty compact. I do live in a one-room structure, right? yeah yeah Trying to keep the footprint small. That was the goal here, yeah yeah after all.
00:28:45
Speaker
um Yeah, I think there's a lot that can be done on a lot of levels, but there's no one so silver bullet solution. But I think one of the things you've noticed in like, I mean, you know, it's true in a lot of environments is that you could probably like have like, like say communal stuff.
00:29:01
Speaker
hu Um, like, I mean, a great example in the UK was, or is that, you know, you can have like a communal, like a small village could be powered by a wind farm. Um, and that would take them essentially kind of off the grid, you know, yeah people can, like you said, they can invest in solar panels and that takes a lot of pressure off the grid.
00:29:22
Speaker
You know, I think, I think the worrying thing for me is that it seems like there's always some fucker who wants to use it for some exert system like AI, prep door some other, shit you know, but let's assume, let's assume that we can hopefully, you know, wake up and smell a coffee sometime and block those kinds of bullshit things. Then it just seemed like, that you know, like you say, with the modern technology, those kinds of, uh,
00:29:48
Speaker
Those kind of technologies can be delivered in a scalable way that can be used by, you know, none kind of yeah like a locally optimized way. Yeah. I mean, yeah even for larger urban environments, no not just for the sort of like, you know, the oh i mean but this is this is the thing, right? I mean, because I live in probably the other end of the spectrum. I live in the Netherlands where I think, you know,
00:30:10
Speaker
For a person, there is you know it's the it's the inverse of, I don't know, a square centimeter, there are 20 people here. It's probably the probably the the largest in terms of population population density, given where you are in the Netherlands. But I mean, we we were trying to get the, because I live in an apartment building and there had been discussions about, can we put the solar panels on the top?
00:30:32
Speaker
And then there is 20 different types of proposals, like who will get how much percentage of the panel and all these things. And these things take a lot of time. And some people don't want it. And it's it's always a challenge when when you and you scale it up. But anyway. but It can be. and it It feels like the you know playing Age of Empires and within first two two rounds or civilization. you know It says, oh, your people need more resources. and okay That's right. Exactly. Yeah, yeah yeah there's ah there are a lot of resources time that people can consume pretty quickly. yes yeah That's very true. um anywhere Anyway, anyway let's yeah we we we could think about that all day long. Now that we have located you. Now that you have located me here in the the great state of Vermont, tucked away in the mountains.
00:31:18
Speaker
Now, what has been your technology technology

Programming Journey and Discovering Lisp

00:31:21
Speaker
journey? Because you said, you know, you're doing computer science and then, you know, PhD and Perl, obviously, you know, that's one of the, I think, probably the right of passage for this kind of work. Back in the early days. Sure. Yeah, yeah. CGI.
00:31:37
Speaker
Yeah, CGI. Oh my gosh, yes. Writing all the fun stuff. um So how did you start with the programming and then how did you end up hopefully in Clojure or beyond? I am in Clojure, yes. yeah you run a I run a Clojure shop. Yep, I'm thoroughly in Clojure. Okay, how did I get here? Let's do technology then. It's not an accident that you're on a podcast, Gary. You're definitely in Clojure, we know that. I am, i am you know, parens all the way down, man. That's how I roll.
00:32:05
Speaker
You're going to rename your year to enclosure and then just... Oh, I like it. I like it. Yeah. Now it's lisp on top of lisp on top of lisp on my machine. Exactly. We'll get to that. ah Okay, technology journey. So I... Let's see. I started programming 15, I think, something like that. Started writing web pages, a simple HTML ah back in the day, like I think a lot of people did. i And then, you know, wanted to learn a little bit beyond that.
00:32:34
Speaker
put it around with a little bit of JavaScript, but at the time it was the kind of thing that people used to make, you know, sparkles chase a mouse. It wasn't something you'd write applications in. So it didn't really, wasn't that interesting. Um, the first programming language I really broke into was in high school. I learned Pearl. Um, so Pearl five at the time, uh, which is still Pearl five doing so but pearl six never really never happened. Right. Okay. Roku, et cetera. So, um, yeah, I got a book on Pearl and I read that and I taught it to myself and I was ah super excited about it. I was also learning about, uh,
00:33:08
Speaker
Linux systems at the time. ah So I put that on my on my computer. I can remember what distro put on in the early days, but something. I put some distro on there. And I spent tons of time reading man pages and reading online, ah you know, all text posts on all kinds of forums and stuff, trying to learn everything I could about history of GNU Linux, free software, open source, all the whole thing. So i I was really deep in that stuff. So i was I was learning some shell scripting in Bash and I was learning Perl so that I could try to take it a little bit further and start to write some different kinds of applications. And I really went
00:33:49
Speaker
pretty hardcore on the Pearl. you know ah For about six years, I got to admit, I was writing everything from CGI bin, type web applications. Poetry. ah Pearl poetry, absolutely. Yeah, of course. Office skated code. I had the hide the whole office skated Pearl coding t-shirts. Then you have the geek code. Absolutely. I was that guy. So I had these, I was writing um You know, I was writing desktop applications with like wx widgets, um, and command line programs, of course. And then I was writing but right down to things that were, as I said, talking to GPS receivers over the serial port. So anything I could do, I'd find some way to do it in Pearl. Uh, so that's what I started with. And right after I learned Pearl, I started taking classes in school.
00:34:34
Speaker
for computer programming as well. So I started with C and C++ plus plus and then Java. I think that was pretty much the arc that I was learning in school. ah Python didn't even appear until I was already in college. And being a Perl programmer, I, of course, was like, get out of here. Nothing to do with you. There was a big rivalry there. We did not like that at all. We were like, Python is just Perl in a suit with a haircut. Like, stop. Get out of here. There is always like a million ways to do the same shit and confuse everybody. Precisely. So we want to stick to that one, yeah.
00:35:09
Speaker
Yeah, yeah. Tim Todi, right? That was yeah exactly that was the thing there was more than one way to do it exactly in Perl. And there's only one way to do it was the Python slogan. pyon so So I could never get behind Python in the early days. I just would do it all in Perl. So I did all my undergrad work in Perl right up through that that Lorax application I said that talked to the GIS ah tooling. So I was having a great time there. I got out. I worked for an open source company writing Perl software for a little while.
00:35:36
Speaker
um and I said at that point, I had really moved to into that space of being really excited about geospatial applications. So this is toward the end of or this is in undergrad and then shortly thereafter. So I was doing mostly Bash, Perl, and SQL for talking to databases.
00:35:52
Speaker
And then after that, so that's when I went to grad school. And so when I went into grad school at first, I was still of course, gung ho about my Pearl. And I had to do, I had to program again and like some C plus plus and a few other things like I had to do first a class work. And then I took an AI class, and which was rather fortuitous at the time. So we use the artificial intelligence, a modern approach book by, uh, Russell and Norvig, Russell and Norvig, the classic, EMA. And so that entire book is in Common Lisp. And so so I had to learn Common Lisp to do the exercises for class, right to just to learn all the algorithms that we were studying in class. And it turned out that my my instructor was actually a bit of a lisp-nick, but he was kind of keeping it under wraps. So I was like, all right, man. Now, I had i had bumped into into Lisp very briefly in my undergrad, but my professor at the time
00:36:49
Speaker
I could tell really didn't understand it and didn't much like it. So he did like one day about listening and then was like, you'll never need to look at this again. And then, oh my gosh so I see this in grad school and I'm like, okay, round two, let's see if we can figure this out. And I struggled with it for a little bit, but then I think like a lot of people, I had that aha moment. I think maybe when I was trying to wrap my mind around structural sharing in, and no you know, con cell chains, and I was like, oh, oh, explosion. You know, when when I got like the the macro moment, right? And I was like, oh my gosh, I have been, I've been doing this wrong the whole time. So yeah i I was totally in love with common list by the end of that class. So I just tore through.
00:37:32
Speaker
the the textbook there. I went to my professor's office. I borrowed a whole bunch of his Lisp books, some other ones by Norvig, paradigms of artificial intelligence, a modern approach. that That was another good one. It's in common Lisp. So I worked those exercises on my own outside of class. I went to the library. I checked out every book they had on Lisp.
00:37:52
Speaker
went through those things, just really building up my knowledge on it as best I could, looked into Scheme, tried to get a sense of that. And I started an Emacs list, of course, yeah Emacs user. So configure everything. it's it's ah It's a closure podcast. you know yeah It's going to come up. So I was like, all right. OK, OK. I know how it goes. ofby It's a big 10 community.
00:38:18
Speaker
So here I was doing doing my Emacs list, doing a little bit of scheme, doing a whole lot of common lists, and I'm trying to do my graduate research work. And I'm trying to write these environmental simulation algorithms that I'm coming up with, um these new network topology algorithms. And my advisor was working in Java, and he was building this whole new modeling platform, and I needed to write my simulation models to run on his platform. So I was expected to write them as Java modules, yeah as you know new new Java classes for him. Now I could write Java, but I didn't much care for the language. So I really wanted to do it in Lisp. So what I ended up doing instead, being an unruly grad student, is I would just prototype everything in common Lisp, get it to work exactly the way I want it to do. And then once I had demonstrated everything and the minimum viable product was working, I would then sit down and port it
00:39:07
Speaker
to Java painfully and then plug it into a system. Now this you know this was never fun because then I had to maintain two versions of the software. One was always lagging, was out of sync with the other. It was frustrating. And so I was looking for ways to try to automatically turn the common Lisp into Java. And so I played around with armed bear common Lisp. Did you guys ever see that thing, the ABCL? It's ah it's a common Lisp compiler that turns common Lisp into Java byte code. Not unlike what we're used to in Closure World, but this is in a pre-Closure version ah of of Earth, OK? So I was using armbear common-list. It kind of worked, but there were certain common-list features that wouldn't actually port correctly, yeah especially a lot of third-party libraries. just They just wouldn't wouldn't compile right. And so it was it was kind of a you know ah half-baked solution. kept I kept going at it, trying to figure out new stuff. there were some And then I found a couple of libraries online in some of the common-list sites. There was this one called JFly and another one called JFoil.
00:40:07
Speaker
And so they were these common list libraries that were supposed to allow you to kind of bridge across to Java. So you could sort of call Java methods from closure, or sorry, not closure, from common list, or call some of your common list functions from ah Java.
00:40:21
Speaker
They're written by this guy named Rich Hickey, yep who was a Common List programmer struggling with the java in the Java space as well. And I was like, okay, so I was like trying his libraries out. And I was trying to make it fit, trying to make it fit. And then all of a sudden, Rich drops the closure language. And I was like, what? What? I'm using his libraries right now in Common List. right So I was there like when it first dropped.
00:40:44
Speaker
And I was like, Oh, Oh, what, what is this? What is this? So suddenly I have a lisp that actually emits Java bytecode correctly and has perfect interop. I was like, Oh, it solved the problem. It solved my PhD problem. Right. Took all that porting work out of of the picture. So it was beautiful. It was, it was the solution I was looking for, for over a year.
00:41:07
Speaker
Uh, when it, when closure suddenly dropped. So of course I grabbed that thing immediately hot off the presses, uh, you know, version 1.0 and, uh, had to beg my advisor to let me work in it. And, uh, he was unconvinced for a bit, but I, I, I got him, I got him over the finish line and I just rewrote everything into closure.
00:41:28
Speaker
boom, and it fit in seamlessly with the Java modeling platform he had built. And so I was able to do the rest of my PhD work enclosure, which was awesome. Really saved the day. So that's how I ended up finding my way here ah into this community. And then... but you tell you Did you tell your a professor, look, it's just at the library. I actually took him out to lunch and sat with him and like gave him this whole pitch, you know, but we kept in there for like over an hour, just going at it.
00:41:57
Speaker
Let me de-complex your brain i know right with the word of our Lord and Savior, H.A.K.E. Yes. He of the glorious curls. That's right. That's right. Oh my gosh. So, anyway, i i after I graduated and having written a whole bunch of stuff enclosure at that point. I got out and i I came to work for the software company I work for now, which is Spatial Informatics Group. This is an environmental think tank based out of California.

Role at SIG and Software Development

00:42:28
Speaker
But the all the workers are remote. So most of us are in the US or US time zones, although we have people um all over the world. Actually, I i was
00:42:40
Speaker
Almost. I mean, I was thinking of applying for a job at SIG back in 2023, I think. Oh, just a year ago. Yeah, yeah. ah Because ah Valentin was working there, I think. i'm i'm not sure He does work there. but He does, yeah. He works with me closely. Yeah, yeah.
00:42:55
Speaker
So, uh, I was just ah talking to him asking, Hey, I see this job posting, but I don't have like zero GIS knowledge. it So, and he said, it should be okay. But I i felt a bit, you know, I can't handle my imposter syndrome. So fuck it. And um'm I'm not going to apply for this job. So I talked back. Well, you would have had a chat with me then, cause I'm the director of environmental modeling and software. and Oh, okay. Next time I'll keep, a keep an eye. I would have been interviewing you, Vijay, prepare myself. And then, uh, that's right.
00:43:23
Speaker
And then I'm just going to say, look, man, I tried to build a yacht in the Netherlands, you know. got put a windmill Yeah, exactly. It's got to be on brand, right? Throw the water away. But yeah, for sure. He's wearing clogs right now, by the way. I love it. I love it. I wear clogs and then, you know, i go around and then collect two lips and, uh, you know, that's fantastic. Clogs are actually quite popular here too.
00:43:45
Speaker
oh yeah for yeah yeah for the light critical yeah and totally yeah um So this is the so this is group that um you founded? No, I didn't found it. yeah um But I was the first software engineer at SIG. okay nice So i I came to work for them in 2012. That's when I first came on about 12 years ago. yeah ah So I was a contractor at the time. And it it was a very small company. And it was really focused on
00:44:17
Speaker
Well, environmental science and natural resource management, right? So SIG is not a software company, or at least it wasn't a software company. I think it's a lot more a software company now, a decade later. But at the time, um so Spatial Informatics Group sells actionable decision support information to natural resource managers.
00:44:35
Speaker
right So that that's our deal. So if you manage a chunk of ah natural resources, a bunch of land, water, et cetera, air resources, your carbon board or something, then you can hire SIG and we have a bunch of different ah domain scientists ah within our our company that specialize in everything from forest ecology, carbon sequestration for like carbon credit trading, for example, wildland fire modeling, hydrologic modeling, ah remote sensing technology,
00:45:06
Speaker
whole broad array of things. right and so will We take in these requests for proposals, these RFPs that come in from the agencies that are managing resources. They're looking for someone to so to do some kind of scientific R and&D for them, some what-if scenarios ah to answer some management questions for them. We take them on. Our science teams will get to work on them applying whatever specific you know domain techniques make the most sense for that problem, whatever software makes sense, statistics, et cetera, et cetera, to try to get the answer packaged up. And then you know what we're delivering to our clients are
00:45:45
Speaker
reports, graphs, charts, lots of numbers, tons of maps, because we are spatial informatics group, yeah all that kind of stuff. And and then some kind of confidence bounds on what we think in these different what-if scenarios, basically. That's sort of generalizing, but that's a lot of what we do. And so when I came on ah to join the company, you know my role was to write scientific software that in this environmental domain that would hopefully allow us to produce more reproducible results. So we're not like using this spreadsheet program with a little bit of R tied together to this like MySQL database or whatever, or um MS Access database or something like that to kind of like point and click your way through the analysis. So you can try to streamline, make these more reproducible, better provenance tracking, or faster analyses, you know, write a better
00:46:33
Speaker
ah model that calculates the same results more quickly than the off the shelf things or calculates new metrics that we don't have access to normally, et cetera, et cetera. So that was the idea. And then I would deliver these to the science teams. They would use those things to provide the same kinds of results.
00:46:48
Speaker
But that pretty quickly evolved into then writing public facing scientific software, much of which is web applications ah that that will write that are either citizen science data collection applications or ah websites like Pyrecast, for example, that show off the results of these simulation models that we're running on our compute clusters ah to to the world. So um so we we still do a lot of a mix of that. So we build everything from microservices to web apps and everything in between.
00:47:18
Speaker
over at SIG in this environmental space now. But when I first came on, I was the only computer scientist. Everybody in the company had a graduate degree in some environmental field. I was the guy with the PhD in CS.
00:47:30
Speaker
yeah And, uh, and I was ready to write it all in closure and I did. Right. So there's no, there's no convincing needed to anyone because it was just, yeah writing complete yourself yeah yeah yeah, pretty much, pretty much. I mean, I had to convince the managing principle that, uh, it would be, it would be a good idea to bet on closure. But, uh, you know, I, I pitched him on it and I think we've had a good run so far. So yeah, we, we built a lot of, of cool software over the years, uh, this way. And for a long time, it was just me doing.
00:47:58
Speaker
doing the software work with the occasional contractor popping in. yeah ah And then it was a little bit before the pandemic, maybe 2018 ish or so that we actually started to hire more software developers.
00:48:09
Speaker
And so now we built that up and now we have a team of about 20 people of just on the software team. And then of course the rest of the company is all the yeah scientists and the business yeah people and so on and so forth. But ah yeah, pretty big growth in the last five or six years, I would say for me to to about 20. And yeah, I mean, my coworker is great to work with. It's exciting to see all the great ways that we get to apply closure along this whole spectrum yeah of of different spaces, command line tools, microservices, web apps, desktop utilities, all all all kinds of stuff that we get to build. um So yeah, have a lot of fun with that. That's, that's I guess, the technology journey to here.
00:48:48
Speaker
Yeah, yeah. So so right now, that the pretty much every project that you have is by default closure. and Yes. Oh, OK. Yeah. We build everything in closure that we can. yeah We cannot necessarily build absolutely everything in closure. There are certain yeah APIs we interface with that just aren't closure. For example, we use Google Earth Engine a fair amount, and that only has a JavaScript and a Python API.
00:49:13
Speaker
But ah we can bridge across to that in a few different ways. yeah ah In particular, we we leverage libpythonclj. Yep. Right. So that works really nicely in our web apps to let us call out ah to these Python functions that will speak to this remote API from our our closure web apps. and So that's been pretty successful. There are some wrinkles, some limitations in certain places. You got to be careful what JVM version you use because it's only implemented for certain, the like the memory management routine in different JVMs varies. And so the author of lib Python CLJ points out that they don't implement it for every single one because
00:49:49
Speaker
the rolling, the the release model is increased sped up to every six months of TVM, right? And so they just can't keep up with it. Exactly. And now it's every six months. So they only support like the LTS releases basically. Exactly. Now there are a few applications that we've inherited from outside organizations and most of those have come in as Python apps. Some of them we have ported over to Closure.
00:50:15
Speaker
just to make the maintenance easier. And so we can share code among our different web apps more easily. yeah Some of them we have not, we've kept them in Python, but that's a minority. I think there's really just kind of one application right now, um one big application that's a Python app. So it has kind of its own stack that's independent, yeah but that wasn't an inherent application. We don't tend to build anything from scratch, that's not closure. If we can help it, if we can help it, technologically speaking. And do you do you have like, I mean, I guess because you are doing most of the work at the beginning, do you have like a preference for a particular set of like, you know, underlying kind of libraries and stacks and like, are you using like component systems, all these kinds of things? I use a lot of spec. That's true. like Um, well, um,
00:51:06
Speaker
So you guys got the backstory. I'm the guy who lives who lives in the woods and, you know, it drags, like cuts the trees down with crosscut saws and drags them out of my head. So you don't need a framework. You just need libraries to think. Right. Right. lot a live that That's our thing. Right. So you might guess that I have a preference for doing it myself. Right. Yeah. If possible. So we, you know, for better or for worse, we've done a lot of building it ourselves at SIG. We use, we definitely use some libraries, but ah I would say Broadly speaking, because I've been here since like Closure 1.0 in like a pre-Lanagan world and so on and so forth, yeah yeah yeah i'm ah I'm really excited about seeing how much I can get done with as little as possible. and Also, as a computer scientist, I'm interested in how algorithms work. so
00:51:55
Speaker
I want to know how that how to implement that particular thing and whatnot so for example when we had to build our micro services. Tooling in house instead of just sort of immediately saying okay i'm going to use like. I'm gonna go use the lambda or something like that i said okay i'm gonna sit down and i'm gonna write a new bespoke application layer protocol that's that's gonna be a sync communication protocol between. different ah clients and servers of these microservices. I'm going to write that. So design the protocol, write the thing, hook in the TLS, you know set up the certificate, and exchange systems, and so on and so forth. And so I built something for that and used that in-house. And then built tooling on top of that to coordinate among multiple microservices. So you can kind of evaluate
00:52:40
Speaker
um ah a set of related microservices like a call tree. So there's a dependency network between microservices where you can pass the outputs of some into the inputs of others and so on. So we just kind of built it up piece by piece by piece. Now, is this necessarily the smartest business decision?
00:52:56
Speaker
um I don't know. Yes. Going on. yes like Let's go with that. Let's go with that. Isn't the sort of, isn't the sort of, what what do they call this guy? The small talk guy, Alan Kay. Doesn't he always say, basically, if you can build your own tools, it's the best way to do it. You know, build your own tools because you have more control, you get what you want and, you know, in the end, june ah you know, it will just serve your needs better and it will be lower cost to maintain fundamentally your supply chain fuck ups.
00:53:28
Speaker
and blah blah blah you know there's There's definitely a cost of acquisition, even if it's all free. you know That's true. Um, on the flip side, if you build it yourself, you also have to maintain it yourself. of course And you have to fight off bit rot yourself, right? yeah And you have to extend it every time there's some new feature that you didn't bake into the original minimal concept and now you need it. So sometimes there are growing pains but other people have what do you think as well. you know Then you have to deal with their version of what their update is and what their thoughts are. So.
00:53:59
Speaker
But would you think Closure lends it to build stable programs that are less eroded by Bitrot compared to the other languages? Absolutely, absolutely. There's a massive advantage to using Closure, right?
00:54:17
Speaker
Have you guys seen that graph before that shows the ah like the adoption of new functions in in the source code of Closure? right I mean, it's strictly a creative, almost entirely, right so which is which is amazing. It's a huge fight against Bitrot. We know we can take programs that were written for Closure 1.0, and you can run them today on Closure 1.12 RC1. It's going to work, yeah and that's amazing that they have such a stable platform to work from. Moreover,
00:54:47
Speaker
Not only do we have a super stable platform, but we have e tremendous a number of um functions, libraries, methods, everything to work from. right ah like When Clojure came out on day one, I thought to myself, good grief. This is a brand new language and it already has more libraries than practically another language yeah because Java had the most just about. yeah And now it has more than Java. yeah right Just one more than Java, closure.core, and you got it. yes right so It's a plus one situation. so yeah So there's a ton of stuff to work with as it keeps keeps on growing.
00:55:25
Speaker
um And I don't have to worry about any cross platform woes, for the most part, when I'm working in this space, which has been pretty exciting, for example, when writing ah software for US government computers. um So we have a lot of government clients working in this space. And those computers,
00:55:40
Speaker
ah are subject to a lot of scrutiny and a lot of control by the the IT t staff and at the um but at at government centers. right So the laptops are issued to the the staff. They have specific operating systems on them, specific software. you can't You have administrator access is not allowed. You can't put anything else on there that you want to install on there unless it goes through their whitelisted system and so on. yeah know I understand the the rationale behind that.
00:56:10
Speaker
um But it does set you up for really narrowing the kinds of technology you can use. like You're not going to just swing in and drop an electron app on there. So yeah yeah yeah just give up. that Don't do that. That's not the approach. so But when we were given the task of rewriting ah some rather old Windows-only desktop software that had been written in C++ plus plus by a US government lab a few decades ago. So we got this task on our side and we said, hey, check this out. We're going to rewrite it in Clojure.
00:56:42
Speaker
which of course is gonna make them go, what, what? yeah we We said, shh, don't worry, don't worry, don't worry. Java, Java, we're gonna give you a jar file. It's gonna be great, right? Like the magic of the Uber jar just sort of erodes a lot of that friction for adoption, even on i really tight lockdown computers, right? Because everybody's got Java.
00:57:04
Speaker
That's 30 plus year old technology. The US government is is good with that. They're golden with Java. So all we had to do is say, we're going to rewrite it in Java for you. And they were like, oh, great. ah Yeah, that'll work. That'll totally work.
00:57:16
Speaker
And now I can, and I say, and and here's our pitch for not doing C plus plus. Okay. We can now move your windows only applications to run on windows and Mac and Linux and BSD and so on and so forth. Right. Look at that. And and I know maybe a lot of you aren't using Linux, but you got plenty of Mac users, right? And so you guys, you want to use it too. You can't use that software. You got to use it in ah in a little VM. We can free you from that. So they were sold. And then we came over in in here and we wrote this, this desktop application. We wrote it as a web app actually, um, that would run offline.
00:57:46
Speaker
yeah right ah using Closure and Closure Script just and using data log on the back end and just hook that all together, package it in ah in an Uber jar. And that's it. It's a single file installation. We're able to get that. you know We can sign those and we can deliver it ah into these restricted ah deployment environments. So it's really exciting. So yeah, I'm stoked about working with Closure. I think it's been a great business decision for us.
00:58:14
Speaker
stable platform, large library set to choose from. You can use it to write everything from command line programs quickly with tools like Babashka, right? yeah yeah all the way out to your really nice ah single language ah web apps on the other end of the spectrum, where you can easily move code from the front end of the of the application to the backend and back and back and forth based on scaling needs. That's always great yeah using those CLJC files and so on. Right anywhere. Precisely. It actually does work these days. you it It does, surprisingly. And hey, I mean, you even
00:58:51
Speaker
Like despite what you might think, it actually works pretty darn well for writing high performance simulation software. Well, we spoke to Alexander, you know, the closure goes fast guys many few years from now and, um, still use some of his tools and yeah, you can, you can definitely look at the performance of closure and you can get pretty close to, you know, and job close to Java and Java can get pretty close to C. So, you know, eventually you can get pretty close to, you know, native performance.
00:59:22
Speaker
Absolutely. We've spent a lot of time doing performance tuning on simulation models over here, enclosure. And yeah, you can go a long way. if you If you really work through those algorithms and you're really careful with your primitive math and your arrays and stuff, you can make that stuff just zoom right along.
00:59:39
Speaker
so Gary, I mean, you know, yeah and it was like I your talk about Gemini on space age on the closure, ah London closure into, which was really excellent to know. And it was a, it was a ah marathon session, nearly three hours. And I was saying, Oh yeah, I'm pretty sure you'll be able to talk for, and we've only talked for over an hour and we haven't even got to that yet. So I think we're doing all right. You know,
01:00:04
Speaker
yeah totally Your tech is totally holding up as well, by the way, out from the boondocks. Yeah, it's really cool. Excellent. so So I think we should we should move into this like this brave new world of spare church and Gemini, because I feel like this, for me, I was like, wow, this is like super exciting.

Exploring the Gemini Protocol

01:00:24
Speaker
um and ah Taking an old technology and making it fresh again feels like closure as as well. you know Took a lisp and made it fresh, you know?
01:00:31
Speaker
Gemini in space, it feels a bit like that kind of project and it feels like, oh my God, it was just sitting there, this gopher. And, you know, so maybe it's just, I'd let you, you know, like, cause you know, yeah, we can talk, you can talk to him and let you run with that and give us a little bit of a kind of.
01:00:47
Speaker
brief um Brief background on what Gemini is. I think you're excited about it too. so which You've actually doing things with it, so it's even more real for you. you know All right, let's do it, guys. yeah All right, we'll we'll pivot to the subject of today's talk after. One hour intro, ah no worries. This is this is like Marvel Cinematic Universe, right? And it has like 10 episodes need to set up to there ah to the final end game. I guarantee you that any of my co-workers who listen to this are going to be like, oh yeah, that's just scary. yeah Expect it. It's going to take them an hour to get to the point. Here we go. like I think it's it's it's it's more on us. We're also very curious about a lot of other things. so yeah And also, it's just yeah it's a fascinating story. So yeah, anyway, yeah. yeah
01:01:34
Speaker
All right. Let's talk about Gemini then guys. We'll pivot. yeah Okay. So I thought actually it might be helpful, um, for me to keep myself a little bit more concise by actually jumping over to the FAQ, uh, for, for Gemini protocol. So the current website for Gemini for anybody who's out there following along is, uh, Gemini protocol.net. Um, so G E M I N I P R O T O C O L.
01:02:02
Speaker
dot any tea That's it. And so you can go there and you can learn about the history of the project, the relevant folks involved. There's a really long f FAQ that I think does a good job of answering a lot of questions about the project. So and there's lists of software that you can use in the client and server into things, space ages on there, all that kind of good stuff. So it's it's a good place to to start your journey. But let's kind of dive into it. So there's this question, what is Gemini?
01:02:32
Speaker
And so they address this in section 1.1 in the FAQ. And they actually they split it up into two answers, the dense jargony answer for Geeks in a Hurry and the gentler answer for everybody else. um I figure we have a bunch of Geeks on this podcast. So let's just do the the dense jargony answer for Geeks in a Hurry, right? Yeah, yeah. All right. So Gemini is an application level client server internet protocol for the distribution of arbitrary files with some special consideration for serving a lightweight hypertext format, which facilitates linking between hosted files.
01:03:02
Speaker
So both the protocol and the format are deliberately limited in capabilities in scope, and the protocol is technically conservative, being built on mature, standardized, familiar, off-the-shelf technologies like URIs, MIME media types, and TLS. Simplicity and finite scope are very intentional design decisions, motivated by placing a high priority on user autonomy, user privacy, ease of implementation in diverse computing environments, and defensive non-extensibility. In short, it is something like a radically stripped down web stack.
01:03:32
Speaker
So that's that's the dense, jargony answer for geeks in a hurry, as it were. So let's be a little more informal then. All right. So Gemini is a lot like browsing the web with links if every website worked completely well in links.
01:03:52
Speaker
If you guys have ever played around with it with a ah text web browser before, yeah it's a lot like that experience, um like ah early early web days in a pre-JavaScript world or even a pre-CSS world. right That's the kind of thing that you're looking at in Gemini space. so ah Ray mentioned Gopher, which is yeah one of the big inspirations for Gemini. um and That's actually because the creator of Gemini is a hacker who goes by the the handle Soderpunk. And so he comes from the Gopher community, one of the active members there. And so in back in 2019, June of 2019 is when the project launched, so just over five years ago. And so Soderpunk was chatting ah with some of the other residents of the Phlogosphere, as it were, the Gopher log space, about modernizing Gopher and what some of that might look like.
01:04:52
Speaker
and if there's any value in doing that. And you know he concluded that it would be a worthwhile project. And so he he got to work drafting out this protocol and then ah put it out there and then got feedback from folks within the Gopher community initially. So it's called Gemini, ah partly because, well, probably in large part, because the solder punk clearly ah really likes space themes. And so he was using names for ah for NASA missions. ah So the National Aeronautics and Space Administration in the United States, our national space program. So the first ah what' say ah first launch of a capsule into space to orbit the Earth was called the Mercury, or Project Mercury. i The second big one was Project Gemini. The planet goes up. And so ah here, instead of just going up one orbit around and back down again, the idea is you send some people up. They hung out out there for a little bit orbiting the Earth.
01:05:51
Speaker
doing some research and then came back down. And then the later one was Project Apollo that was really well known where yeah yeah the US and people all the way to the moon. Exactly, right? And so it's kind of like a Goldilocks type story here. you know like the not too warm, not too cold, just right in the middle. So it was like, so what SutterPunk was trying to shoot for was he was saying, let's use Mercury, Project Mercury is is going to be his his analogy or his metaphor for the Gopher protocol, but which is a pre-web, for folks who don't know, Gopher was a pre-web protocol for sharing a ah hyperlinked network of documents. right It was created, I think, at the University of Minnesota. If I remember right, a few years before Tim Berners-Lee dropped
01:06:34
Speaker
ah the HTTP protocol on us back in 94. I think is when that came out, right? And so Gopher was originally envisioned as kind of like a step above FTP. So instead of just connecting to a machine where you didn't have just directory browse your way along and hopefully somebody drops a README file in the occasional directory. So you can read the README or download the README.
01:06:55
Speaker
Read the read me and then see what's supposed to be in this folder and then go back to the FTP ah client and keep working your way down until you find the file that you need. I'm old enough to have used that for several years, by the way. professional I still use FTP. no go for um Go for it. Oh, right on. Right on. That's awesome.
01:07:13
Speaker
um Yes, so Gopher was meant to sort of put this a little bit ah like a slightly higher level, right? So now we can actually see those readme's in the client basically. And there will be links inside that document, your Gopher map file, that can then jump around to the files in this directory ah or or or other directories themselves have their own little sort of Gopher map readme type files that show you what's going on in them all the way down to now you're sort of navigating this file tree all the way down to your leaves and then your leaves are going to be like text files or some other media file that you could could download and read, right? um So Gopher still exists. Still a perfectly functioning protocol. It's just not widely used. but we We all know that HTTP and the World Wide Web ah just beat Gopher out in that space. It was a lot more featureful and really you know took off. And now it's sort of subsumed practically every other application layer protocol, yeah right which is what I spent quite a bit of time talking about.
01:08:11
Speaker
in that Cycloge presentation back in June. So Sutterpunk and these folks over in the Gopher community were saying, you know, we love Gopher and all, but it it needs ah it needs a refresh. Like like you said, Ray, with LISP meeting a refresh into Closure. So in particular, some things Gopher's missing that Jim and I has are encryption. Gopher is unencrypted, just like HTTP. And now HTTPS is much more the norm. but we We expect encryption in our protocols.
01:08:41
Speaker
So let's get an encrypted version of Gopher. So Gemini is always encrypted. There's no unencrypted version of Gemini, right? There's a lot of concerns about privacy tracking and so on. So it carries forward ah that ethos in its design. ah And also, Gopher Maps are not an awesome format to write. So ah we know a lot about markup languages now. So there was a goal of trying to make a very simple markup language ah called GemText, which is what is the native ah hypertext format that's used in Gemini space, right?
01:09:14
Speaker
So we have this kind of new markup language. We have this encrypted protocol. We have a focus on privacy, simplicity in the headers, and as well as some more important modernization features like supporting UTF-8 so you can write your Gemini page using any language you want. Emojis. Exactly. You want to use emojis. You want to use Kanji. you know Or you want to use Tyscript or whatever. you know arabic you can you do You can do these things now. No problem. ah So that really opens the space for better international adoption and it not just being a ah US s thing with just ASCII. yeah ah So that's great. and There's a ah number of other features and they better support for MIME types. That's really missing in Gopher um and and on and on. But basically, you can think of it like because it's Project Gemini, this idea again was Project Mercury is Gopher, the little, the very small minimum viable product. Project Apollo are going on the moon. That's the web.
01:10:09
Speaker
It's got everything, absolutely every bell and whistle. And Gemini was the one in the middle that had more than then Gopher, less than the web, like more than Mercury, less than Apollo. So that's that's the ah the reason for the name of the Gemini protocol. So where where should I go from here? All right, so he built this thing in 2019. He created the protocol. The first um server for it was written by a ah another hacker who goes by Sean Conner.
01:10:39
Speaker
And so he kicked this thing out and SutterPump brought a client exactly so ah soter punk wrote a client ah to work with it. And boom, shakalaka, we had our first client server pair implementing Gemini back in in mid 2019. And from there, the community started to grow. It had a mailing list. It was super active for a number of years. I was on that mailing list. A lot of people were contributing ideas to the protocol. Could we extend it this way? What about this thing? What about this thing? And to their credit, I think the the project ah
01:11:10
Speaker
managers were extraordinarily conservative with what they did and did not accept. Started to learn that pretty quick on the mailing list. There's always going to be some new person that will show up and be like, but it needs this. And you get a big old no. And this is why. The IMH tag. Yes. No, Marc Andreessen. It's not happening. it It became like such a meme that at some point somebody put up a Gemini site called like, when will Gemini support Oh, okay. It's like, that was the Gemini colon double slash, when will Gemini support? You could go there and it would be like, whatever. When will Gemini support anything? ah Whatever your thing is. and it would And it just said like, never. That was the paid body. It was great. It's very simple. um But they they did, they were listening to the community though. So the main things that would really have an impact on the protocol was anytime somebody could point to another, um like to an RFC or something, some, some like actual,
01:12:02
Speaker
standing technical document that says like, you know what, you guys missed this, that, or the other aspect of MIME types or URIs or TLS or whatever, something that's supposed to be supported by the protocol. And they'd say, oh, you're right. We didn't get that right. Let's make ourselves match these canonical technical documents. Those are the things that tended to get accepted. I want to have this new whiz bang feature. That was a no.
01:12:25
Speaker
um And so this conversation you know went on for a few years and the community built built up around it. And we we ah saw lots of spinoff protocols that came out of it like Titan, Spartan, and so on. We saw um the creation of aggregators and search engines and a blogging protocol. ah They're called gem logs in Gemini space and so on. So pretty exciting stuff. we have oh Yeah, people finding out ways to show show off mathematics in Gemini space, doing artwork, doing like antsy art and stuff like that. ah Different ways to do tables and figures and so on. So people figuring things out. I worked out a way to do forms ah in a protocol that lacks forms and and put examples together of how to do that kind of thing and and so on. I was having a lot of fun with what the server side programming capabilities are. So that was, I got and into things during 2020, during the beginning of the
01:13:22
Speaker
pandemic. Here I was being like, well, not going anywhere on the weekends. with I guess I'm going to do something really geeky. So yeah, I would hang out on these mailing lists. and And I thought pretty early on, you know, this thing is incredibly neat. This is this is really great because it just it's so easily solves so many of the concerns around just constant advertising user tracking, privacy concerns, surveillance capitalism that are just ubiquitous in the modern web. It takes it all away ah in a way that it can't be re-injected into it. So it's really a largely marketing-free space. It's not a target for advertisers, which is, I think, very much what made the World Wide Web into what it is today, what moved it so rapidly from being a network of hyperlink documents to being
01:14:13
Speaker
you know, the best place to put your business's website up, right? To show off anything and everything. And now these, these, you know, big gated community honeypots that we have in the social media sites. yeah ah So that's kind of what it's grown into. But this, this just feels like the old Wild West of the web. People just blogging and sharing hobbyist sites and, and little games and all kinds of fun stuff, which which is, I think a lot of fun to play with.
01:14:38
Speaker
Yeah, I'm just going to say that, gary i mean maybe it's worth just talking about like the, again, I think the, um maybe it's the wrong term, but I'm going to use it anyway. It's just like the bloat wire of the web. You say it's like this Apollo mission, everything, but I mean, you know, the problem now is that it's like, it feels.
01:14:55
Speaker
But according to all sources, you know it's impossible to build a web browser because all web browsers are either Firefox and derivatives or Chrome. That's it. There's only essentially two, maybe it's Opera, but that's all for WebKit now. you know So essentially everything is Pepsi. you know yeah Yeah, it's like Gecko and WebKit. That's what you're doing pretty much. Yeah. I spoke about that on that Cyclos podcast yeah or not podcast, um video conference as well. yeah You're exactly right there, Ray. so So pivoting to the technical elements then with respect to that. Okay, so what Gemini really brings to the table for folks who like to write software or like to use software that doesn't spy on them is that Gemini is, as we said, a defensively non-extensible protocol. like That's what they say in the FAQ. It's incredibly simple.
01:15:48
Speaker
designed with that as a goal in mind so that a single developer, should they be so motivated, can write their own client or server that 100% supports all features of the protocol in a relatively small amount of time, depending on how much free time you have. right i I wrote ah Space Age, which is the first and still only Closure Gemini server. I wrote that in, I think, a couple of weekends. Something like that, right? By myself. Nothing to it. It's an easy protocol. We have people writing it in Go and Rust and, you know, Python and Scheme and whatever. There's tons and tons of servers that were quickly cooked up by developers because it's so easy to do. And it's not a partial implementation. It's a full implementation of every feature. And ah and same thing, there are a plethora
01:16:36
Speaker
of Gemini browsers out there with all kinds of different interfaces and features, because again, it's not hard to implement the entire feature set. I think it's a little more work to write a client than a server. ah That would be my sense of things, just because there's more UI elements you have to deal with. But even still, I mean, it's definitely the kind of thing that you could do inside a month, I would think, of weekends and whatnot if if you were were getting after it. so So this really democratizes this protocol, right? Because it you can know exactly how it works. And
01:17:07
Speaker
If you

Gemini vs Modern Web

01:17:08
Speaker
don't like a way a specific ah server or client behaves, you don't have to try to find the next plugin or the next ad blocker or whatever. Who cares? Just write your own if you really want to, or get one from someone you trust. There are tons of them out there and that they're all freely available. that's That's beautiful. Whereas on the flip side, as you said, Ray, with the web, the protocol stack is completely unreachable by a developer or even a small team of developers. It's just not happening in your lifetime.
01:17:37
Speaker
You're never going to write a web browser that can complete the implement all of the necessary protocols. Right. And I, I talked about this before, but I mean, you already know what's going on. Yeah. You have to implement HTTP. Sure.
01:17:51
Speaker
But you've got to do HTTP 1.0, 1.1, 2.0, and so on. These are all different. um Each one is a different set of requests and response headers, which are extensive and most of which are optional. So you've got to be able to handle all the all the optional features that are in there. yeah right Every one of these things, you've got to handle your cross-origin resource sharing, course requests. You've got to handle um keep alive requests for keeping the same connection open, for passing multiple documents up and down between the client servers. You gotta handle ah content lengths, cache headers, I mean, refers, and obviously cookies and super cookies. Expiration dates, all of these things. What about a rendering engine, a JavaScript engine? Exactly, exactly. That was just that was just the getting the bytes from here to there part, right? yeah And then once they get there, you gotta render. right and now And now you're just dead in the water. yeah right and That's where now you have to be able to render all this HTML, but is it HTML?
01:18:49
Speaker
like 401 is HTML5, HTML strict, HTML transitional, any of the other versions like yeah before that or any of the newer things, CSS version one, two, three, and so on. All the JavaScript like ECMA script versions up through six and then plus are, you know,
01:19:07
Speaker
but even Even if you just pick the latest versions of all of those protocols and said, I'm just going clean room with the list. so like I'm not going to spot anything in the background. Huge. It would still be impossible. you know It would take forever because you also have to handle graceful degradation. ye like What do you do when they got the tag wrong or they miss the angle bracket in this place? Different web browsers treat bad code in different ways, but they almost always find some way to render it. um right so Which means you have to do ah all this tons of defensive ah code that's going to like analyze and try to bounce back off of errors in rendering and find a new solution to that. How many of those are there that are are possible out there? Because really, if you take a step back and look at it, a web browser is not
01:19:57
Speaker
ah ah a client for rendering hyperlink documents. That's not what it is. It's a VM. yeah right right That's what else all web browser is. It's a VM that runs source code that you download whenever you click a link.
01:20:10
Speaker
ye So every time we, quote unquote, visit a website, we're just downloading the software for that site. We're pulling down all its HTML, its CSS, its fonts, its logos, all reams of JavaScript that's pulling down WebAssembly, whatever else is there, right? You're pulling all the source code down to your computer into a temporary folder. So you're doing yeah an install yeah onto your machine. and You're then running that code in the sandboxed VM.
01:20:33
Speaker
Right on your machine that has to render and run all that code that's all that's what it is it's a platform for delivering software to your computer at the click of a link and then running it. and But how do you how do you control? Because JavaScript was not part of the you know HTTP or you know and when the application layer protocol was designed. These are all tacked on later for, can we do this thing? Can we do this thing? Can we do this thing? That's the thing that slowly added up to the to the stuff. and How do you control it at the protocol level? Because protocol is purely innocuous. It doesn't know what is flowing through the and pipes, basically. You're talking about Gemini again.
01:21:12
Speaker
yeah yeah so yeah Yeah, okay, great question. All right, so that's that's a really good point that you have there, Vijay. So you're right. in the In the web, this whole web stack consists of your HTTP protocol for transferring bytes around, yeah SSL TLS for encrypting those bytes in transit, right? And then the whole rendering stack that you have to deal with HTML, CSS, JavaScript, basically, et cetera, et cetera, et cetera, in your browser. And then all the other fun stuff like WebSockets and whatnot that we're doing, right? WebWorkers and so on. OK, so you got all those. And you're right, they kind of add on. They they accrete piece by piece by piece. over in and So much of this is possible, I think,
01:21:55
Speaker
And a lot of this is enabled at the HTTP level because of the extensibility of the request and response headers that are available to support a lot of the stuff that you're going to pass around. um You need more.
01:22:08
Speaker
uh, features to be supported on the server side that you're talking to like these keep alive requests, for example, or web sockets that have to be opened and held open yeah yeah to keep passing data up and down. So and that's, that's just not, uh, those things are not in Gemini at all, because one of the defensive features of the protocol is that the request and response headers are one line each.
01:22:33
Speaker
Oh, okay. And they're non-extensible. An entire Gemini request is the yeah URL. That's it. There's nothing else. it is If you say Gemini colon double slash Gemini protocol dot net, that is the request.
01:22:48
Speaker
An HTTP request is not that. An HTTP request is like, what? It's like, get space, the thing, space, HTTP slash 1.1, next line, host colon, the host, next line, 1,000 headers, double blank lines with the backslash R, backslash M. This is me, this is my dog, and this is where I live, and all the shit that you need to send to those dogs. Everything. Fingerprint on my browser. Exactly. Everything you could possibly want to know about. My Facebook super cookies. Yes. So you can phone home, all that.
01:23:17
Speaker
The only thing your browser your client sends to a gemini server is the yeah url that you're asking for which means the only information that the the servers know about you are your ip address the resource you requested and when. They have three data points yeah of information and if you use a.
01:23:33
Speaker
VPN or Tor, your IP information is not useful ah for for our fingerprinting you. So at that point, it's an anonymous protocol. All they know is somebody somebody is asking for this yeah URL that I know I serve. That's not new information at this time. yeah Great. I mean, that's so useful. You can certainly use that to track like how how many unique IP addresses are visiting my site.
01:23:57
Speaker
in a certain amount of time. You could do some stats like that that might be useful for you to know for scaling your resources, which is great, but it's not good for user fingerprinting. And that was intentional. um um the Also, as I said, every Gemini request is encrypted, you know point to point via TLS or SSL or TLS. So so nobody's going to see what you're asking for in transit either. So the the only information you're sharing, as I said, are those things. My IP address, the resource I asked for, and the time that I asked for it.
01:24:25
Speaker
the the server when it responds back to you, back to your client, again, it's an encrypted response. And the only thing it's sending back is a one-line header. And then the body, if there is one, the bytes of the body. The one-line header, ah when there is a body coming back, is actually just the MIME type.
01:24:42
Speaker
like it's it it's it literally Like every Gemini header is a two-digit status code. So they do two digits instead of three, like HTTP. So it's a two-digit status code, a space, and then the MIME type. That's it. So it's like 20 instead of 200. So 20, space, MIME type, and then the body. the bytes yeah That's it. so So your client now knows what am I supposed to render.
01:25:07
Speaker
um It's a misconception. Some people think you can only serve gem text in a Gemini space, and that's not true. You can send HTML around if you wanted to. You can send around um yeah you can center on images,
01:25:18
Speaker
ah video, all kinds of stuff, PDFs, markdown, whatever. It's for arbitrary files that you would like to share around. um But your client the server is going to say to your client,
01:25:29
Speaker
This is the mime time I'm about to give you, and here's some bytes. And then it'll signal when it's done sending bytes with a TLS close, or a TLS notify, sorry, yeah signal. And then your client breaks the connection and then renders the document. Either renders it or saves it to a file, usually depending on your client.
01:25:46
Speaker
So your client it could your client could support more stuff if it wanted to and you it could support CSS. and It could, but it would but not really. And and here's here's why. um So on top of the response headers being limited to just that, absolutely bare minimum information. The the other piece the of the protocol that's laid out in the spec is that um unlike the web,
01:26:12
Speaker
Gemini clients are forbidden from performing cascaded downloads, right? So on the web, when you click a link, you are- One link can bring another one, another one. and Which another, another, right? You're you're you're basically just opening up the the floodgates to a whole tree of links, yeah right? So that's that's all we know. I click a link and it's going to download a bunch of stuff to my computer and each of the things that keeps downloading can just keep causing my browser to keep making more and more and more and more requests. You get that HTML page and now you got to grab the CSS and the fonts and the logos and the and the JavaScript, of course, and so on. And then all that's going to build up and build up and build up until I have this whole application on my computer in this temporary folder. And then it runs in my in my web browser VM thing, right? That's really a black box that is only understood maybe by the folks at these you know giant corporate programming warehouses. yeah And that's that's pretty much the story. So in Gemini space, when you click a link, every link has to resolve to exactly one resource.
01:27:11
Speaker
and clients are not to cascade downloads. so right So when you pull something down like a gem text page, even if there are links to it in it that go to other pages, those links are not going to be downloaded on the fly. they're They're links to another document. If it's a link to an image, it's still not going to pull it down. You have to click the link to trigger the next request. right So that's that's ah kind of baked in. And so as a result,
01:27:39
Speaker
CSS makes no sense, ah nor does JavaScript, because those are ancillary. You'd have to first get the the HTML page and have that render. And then you have to click a link to get the CSS and click a link to get the JavaScript. Those don't even render in the body of HTML normally. ah but How do you enforce that on the client? or yeah yeah exactly How do we enforce it? Well, feels like it's ah you're a programmer, so if you really want to do this, you can. Yeah, exactly. You can. So on a system. you You can potentially introduce your own format and then
01:28:13
Speaker
that You can build your own code and code browser that's going to do this. If you want to, it's a democratic protocol. So if you want to write a client that can render HTML and it'll do so by first making a request to get an HTML link. And if it sees a mime type of HTML, it will then automatically perform cascaded downloads, which the protocol tells you do not do this, but it does it anyway. Yeah.
01:28:33
Speaker
Then, sure, the Gemini protocol can send you CSS files and can send you JavaScript files, and then you could start rendering them. yeah Of course, you just made that decision to start writing one of these behemoth things that are going to, which you can't do, so now you're going to just go grab WebKit or Gecko, and you're going to write a skin for it, and that's going to be your new browser, right? Okay, like go go nuts. You made a web browser that supports Gemini. You can do that. yeah um So someone could choose to go down that road, but there it's kind of defeating the purpose of the protocol in the first place. yeah right ah So what Gemini offers to developers, I think, which is really exciting, yeah is that you can write your own client and server. It's not hard to do. Or you can use someone else's client server, and you can look at source code and figure it out pretty quickly, because these are not big, complicated applications at all.
01:29:25
Speaker
So you can trust the the tooling that you're using or build it yourself if you don't trust it or you want a slightly different feature. So that's really nice that it's in your hands. Second, it's a private protocol. Like I already said, every request and response is encrypted with TLS oh slash SSL. um And ah the only information being shipped around is your IP address, the URL you're asking for and the time you asked for it.
01:29:51
Speaker
right? and And we know that we can obscure or we can obfuscate our um IP addresses if we care enough to. yeah So that's fine. So it gives us a ah nice little there of not having to worry about too many privacy breaches. And then you have ah You can perform a authentication. i guess is yeah yeah you just can say yeah yeah yeah right And then you can authenticate if you want to access private documents, just like you would log into a site with some credentials. You can authenticate to ah to a Gemini capsule and you can access ah private documents that are behind some kind of wall, some kind of authentication wall. right um The way you do that in Gemini world ah is I think really interesting and unique with this protocol.
01:30:35
Speaker
And I spent a lot of time talking about that in that cyclos podcast. um But let's see if I can summarize. So here's basically the idea. On the web, whenever you need to access some some documents that are behind ah an authentication authorization wall, you have to log in somehow, right? You're going to use ah usually a username, password, or ah you know some kind of token yeah ah to get in.
01:31:02
Speaker
now So you send some information in your request to the server. The server takes that information, checks it somehow, you know like matches the username and password with what's in the database or whatever. They use their procedure on the backend. If if you authenticate, then you can then they can send the response back to you, right? Otherwise you get redirected somewhere. So, okay, we can send the data back. When the response comes back to you,
01:31:28
Speaker
A cookie is going to be sent along, carrying a session ID inside it usually. you And that cookie will be embedded in your browser. And your browser will keep sending that cookie translicce yeah silently but requests for for every single link that you click anywhere on that page, or any of the automatic requests for cascaded files. yeah okay and And that's good. That keeps you logged in on the site. And it allows the server to hold onto information about who you are and what you're doing right now on the site. They can just keep piling it up in your your cookie session.
01:31:56
Speaker
And if they want, they could send more than the session ID, they could stick extra data in that they want to store on your on in your browser. And then they could pull all that back later, even if the session has expired on the remote host on on the server you know that you're talking to. So that's cookies. I think the real challenge with cookies is that it's possible for cookies to be used in a cross-site manner. And that is that mixed together with referrer headers is what allows sites to do user tracking across sites. across sites yeah And then that's what allows it ultimatelys me to percolate up to these um these big sites like Facebook and whatnot who can track everywhere you are online or or Google and figure out where you're at and then use that to then do targeted advertisement as you. um So in the Gemini world, there are no cookies. So that means you can't, and there are obviously no referrer headers. So this kind of cross site tracking isn't really possible, ah which is that was a design decision.
01:32:50
Speaker
But that means you need some other way lacking cookies to persist information across a protocol that has no memory, right? Just just like HTTP, Gemini is a stateless protocol. Every single request, that's the first time the server's ever seen you. And it's like, oh, hello. What what what do you want? You want this document? Yeah, yeah exactly. Goldfish memory. so ah So to solve this problem, what's the Gemini protocol developers did is they leveraged client certificates in SSL TLS, right? yeah So this is something that's not really used in HTTPS, just the server certs are. Yeah. So um I don't know how familiar you guys are with like the TLS handshake and the way all that works. Yeah, yeah. I think we need some of the applications that I worked before inside a bank, we used to ah issue these client certificates for the application basically. and Okay. the Yeah, yeah.
01:33:44
Speaker
Right. So I believe it can be done in HTTPS. yeah And I think it's used in some government applications. It sounds like he said in bank applications too. yeah It's just not really a feature that you see in most browsers. Yeah, exactly. It's not there. It's not like, yeah. Right. So the so the typical procedure for listeners. the paper the The problem, by the way, Gary, the reason why it's not used very much It's like a lot of these things. It's a distribution problem, actually. yes you know How do you get that one possible? Because SSLv3 basically introduced it. So you know the problem is, yeah like I said, it's how do you get the certificate in the hands of your user in a way in the first place he yeah that's the fundamental problem. It's like you need the key to get in and how do I get the key to you? i know right That's the nice thing about tokens and stuff like this, isn't it? That you can kind of do it out of band, whereas more key with certificates.
01:34:36
Speaker
so Jim and I came up with a pretty straightforward way to do it. um so they The idea is essentially this. um so I make a request to my request from my client to the server, and it's like an HTTPS request or an SSH request you know connection to the to the remote host. in that I make a TCP IP connection from my client to my server. I knock on the door there of the host port pair. yeah If there's a server on that port, it opens up the door and says, what do you want?
01:35:05
Speaker
And the client says, sh somebody might be listening. I can't tell you what I want. First, we must secure the conversation. And so then they perform the TLS handshake, right? In which they exchange which ah encryption protocols and algorithms they both know. They pick usually the highest version of the protocol that they both know. For example, TLS 1.3 and a common algorithm like AES or something like that that they both know. And they say, okay, we got our algorithm protocol pair. This is what we're going to use.
01:35:34
Speaker
They exchange a little passphrase so they make sure the encryption is is working. And now they're gonna speak through the encrypted tunnel for the next step. So step one is encryption. Step two is the authentication step. So now the the server says, all right, great. So nobody can hear us. Now, what resource do you want again? And but again, you're you're your client says, wait, I can't tell you what I want. I must first ensure that you are you.
01:36:02
Speaker
think i want I don't want to tell a hacker what I'm looking for. yeah So you have to prove to me, Mr. Server, that you are Closureverse.org or something like that. yeah Otherwise, I'm not going to tell you what what page I want on your site. And so Closureverse sends the client its ID card, right reaches in its wallet, hands you its ID card, which we call an X.509 certificate or an SSL yeah certificate. so certificate yeah yeah so they's in this thing yeah So they send that thing to you. You take the certificate or certificate chain ah down.
01:36:31
Speaker
and So the the browser takes a look at it and has to decide, do I trust this or not? Is it a fake ID or a real ID? Or is it expired or not? right And so your bro this is where these protocols differ. SSH, Gemini, and HTTPS all do the same thing basically up to that point. But then the how they figure out whether or not they're going to trust that server ID card is different between these protocols. But once they've decided, hey, we agree that you are closureverse.org, your your ID looks legit.
01:37:00
Speaker
Then finally, the client will say to the server, OK, I want this page on your site. And then the server says, cool, let me get it for you. And they either give it to you if it's publicly accessible, or they say, wait, hold on a second.
01:37:11
Speaker
ah That's a private page. You can't see that. That's your account page or something. You can't see that. Are you actually Gary Johnson? And now I have to prove it on Gary Johnson. So this is where you'd log in. It could be that login step. So this would be proved because I would have done a login step first. They would have made a session key. They would have sent it to my browser as cookie. And my cookie would have been broadcast up with the request. So when I would say, I want this page and here's my cookie, then the browser would go or the server would say,
01:37:42
Speaker
Okay, let's see. Okay, that's a private page. Let me look in your cookie. Yep. You are you. Awesome. Here you go. And they would hand me the page. So use that cookie for authorization on each one of these requests. ah So that's how it would happen with the web is with the cookie. ah In SSH, you made the request, you got to that authorization step, you get the SSH, sorry, the SSL certificate back. And the You guys all know this. If you SSH to a server for the first time, yeah you're going to get a message back saying, non- horsese yeah exactly this this is this is not known. This is a new SSL fingerprint. Do you accept it? You say yes.
01:38:17
Speaker
So that's, that's the, how do you decide if it's good or not? It just says, do you accept it? And then you say, yes, yeah because what else are you going to do? Are those it hangs up? So then it takes, that's the nice thing about it. Isn't it? You know, you wear yeah you know you went there. so So you're prepared to trust it. Cause you tried to go to that exact address that someone gave it to you at some point. So you're kind of trusting the URL there.
01:38:40
Speaker
Yeah, precisely. And so then you take that certificate fingerprint and SSH, your client will stick it in your known hosts file, right? That's your trust store that's building up. And so, and then you'll make your connection. You're good to go. Uh, you, you then authenticate, right? You can't really access me until you prove that you are Gary Johnson. So I give you my username and password or my SSH, uh, certificate or my, my key key. Yeah, you yeahp exactly. And then boom, I'm in.
01:39:07
Speaker
So yeah that's the client authorization step. And now I have a connection, I'm going to go. Next time I go to connect to the same server, ah I won't be asked about the fingerprint because when the in the TLS handshake, when the SSH server sends the ID card down to my SSH client, it'll just check it in the known hosts file and say, have I seen that before? Yeah, I have. Oh yeah, there it is. Same IP address, same SSL certificate. It's the same guy. Good to go. And so then it just sends up your your key or your username password and you're in.
01:39:35
Speaker
Okay, that is that that authorization step of trusting the certificate the first time you see the server and storing it at your trust store. And then on every subsequent visit to that site, saying it's still good as long as the certificate they're presenting matches the one you got the first time is called trust on first use, or TOFU. yeah So that's what SSH uses, TOFU.
01:40:00
Speaker
which is probably appropriate for um the world's greatest vegetarian closure podcast. ah
01:40:07
Speaker
onre both not onre ah so yeah sorry So Tofu is this authorization step that we that we use in SSH. So Gemini is uses that. right Whereas a web browser uses a trust store that gets installed with your web browser.
01:40:21
Speaker
yeah When you put Firefox or Chrome on your computer, you're going to get directory like etc slash SSL certs. And it has a whole bunch of certificate fingerprints or certificate signatures from the certificate authorities. Exactly. And so ah and in on the web, when you get this ss h or SSL certificate down, your web browser is going to look at the at the cert and it's going to check to make sure that the common name field matches your yeah URL.
01:40:48
Speaker
you know ah This is supposed to be closureverse.org? Yep. The name on the ID is closureverse.org, not fubar.com. That's good. It checks the ah expiration date on it to make sure it hasn't expired. Otherwise, you get that. Everybody knows that expiration error in the browser. yeah And if it hasn't expired, then it goes and looks at the signature on this thing saying, this ID card for closureverse.org was issued by VeriSign.
01:41:09
Speaker
right and so Then you go, okay. so Your browser goes and checks the trust store, flips through the Rolodex, finds VeriSign signature, matches. Yep, same signature. Good. Otherwise, signatures don't match. This is forged and it breaks the connection. Same thing. right so there This is trust store system ah from certificate authorities that works with the web. Gemini does what SSH does. so It uses Tofu. so The first time you visit a site,
01:41:34
Speaker
First time you you visit a site, you get the cert, you stick the cert into your local trust store automatically. And every time you visit it in the future, it it'll match it. If it's the same, you're good. Anytime the cert changes,

Reflections on Gemini and Closing Statements

01:41:46
Speaker
your Gemini client will say, hold on, we don't trust this, just like SSA clients do. yeah And you then have to decide if you want to switch the cert out or disconnect and then go through some other channel to determine if the cert is supposed to have been updated. but So that's that's that.
01:42:00
Speaker
Yeah, yeah. And so sorry, then using these things, we close out close out. Yeah, yeah, yeah. So so. All right. So once we got to that tofu step, the thing that Jim and I does sort of uniquely among these three protocols.
01:42:12
Speaker
is the client certificate element, um which is more, it's it's closer to the sending up your SSA to public key, right? So the idea is, if I make a request for a private document, ah your Gemini server can send a ah ah response down to your client saying, that's a private document, I need you to give me a certificate first to access it. And give me your client certificate. So give me your ID card showing the angry Johnson. So it just reverses the same thing. And so your browser will then ah prompt you and say, hey, they're asking for a certificate, which one do you want to use. Here's your wallet with your, with your local ID cards. Pick one. And you go, I'm going to use that one. And then your browser will send it up to the server. The server can do the authorization check, just like it would check any other token or username password. And if it matches, you're good to go and you have access ah to this resource. And then once you've done that one time, just like with cookies, youre your, your browser will keep sending that certificate
01:43:07
Speaker
silently in the TLS handshake on every subsequent request on that site until you go to a different site or say you want to stop sending it. You can send that message to your your browser and that's like logging yourself out.
01:43:19
Speaker
so So this entire protocol thing on the server side thing is is already available for Closure programmers or basically Closure and so on to use Closure server using Space Age. And um so just to close round off the discussion on on this thing. So what would be the idiomatic application on top of this application protocol? Absolutely. What what would be and a simple example of this is how you can use it. Is it going to be document repository or?
01:43:51
Speaker
Well, i here's what I would say. The sky is the limit. And I've been using it this way at work ah where we write Closure Web Apps, ah but we also have a Closure Gemini site on my software team that we use every day in-house. And so the idea is So we have just this ah always encrypted, extremely simple protocol that can serve documents of arbitrary types one at a time, right? yeah Well, even though there's no client-side programming language intentionally to keep the stack simple,
01:44:25
Speaker
server-side programming is completely open-ended. You can do anything you want. So anything you would do in a Clojure web server application, you can do in a Gemini web server application. So I wrote Space Age, ah which is the Clojureians Gemini server, yeah to support specifically a ring-like programming model on the backend. So whenever somebody makes a request to Space Age, you can write a Clojure script with a main function in it,
01:44:49
Speaker
And if the yeah URL that's being requested in the browser maps to that particular CLJ file yeah under your document root, ah Then space age will load it up into a temporary namespace. Yeah, it will execute your code It it will load it in it will run your main function passing it a request map It's like a ring request map that has all the fields from the Gemini request already parsed out in there for you Yeah, and all you have to do is have your main function return response map with the with the relevant fields for Gemini responses. yeah Yeah So that's it. It's a function of request map to response map
01:45:20
Speaker
And, uh, that will then come, that'll get turned back into a Gemini response, sent back to the browser browser. render c yeah exactly so Exactly. It's exactly. It's CGI programming. It's Mark. bow It is mod Pearl, man, but without needing to actually set up Apache. So that's all you're doing, right? So you guys, you can just write.
01:45:37
Speaker
Closure scripts, CGI style. But at that point, you can do anything. You can talk to your SQL database or your data log database, make a call out to a third party provider. You can proxy sites. You know, a lot of people like to make Gemini sites that proxy something else like the BBC News or something. And so you go hit it and it just makes a call out, parses the HTML, turns it into gym text.
01:45:56
Speaker
and sends it back ad free, something like that. So you can do that kind of stuff. um I use it at work. um So we use Gemini for a team wiki instead of using something like, I don't know, Moodle or exactly Confluence, something like that. yeah Because it's so simple. basically i have So I have a ah private Git repository that the team members have access to. Everybody clones it to their machine.
01:46:24
Speaker
That contains the contents of the wiki right just laid out in gem text and ah related images or other file source code files that they would like to have eaten files etc. i And some closure files sprinkled in that in there, which are little CGI scripts, basically, all sprinkled through the document root tree that we can all write. ah These are all hosted on a on ah on Space Age, or using Space Age on a common server. So we have our site, which is devdocs.sigges.com. yeah And so our team members can just point their Gemini browsers at this site.
01:46:56
Speaker
And boom, they get to see the latest version of what's going on there. The requests that are going to that Gemini server to space age are actually just rendering the contents of this get repo of this separate get repo ah yeah that stores the wiki contents. Right. And so with nothing more than my little.
01:47:13
Speaker
space server and to get repo control containing the actual documents i want to serve i need nothing else and that gives me a ah version control database of documents that are right that we can but we can actually work with in an offline first workflow that we can edit with our editors of choice not with markup In a browser, we have to use the browser form fields or text area fields. yeah Peer review is done ah using Git. Version control is done using Git. There's nothing to it. So you want to add something new to the wiki. You just make the change locally on your machine. You push it up. It gets reviewed by a ah team member. And when it gets merged,
01:47:50
Speaker
you know the Jenkins job throws it off to our server and boom, it's being served up on the site. So it it hits all of our goals without needing a whole PHP, CMS, a web server, a MySQL database, and all my data lost in binary blobs inside a database tables, right? So that's what it's that's what it's all about.
01:48:09
Speaker
Yeah, it's like taking taking the the web back to the back to its roots, as they say, I think it's ah an amazing. oh Yeah, I think it's sometimes improvement is like chopping off a whole random crap that we don't need. it can't be It's one of those things there's a lot of fun to writing these kinds of things for sure. yeah yeah And i've I've written pages that we we have a page on our our wiki site.
01:48:34
Speaker
Yeah, whenever you visit it, it runs a closure script that actually pulls all of our servers. It's a core async program that checks the status up down status of all the servers and reports back on like 80 or 90 servers and a nice table telling you what's going on. So like immediate server monitoring can be done that way.
01:48:48
Speaker
I wrote a, I wrote a stripped down Jira interface for doing ticket tracking. I could do all clicking the links in Gemini and it just interfaces via the API to this third party system and so on. So I'd say any closer programmer wants to, who wants to make a simple text-based interface to anything that they're used to playing around with in the web, you can do it, right? That's, that's the story. Yeah, I think that's fantastic. I mean, to me, it's sort of like, like you say, privacy first, simple first. It's just like, it's super attractive, I think.
01:49:17
Speaker
for, you know, I'm so frustrated by so many, ah you know, you want to write a blog or you want to like do something simple. And it's so frustrating these days because you think, Oh God, ah um which, which of these, which of these like, uh, pre, uh, static, es static site generates. Am I going to use yeah am i can use a Ruby one or a gold one? And if I say, for fuck's sake, why is this so hard when it should be so simple?
01:49:44
Speaker
And, you know, Gemini is just so perfect that because you haven't got that whole magic thing happening between your writing of your document and the serving of it out into the world. So right I just love that, you know, chi text is like a stripped down markdown yeah and markdown is completely human readable as is. yeah So exactly to your point, Ray, you you want to write a blog, you write this markdown looking file with your contents, you ah FTP it to the server, and that's it. There's nothing else to do. You have renderers and it looks great. Ninety-five all over again. and Thank you, Gary. Yeah, thanks, guys. Class from the past. It's been great. No, it's great. Honestly, I mean, you know, i
01:50:28
Speaker
we've probably we We've reached the Chihuahua mark, so that's pretty pretty impressive. but We did spend a lot of time talking about yurits and satellites, to be honest. but to be honest it It's wonderful. i mean this yeah comp it's not mean it's not it's not just you know Technology, is as you're doing now, is is intricated or you know kind of going hand in hand with everything else that we're doing. right so it's it's It's part of the part and parcel of what we're doing these days. It's not like Oh, i'm I'm writing a program somewhere and you know it has no effect. But these days, everything that we do is affecting practically everybody. And it's it's nice to know you know the human side of it and and how we are living and how we're doing, making things better. But hey, I think it's fit's um probably, I think we've we've been accused of not releasing enough episodes, but I think this should quench the thirst for people. for
01:51:21
Speaker
if you've stayed this long. you know yeah Fair enough. Thanks for everybody who's listened. and and Gary, thanks thanks a lot for for joining. and you know I'm super fascinated by you know every aspect of what you're doing with with the technical stuff as well as your true to the values of living and and everything. and um you know um I'm gonna walk to a supermarket and then buy Pringles and then not like you know driving 20 kilometers away or whatever or 20 miles in the US. Well, at least you can ride your bike everywhere in the Netherlands. That's true. That's amazing.
01:51:57
Speaker
um But hey, thanks a lot for taking the time. And um you know it's um I think people can check this out on Gemini protocol dot.net and space age look for it. And also for the deeper dive, ah looking at the psychology presentation um would be super helpful as well. I'll ah put some links in the show notes as well. And um yeah, I think that's it from us for today. And thanks again, Gary. And then I think hopefully one day we'll meet, then who knows, you know, I'll probably need some tips. If I ever want to go off grid in Europe, which is probably away from Europe, I guess. Maybe I'll get you on a SIG interview one of these days, Vijay. Yes. Yes. Yeah. Well, I'll i'll keep my you know eye out for the, for the openings and who knows. Awesome. Let's be great guys. Thanks so much for the chat. Thank you. Yeah. All right. Take care. Happy hacking.
01:52:53
Speaker
Thank you for listening to this episode of DeafN and the awesome vegetarian music on the track is Melon Hamburger by Pizzeri and the show's audio is mixed by Wouter Dullert. I'm pretty sure I butchered his name. um Maybe you should insert your own name here, Dullert.
01:53:11
Speaker
Well, if you'd like to support us, please do check out our Patreon page and you can show your appreciation to all the hard work or the lack of hard work that we're doing. And um you can also catch up with either Ray with me for some unexplainable reason. ah You won't interact with us. Then do check us out on Slack, Clojarian Slack or Closureverse or on Zulep or just at us at Deafened Podcast on Twitter.
01:53:39
Speaker
Enjoy your day and see you in the next episode.
01:54:07
Speaker
you I have higher and lower speed internet. yeah know so So I have i have like ah two satellite dishes ah that run on different technologies. So I have one that uses low earth orbit ah yeah technology, like a Starlink dish. And I have another um geostationary satellite dish that right uses a completely different network. yeah And the geostationary satellite internet is much slower.
01:54:38
Speaker
um because you're broadcasting a lot further from Earth, right? For geostationary satellite internet um providers have a lot less satellites. They put them up 22,500 miles above the Earth's surface. At that ah height, the orbital rotation rate matches that of the rotation rate of the Earth, right? So they just always sit in the same place in the sky. They're just static stars. yeah And so you get a fixed dish.
01:55:02
Speaker
mount it in your house. right And it just points at one spot in the sky, that satellite's always there. You're always talking to the same satellite. yeah right And it has a name and everything. You can see it you know on your on your system console. And so all all your traffic is routing you know from my yurt through my dish into space, 22,500 miles up, bounces off that satellite, 22,500 miles down, gets a ah receiver station somewhere on earth. And from there, it gets relayed out over the public internet.
01:55:29
Speaker
yeah to whatever site I'm trying to reach or server or whatever, dating it sent back to the public relay station, bounced back to the up to the satellite, back down to me and into my year, right? So there's four passes of 22,500 miles, so you know two going out, two coming back. So you're 90,000 miles through space added to every single request and response. yeah Every packet is getting transmitted that extra 90,000 miles at light speed, but it's getting jumped all the same. So you get longer satellite delays, the more latency in the connection basically, right? You can still stream video and stuff like that, but you might need to buffer a little more.
01:56:07
Speaker
Yeah. Anyway, so I had that for years. That was my only way to communicate with the outside world. VoIP phone calls and and the whole thing that way. But the great thing about it is that even though it's kind of low speed, it's very, very low power to use those systems. But when you know Elon Musk brought the Starlink system online, I was in the better than nothing beta program for that. I signed up for it way in advance and it finally came available here. I got the the dish during the beta program, set it up outside and it's a little robot that kind of jumps up and spins all around and everything and connects. But it's not ah it's not a fixed dish, right? It's not even a dish. It's a flat surface with ah an antenna array inside it. And it's tracking, you guys probably already know this, but it's tracking- I don't know much about it to be honest. Oh, okay. Well, so so instead of pointing at one satellite all the time,
01:56:56
Speaker
What's going on with but Starlink, which is what I'm using to talk to you guys right now, yeah is that you have this sort of flat panel ah antenna array in in the dish head, right? And that's what's sitting outside staring at the sky. Now, it's not tracking one satellite. It's actually tracking a ton of satellites that are moving through the sky continuously, right? Just jumping from horizon to horizon. And that's because um Instead of using like the problem with the geostationary satellite internet is it takes so damn long to go from Earth all the way out there and back again. So you get slow internet. So the only way to speed it up is to bring the satellites closer to Earth. So that's a low Earth orbit or Leo tech. yeah But if you put the satellite close to Earth, it goes too fast. It orbits too fast. So it just shoots through the sky. right And that's not going to do you any good for having internet. It's just it's gone and then going all the way around the Earth again. So you've got to put lots and lots and lots and lots of them up there. So they make kind of like a belt.
01:57:49
Speaker
that's zooming around and around and around you, constantly turning. And so your antenna array is tracking all the satellites you can see in the sky, and it's jumping from one to the next, to the next, to the next. It's leapfrogging between satellites. So this continuous stream of data that we're sending up and down right now is actually being sent in packet streams that are going to one satellite for a little bit, and then suddenly... next one, suddenly next one. So I'm actually jumping between different connections. Like I can't, I keep switching my internet connection every, you know, minute or so, which is, it's just kind of wild. It's a pretty fancy router then. Yeah. Exactly.