Textual UIs with Orhun Parmaksız

Adam Leventhal:

This might be our most hyped show of all time because we've been teasing it for, like

Bryan Cantrill:

This is certainly one that's most planned in advance. I I I I think this is, like, a this whole advance planning is, is new to us. And, of course, we're we're in our our, I would say, Europe friendly time, but but Arun, you're you're in you're in Turkey. Right? So it's like it's not it's I think it's 8PM there.

Bryan Cantrill:

Is that right? It's it's definitely not it's it's not exactly midday there.

Orhun Parmaksız:

No. It's, yeah. It's eight 8PM. I have, like, two hour difference, with Europe. So CAT, like, two hour ahead of me, I think.

Orhun Parmaksız:

I'm not sure. I think. Yeah. But that's So it's

Adam Leventhal:

still, not I mean, our normal time is is what? 4AM your time.

Bryan Cantrill:

Four 4AM. Yeah. Yeah. Exactly. It's better than 4AM.

Adam Leventhal:

That's friend friendlier. It's all I mean, these days that counts as downright welcoming.

Bryan Cantrill:

We the oasis is half full. Right. So, Adam, I'm I am very excited for this. I'm I am very excited to talk to his Arun, thank you so much for joining us. We've got some folks from Oxide who've been building on Ratatouille.

Bryan Cantrill:

And so we're we're really excited to talk about this. Yeah. We we we brought

Adam Leventhal:

all we brought all your groupies. I hope that's okay. Like, we couldn't keep them away. A lot of Ratatouille excitement at Oxide.

Bryan Cantrill:

That's sweet. We're we're big Ratatouille users for sure. We we really love Ratatouille. The but, Adam, actually, has a a way of background. I thought I might tell I think I'm gonna tell you something about me that you might not know.

Adam Leventhal:

Okay. Wow. Okay. An ox headed prince first.

Bryan Cantrill:

Making history here, folks. Brian is actually telling me something that I haven't already heard six different times over spanning three decades. Yeah. No. The the

Adam Leventhal:

I'm gonna put down the crossword puzzle. That's great.

Bryan Cantrill:

Put down the crossword puzzle for a second, if you wouldn't mind. So, and of course, you may also be thinking like, you know what? I'll be the judge of that. I'll be the judge of whether

Adam Leventhal:

you told me this or not.

Bryan Cantrill:

So when, so of course, back in the day, I had an IBM PC XT, which is what I I grew up on. And some of this you do already know, by the way. So don't hit your buzzer yet. Okay? Just just totally.

Bryan Cantrill:

Like, I know we've heard this one before. No. No. Stop. Hold on.

Bryan Cantrill:

I'm gonna get to something you've heard before. The and we so we did not have we had a very, very, very early PCXT. Actually, I believe the second PCXT in the state of Colorado, which obscenely expensive. My father had the idea he was gonna start a software company, that kinda died. But the, so I had this this what was kind of a business computer at the time that everyone else had really an Apple two e.

Bryan Cantrill:

And the, so it, I could I mean, what I wanted to do, which is kind of what, you know, every kid wants to do, is I wanted to play games on this thing. Right? And, there there was a graphics card, but I only had a monochrome monitor. I had an an Amdek amber monochrome monitor Nice. Which is, like, just as a decide.

Bryan Cantrill:

Have have we have I talked about my Amdek before with you?

Adam Leventhal:

No. No.

Bryan Cantrill:

Oh, man. That thing is like that that is my rosebud, man. That thing I I had that thing all the way through college, and it I it it it was left in a garage in in in Providence, and I'm I I like no, no, it's it's it's not good. Like, if the I I I did that monitor dirty, and whenever and that amber is like got such a kind of an emotional resonance with me because I spent so much time. I had like the word perfect screen was burned in on that on that monitor.

Bryan Cantrill:

Beautiful, beautiful monitor. But the, terminal, I should say, really. Of course, so we there was a Hercules graphics card that you could buy for this thing, a monochrome graphics card, but it was, like, $250 in 1985. So like, yeah, that was a % not happening. You think a GPU's are expensive, you should try buying a Hercules monochrome card, graphics card in 1985.

Bryan Cantrill:

So I everything I did was text based, and I, there were some text based games. I would write my own games in basic and then later Turbo Pascal. But what I then this is the bit that that, so I, wanted to have a, I was writing batch files, DOS batch files.

Orhun Parmaksız:

Nice.

Bryan Cantrill:

And I wanted to have a way of having a a user pick from a menu. God only knows why I wanted to do this. Like, I wasn't making software for anybody else. I don't know. This is just, like, the the things kids do in their nerdy kids do in their bedroom, I guess.

Bryan Cantrill:

The, but I wanted to have a way of having, like, from a I mean, to call a batch file a shell script is far too generous. It really is. It, have you do you have any spent time with DOS, Adam? Is this, like

Adam Leventhal:

very little. I think only when I was dealing with, like, Renegade BBS stuff, like, just to also turn to the Wayback Machine. Oh, I I guess I guess not quite as far back, though.

Bryan Cantrill:

Yeah. I mean, it it it's, you know, raw but it does bad. Batch files bad.

Josh Clulow:

Percent error level percent.

Bryan Cantrill:

Percent error level percent. Did you scream error level, Josh? I we need to scream percent error level. I I think I don't think that I think that had to be an upper case.

Josh Clulow:

I think it yeah. I think that were case sensitive.

Bryan Cantrill:

So I had this idea, I I and I guess maybe the the the apple didn't fall far from the tree in terms of my father's delusions of starting a software company. My own delusions, I'm gonna, like, I am gonna write this piece of software that allows you to have this this menu from a batch file, and, like, this is gonna be, like, my ticket to the bigs. Like, this is gonna be I'm really going places. So and I remember vividly thinking when I was in, like, eighth grade, like, if I can just figure out how to do, like, how how to read and write to a file, like, I'm cooking with gas. I'm, like, I I'm this is this is and I, so I did this thing and built this this TUI, really, that would allow you to, like, specify from a batch file, specify a bunch of things, and, made it available as as shareware, which, of course, in 1987 meant that I was uploading it to the Montana Programmers BBS.

Bryan Cantrill:

That's cool. Yeah. Exactly. I this is where or when you may be like, where am I right now? Am I, like, what happened?

Bryan Cantrill:

I I feel I am down at the home. You know, give me five downloads for an upload, you'd say.

Orhun Parmaksız:

I enjoyed this a lot,

Orhun Parmaksız:

to be honest.

Bryan Cantrill:

I I so that was the extent of my distribution. And then I actually, like, alright. Well, I gotta, like, you know, print. I said, I I I printed I I typed on our our IBM typewriters, literally circa 1948, just typed up some labels and was, and I was describing my ambitions to a friend of mine. And a friend of his is like, that sounds really useful.

Bryan Cantrill:

He's like, how I I I'll take that. I'm like, how much is it? I'm like, I think it's $5. And he gave me $5.

Adam Leventhal:

Wait a minute. You I I didn't know this at all. So you had a your first profitable software business back in 1985 or whatever?

Bryan Cantrill:

Yes. 1980 yeah. Seven. Whatever. Nineteen eighty yeah.

Bryan Cantrill:

Nineteen yeah. Eighty seven, '80 '8, something like that. Peter Rubinstein, God bless you wherever you are, for your your charity. Oh, clearly, money meant nothing to you because you gave me $5. An early angel investor.

Bryan Cantrill:

The early angel super angel, actually. Well and and so, Adam, you may wonder, well, this is suspiciously the same dollar figure, and but it is actually the same dollar figure. I know what you're thinking of something you've heard many times, which is namely when I also part of the headwaters of Food for Money Friday wasn't just Robert, but was me drinking a cup of vinegar on a dare for $5 at scout camp circa, like, 1985, maybe two years earlier. So I think I would like to say that, like, yeah, that $5, I was, you know, I was cleaning it up a bit. I was, I was actually I earned that $5.

Bryan Cantrill:

That's awesome. The ended vomit, the person who paid me said it was the best. Said, I think that's the best $5 I'll ever spend in my life. I would like to believe that they still believe that because I gave them much entertainment for that $5. Peter Rubinstein's 5 dollars much more like a traditional angel investment.

Bryan Cantrill:

That one's just that one. I don't know that he ever that was that was the only one I actually, so that was it. That that that was, that but my it all kind of begins for me with a with a with a with a two e. And And

Josh Clulow:

that'd be that would be almost $15 in today's money. Right?

Bryan Cantrill:

And that'll be $15 exactly. But, of course, like, $15, then you gotta correct for the fact that I have no job and no way of earning money other than, like, doing food related stunts. So you you you gotta adjust for that. And it's kinda like, it's a little like, you know, like a thousand bucks. You could be like, wow, I can really I can buy, like, two whoppers with this.

Bryan Cantrill:

Okay. But so then we, and and unless, so, you know, you were, you had the the glory of being on the Mac pretty early, right? So you were That's right.

Adam Leventhal:

Yeah. My first computer was a Mac in 1986.

Bryan Cantrill:

Yeah. Wow. I mean, did you have the GI Joe aircraft carrier too? Are you one of those kids? Stop.

Adam Leventhal:

Stop. You, you, you careful what you say. I was not. I know those kids and I was not

Bryan Cantrill:

one of those kids. Doctor. No, I was that. Listen, that was what I said was rude and insensitive. And I didn't like to give you that.

Bryan Cantrill:

I, I know based on your ability to socialize with the people that you were not in fact, one of the aircraft carriers. Yeah. You're gonna

Adam Leventhal:

ask you if I was homeschooled and forgiven. That's right. With forgiveness to all the homeschoolers who are listening.

Bryan Cantrill:

But, like, yeah, go play with your aircraft carrier. You do you know you wanna you know you wanna do it anyway. Or invite us over so you can beat us at the video game that you've got. Like, you did these these guys all the time. But so okay.

Bryan Cantrill:

So you and I think that that was an era where, like, the graphical user interface is, like, the step forward. Yeah. And everything is gonna move to graphical user interfaces. But then there's this kind of, like, command line I I would say I don't know if backlash is the right word, but then you I mean, the the kind of the Unix versus Windows dichotomy that that, typifies kind of the late nineties is really a kind of a a GUI versus a CLI kind of debate at some level. And the I I mean, we we had a a colleague who was describing, because this is where we're like IT organizations would be very divided based on UNIX versus Windows.

Bryan Cantrill:

And

Bryan Cantrill:

you remember Jared always saying like, look, these got these guys, they just need the clicky clicky. Gotta give you clicky clicky. And so there was this but it was kind of unfortunate that and or I'm sorry to give you kind of, like, the the the background from from nineteen Dickety two over here. But the, it it was a bit unfortunate that there was this kind of divide that if you wanted to have a graphical user interface, it was on Windows or X Windows, and X Windows was it was I mean, x the X is it's tough. Right?

Bryan Cantrill:

It's tough to make a really good clean X. You definitely can, and, you know, we did, but it was like, it's not easy at all. Mhmm. Did you you must you obviously did programming in x, for sure.

Adam Leventhal:

Yeah. Yeah. So, I mean, like, in in in college, in, like, the graphics courses and stuff. Yeah. I mean, and and I have all the x manuals propping up on the course that I've left around.

Adam Leventhal:

Yeah.

Bryan Cantrill:

Yeah. Yeah. Yeah. So we did right. So the the I don't know.

Bryan Cantrill:

I'm not sure if you know X Windows, but, like, the the the hallmark of X Windows is the the end the kind of like the

Adam Leventhal:

the The, like, the pride flag of pride flag of books with, like, all the different colors.

Bryan Cantrill:

Also, I was I was gonna go the Pokemon route, but I think you're also right. It's kinda like the you'll collect them all. You have this kind of, like, you know, whatever it is, 12 books, nine books that are the x window set. And you kinda need that up on your lap as you were doing the stuff because it was just, it was not exactly clean. There's a lot.

Bryan Cantrill:

And in part because it was a C based interface and so on. The but it's okay. So that divide kinda continues. And then Adam, this is kinda thinking about, like, our own, like, our own journey with respect to user interfaces. Now, fast forward to 02/2006, and it's like, man, we wanna, like there are things you wanna be able to do graphically the that you like, how do we but we we're not we're on the server side, and this is like the the the rise of AJAX.

Bryan Cantrill:

Right? And Right. Being able to build, like, real web apps. And then, you know, you and I went and did a a really sophisticated user interface using the web at a pretty early time, in hindsight. Yep.

Bryan Cantrill:

Although, you know, as early as it was, it was still so late that when we were we were not gonna use Django, we were gonna just, like, implement to the raw DOM. And there are people who are like, oh my god. That's like, are you ready? You're like, you're like on the metal. It's like it's a it's a dog.

Bryan Cantrill:

It's not. It's like it's still pretty high level.

Adam Leventhal:

It it is notable that the state of the art, as you might recall, the competitor who we were looking at, it looked like command line tools wrapped in pretags. So I do feel like there is sort of a a a circular notion to this and we'll we'll as we'll get to later on.

Bryan Cantrill:

Yeah. For sure, we'll get to. Yeah. Absolutely. I think there's a circular notion to it.

Bryan Cantrill:

And and I'm like, I was trying to think like when did I first start seeing I mean, because we definitely had to have some TUI programs. I I don't know when the term TUI started to arise. I don't think I heard it until, you know, the last decade for sure. I don't think I heard it before that, but maybe it's been always been around.

Adam Leventhal:

Do do you remember we we used to call our thing, I I almost hesitate to say it, a buoy. I think I'm I I feel like

Josh Clulow:

you called them.

Josh Clulow:

I think you were the only people that ever used that,

Adam Leventhal:

that acronym.

Bryan Cantrill:

Josh Josh has been patiently waiting for years. It's like, I will stage the next time these guys say buoy, I'm staging intervention. I'm jumping on.

Adam Leventhal:

It was such an awful term. I could never get behind it, but it was for a brief moment in sort of the late aughts or whatever. It's it was the term of art. It was awful. And I'm so glad it's fallen out of the lexicon.

Bryan Cantrill:

I think that I think Mike invented that one.

Adam Leventhal:

I don't think so. No. No. No. That that was that people.

Adam Leventhal:

Yeah. That was that was a thing.

Bryan Cantrill:

Oh, that was a thing. Okay. Well, and then the and then we did have some things that had to be text based. I mean, there were or something and using curses or end curses.

Orhun Parmaksız:

Right.

Bryan Cantrill:

Which is terrible. Although, actually, do and Encurse is is also kind of you know, I know we over the course of this podcast, we're really just going through our collective resentment that we've accumulated over our lives. The the Battlecruise knock off, do you know this?

Adam Leventhal:

Oh, a Netras.

Bryan Cantrill:

Netras. And do you know what Netras is? So the for context.

Adam Leventhal:

Yeah. For a lot of context, I would just say Battletress, the Tetris, inspired a game that you made that is that was

Bryan Cantrill:

Okay. So are you saying that this is, like, Sam Altman complaining that that DeepSeek is, like, you're a pain at all Tris. You may wanna sit down. I may wanna, like, lose some of the indignation about being knocked off, pal.

Adam Leventhal:

It's like we patented Tryst. It's like, did you though? I'm just I

Bryan Cantrill:

think there's there's there's there's

Adam Leventhal:

maybe even a movie about it. I don't know. But, yeah. But Battle Trist was a game you made with some other folks, and it was your obsession in college. And then I would also note, after we finished was it Solaris 10 or Solaris nine?

Adam Leventhal:

After we finished Solaris 10, it ground the productivity Solaris nine. No.

Bryan Cantrill:

No. No. No. No. Nope.

Bryan Cantrill:

Nope. Nope. Nope. Nope. It was definitely not after we finished Solaris 10.

Bryan Cantrill:

It was after we finished Solaris nine.

Adam Leventhal:

That's right. That's right.

Bryan Cantrill:

ZFS hung in the balance. ZFS no.

Adam Leventhal:

I like,

Bryan Cantrill:

this is literally, like, you can go through because there were two things that Battle Trust almost capsized. ZFS, because this is early, early, early days of ZFS.

Adam Leventhal:

Yeah.

Bryan Cantrill:

And the and Brigid, my wife, was, in her PhD program. And the the two worst BattleTress players on the planet, this is a net a network Tetris game where you play Tetris against one another. You get the in addition to the regular pieces, you would get these dice. You'd get that into into to lines that would give you money. And then every time you got 20 lines between you, you'd go to a weapons bazaar to buy weapons to screw up the other person's game.

Adam Leventhal:

I'm just gonna say in the last thirty years, you've really tightened up the elevator pitch for battle trust.

Bryan Cantrill:

Thanks. I'm pretty good on that one. Right. Buzzed me.

Rain Paharia:

Bryan, have you played, like, the modern? Like, this sounds a lot like modern, competitive Tetris.

Bryan Cantrill:

I this is where Adam would point out that I would be wrong to be claiming that. Well, then then they've knocked off Tetris too.

Rain Paharia:

Yeah. I know. Right?

Bryan Cantrill:

No. This and actually was inspired by, in many ways by Wesleyan Tetris, which is another Tetris train. It was not networked, but would screw up your game. And, anyway, it was a lot of fun. I would, so I I'm I'm just gonna you're you're being a complete gentleman, and I'm I'm just gonna say it.

Bryan Cantrill:

You're a better Battle Trust player than I am.

Adam Leventhal:

I was just waiting for that. Thank you. Alright. Thanks, everyone. That's it for today's episode.

Bryan Cantrill:

We can actually, like, we can actually now end the podcast. Actually, there's to be no more episodes. But you and I had some absolute clash of the titans on I mean, you and I and the thing is when we go at it, it's like a thermonuclear exchange. It is like it it is like Soviets versus it is Warsaw Pact versus NATO full nuclear exchange. It just does not last very long.

Bryan Cantrill:

Fair. When in contrast, when when Matt Ahrens, ZFS the cofounder of ZFS, early, early, early in ZFS, so a lot of things are unstructured, it's just easy to procrastinate, Bridget working on her PhD early in her dissertation, easy to procrastinate, and those two both basically sucked and they would have these games that would go on for hours, unable to kill one another.

Adam Leventhal:

Two kittens trying to kill each other.

Bryan Cantrill:

Two kittens trying to kill one another when actually the kittens have other things to do, actually. And so, it almost like I I mean, I was getting a little bit worried. I'm like, we like, ZFS might not happen because of Battle Tris. Like, that's how early it was for ZFS. It is it was early, early, early for ZFS.

Bryan Cantrill:

Sorry, Orin. You're getting much more than your bargained for here. Well, I promised we're gonna get the right two. We are we're we're sailing home. I promise.

Bryan Cantrill:

We're gonna but so alright. So Netras was this curses based knock off of Battle Tress, which, the whole value of it was was curses based. I I kinda like curses had a bit of a stain for me, but but curse have you ever used curses as awful? We did Curses is awful.

Adam Leventhal:

Yeah. I have used awful awful. I I have used it for, like, the most pedestrian tasks, and, yes, it's awful.

Bryan Cantrill:

And, Orhan, have you used curses? Have you had the Bright, like, a c application in curses using curses?

Orhun Parmaksız:

I think I did. Yeah. But it was a long time ago, actually. So I don't remember much about it, Sally.

Bryan Cantrill:

Well, that's good. It's it's it's bad. Just let me just take our word for it. It is very, very bad. And that was kind of the state of the art.

Bryan Cantrill:

And I and I'm sure that, like, I'm sure, like, a Python must have good I mean, I'm sure QEs were being starting to blossom elsewhere. Obviously, htop and you get some other applications that are, I mean, Norwin, maybe this is a good place to kinda tack you in here. What's your history with respect to these terminal applications? Because my my read on this is that, like, this is something that was not happening nearly as much ten years ago.

Orhun Parmaksız:

Yes. So my personal history with the terminal and command line actually begins in, I think, 2036 or some some sort of, you know, around that times. I was before that, I was kind of, like, you know, learning programming and, like, trying out different technologies and stuff like that. And then, I basically met with Linux and then, started using Arch Linux, by the way. And, you know, I was just from that point on, I was just, like, a terminal geek.

Orhun Parmaksız:

And then, my first ever Rust project was a Twi project. So, and then it kind of, like, opened many doors about the possibilities of the terminal and command line and stuff like that. But I'm not, like, really, you know, I don't have a very long history with the terminals and stuff like that because, you know, I I just kind of, like, learning about other things, back then. You know, They also, like, I did some GUI programming too. So, yeah, I basically started off with, just trying out Linux and then kind of, quote unquote falling in love with the command lines, and then, I started to learn more about it.

Orhun Parmaksız:

I always had some kind of interest or, like, admiration towards nostalgic technology, some retro stuff, so to speak. So, I basically, like, learned, many things about terminal after that point, but I didn't, like, really, you know, born into the terminal world to so to speak. I was more into, like, you know when I was, like, first met computers, it was, like, Windows, Vista, and stuff like that. So, I I didn't have much thermals going on back then, basically.

Bryan Cantrill:

Well, I think it's interesting you kinda mentioned that, like, the nostalgia aspect of this because the thing that I find so fascinating and, like, why because we do not use TUI's at Oxide out of any sense of nostalgia. We I mean, although, I guess, the nostalgia doesn't hurt, but the, I mean, because you really need the there are so many, especially on the server side, where it's like all I actually have is a is a shell prompt. All I've got is the ability to exit. I got a terminal, but I don't have a browser. I don't have I don't have you I don't have a network connection.

Bryan Cantrill:

I'm over a serial line. I don't have I mean, I just like the terminal is the thing that is actually the lowest common denominator that you know you've got absolutely everywhere. So the irony is that, like, the nostalgia kind of brings you back to a spot where you're getting to also, like, real ubiquity. And I mean, I think that and I I mean, Arnaud, you gave a great talk, just last week at Fosdum, which we'll definitely link to. One of the things I mean, there are many favorite parts I had about that talk.

Bryan Cantrill:

You were showing Ratatouille on the Minitel, which is an old, have you ever seen a Minitel? Adam?

Adam Leventhal:

Never. And

Bryan Cantrill:

Yeah. So the yeah. Go ahead, Orin.

Orhun Parmaksız:

So, somebody in our community, they had this very old, terminal hardware. I think it's, like, for telecommunication or or some some sorts. It's like, like, some, it has some special protocol that it it uses and some kind of, like, you know, special things going on with it. It was, it it was, created in, like, 1980s or, around that time in in France. And this guy just decided to basically put rotatree on this hardware, and he basically, like, shared his whole adventure with it in our Discord.

Orhun Parmaksız:

He was like, okay, guys. I have this hardware. I I wanna, like I have this old terminal, to be specific, and I wanna, like, run on this. And he shared some videos, like, rendering certain widgets and so on. And at at some point, it was, like, rendering fine, but, like, like, it was just buffering a little bit.

Orhun Parmaksız:

And then we kind of tried to figure out why and so on. And, basically, he just made it at the end. He created a Rust library out of that, which enables you to render tweet things on Minitel. Just very mind blowing to me as well. Because, you know, when you think about these, like, rather three, as a library and, like, all the all the other twees that we are using today, those are, like, modern applications that we use today.

Orhun Parmaksız:

Right? But this this thing is has a very different, like, special value to me because, I mean, this is not, like, super useful, but from, from a, like, nostalgia and, like, the experimentation or the retro computing standpoint, I think this has, many good lessons to be learned, because, you know, it's very, it's one of the oldest, like, hardwares that that is running RoTA today.

Bryan Cantrill:

Well, absolutely. So one, a couple of things. And I I I, if you are if you are French and of a certain age, if you are if if we've got any anyone who's a a Gen Xer and who is French, I mean, the Minitel was, extraordinary. And I, then you ever, you've never seen one of these things or used it?

Adam Leventhal:

No. No.

Bryan Cantrill:

So I, I had a homestay in France, in, 1991. And the family I stayed with, like many French families, had a Minitel terminal, and it was insane. It because it was basically like a it was an it was an Internet. It was a proto Internet, and you could do all sorts of things on this thing. You could it it was like, wow.

Bryan Cantrill:

This is what would happen if, like, BBS's took over the world. I mean, it was like you could book train tickets on it. You could it was amazing. And it was, so I mean, it was like you're you're tacking into some super deep, deep, roots there. And then but I also love the fact, and Orhan, to be to your to your point about, like, the that going back and operating on these very resource constrained machines has a lot to teach us.

Bryan Cantrill:

You know, when we had, Ron Minnick on on the metal way back in the day, Adam, he was talking about how much creativity comes from constrained resources.

Orhun Parmaksız:

Mhmm.

Bryan Cantrill:

And, and we certainly see that with Hubris running on microcontrollers. Right? I mean, Hubris runs the smallest system that Hubris runs on, an M0 plus has, 64 k of ROM, eight k of of of SRAM. And this is where Cliff is like, yeah, and it should run-in 32 k. But, like, I've never run on a system that's that small in my life.

Bryan Cantrill:

Mhmm. I mean, my my first computer had 256 k of RAM. So and and it does require to get really creative or just to your point of, like, you have to, like, now it must have been really fun to kinda dive into that problem of, like, okay. How do we make this thing run well on this terminal from the eighties? This terminal that is, like, from a Moore's law perspective, I mean, probably running at do you know what the clock rate was on that terminal?

Bryan Cantrill:

I mean, it is probably on the order of, like, a single digit megahertz.

Orhun Parmaksız:

Yeah. I don't remember the clock rate, but the the rep repo that I just sent to the chat contains all of the information. This guy basically created a, like, interface between, the Minitel and, and Ratatree using ESP 32 and some other other stuff as well. It's like I mean, if there was a, like, a conference talk that that is about this, I would just listen to it. It's super interesting for me and I think this is kind of like, you know, we we need some more details about how this really happened because, you know, this guy showed up on this discord one one time and then next time there was a Minitel running Rataty.

Orhun Parmaksız:

So, yeah, some some parts still mystery to me as well.

Bryan Cantrill:

Oh, that's awesome. This kinda tacks into I loved, Adam, where we were talking of to the Shreiber's folks about deep seek and this kind of, like, mysteries that happened in the Internet and kind of, like like, the the the hundred language coin anyway. You're just like, wow. This is this is amazing. That is great.

Bryan Cantrill:

Yeah. And I and I heard I'm totally with you in terms of, like, I would I would absolutely go watch that talk. Just outstanding. Okay. So then so you are getting into terminals, and is that kind of before?

Bryan Cantrill:

When did you discover Rust in all of this?

Orhun Parmaksız:

So, I I kind of got into open source by accident. I I was, like, creating fun projects and sharing them with people on the Internet. And then I discovered GitHub. I started uploading stuff to GitHub. And then I was like, okay.

Orhun Parmaksız:

This is called open source. Then, I just wanna keep doing this. Right? And my my mindset was each time I create a new project, I wanted to try something new. So, I I learned about, for example, the Go program language and created some CLI tool.

Orhun Parmaksız:

I learned about Python, Java, and so on. So I was kind of, like, experimenting with different languages and different tech stacks just to just to, like, you know, build cool stuff, not to Yeah.

Bryan Cantrill:

That's great. Yeah.

Orhun Parmaksız:

And and at some point, I had one friend. He said you should learn Rust. Rust is pretty good. And it was around 02/2018.

Bryan Cantrill:

I was gonna ask yeah. Yeah. Yeah. I've that that's interesting. I because I do think 2018 is a that's when I learned Rust as well.

Bryan Cantrill:

And I I really think that's a major inflection point for I think kind of Adam in your when's your block entry? Twenty fifteen? When is your block entry? Yeah. That is that just, like, just seems exceedingly painful.

Bryan Cantrill:

And by 2018, Rust is there there are a lot, it's it's I just think it's much more approachable in 2018.

Orhun Parmaksız:

Yeah. Yeah. And, yeah, this this friend of mine, he he was, already, like, creating, small Rust tools and so on. And he was quite hyped about it like everybody else. So I was like, okay, let me just give it a try.

Orhun Parmaksız:

And, I had one project idea which, I had in the back of my head for for some time. I wanted to basically monitor the the Linux kernel because I was, like, running in multiple commands to check what's going on in the kernel, you know, demask and, like, other stuff. And, just wanted to, like, visualize the kernel modules as a list and then see the details of that module, what it does, and so on and, like, monitor the activities. So, I discovered that, discovered a similar app, not very similar, but, like, you know, a dashboard app. It was, Spotify Twi, And this was, written in Rust using the Twi library, Twi RS.

Orhun Parmaksız:

So I was like, okay. I wanna learn Rust and I wanna build this thing. I already have some project as a reference. So maybe I can just, like, read the code a little bit and then try to, like, follow the documentation on the side. And maybe I can just, you know, make this thing happen.

Orhun Parmaksız:

And that's basically my first entry to Rust. I created, this project, you know, this three project. This was my first Rust project. It was quite difficult actually because I was very overwhelmed by all the compilers' errors and all the new concepts and stuff. But, at the end, I basically created this project and I shared it with people and I've really, like, enjoyed, the the feedback and the the, like, you know, the the ecosystem of Rust.

Orhun Parmaksız:

Because for once, I felt like I was engineering something, if that makes sense. Because for the other languages, I was like, okay. There's this thing. I wanna do this thing. Okay.

Orhun Parmaksız:

I gotta use this library and, like, very straightforward. But for Rust, it was, like, more, like, kind of painful in a good way. So, so it it was it was a good experience, learning experience as well. And after that point, I kind of, like, got stuck with it. And, yeah, I cannot really move away move away from it.

Orhun Parmaksız:

It's a it's a good thing. Don't get me wrong. But, you know, I'm basically that's my entry to Rust then, please.

Bryan Cantrill:

That's amazing. I was gonna say, like, oh my god. Spotify Tooie, where have you been my entire life? I've I've never heard of Spotify Toohey. It looks Yeah.

Bryan Cantrill:

Great. It is is there a more active work than the one I just Yeah. Just stupid? It's like Yeah. I'm like, oh, last commit four years ago.

Bryan Cantrill:

It's like, well, maybe the Spotify API hasn't changed much. And then you go to issues, it's like, doesn't work, doesn't work, doesn't install, doesn't work, doesn't work, doesn't work. You're like, okay.

Orhun Parmaksız:

Yeah. There is this, more active one, Spotify player.

Bryan Cantrill:

I Okay. Good.

Orhun Parmaksız:

Package this for, Arch, and they seem pretty active, so it should be good.

Bryan Cantrill:

I, I would love a terminal based Spotify player. This this would be life changing for me. So I'm sorry not to turn this podcast into this particular application, but that would be really, really life changing for me. Yeah. So it was that using what was then two ERS?

Bryan Cantrill:

When does it where does kinda two ERS come in here?

Orhun Parmaksız:

So two ERS is, is a library maintained by it was, like, maintained by a single person, and, Florian, his name is. And he was, like, kind of, like putting a lot of effort into it, creating releases and so on. And I kind of like tried to contribute to the repo a bit back then too, and it was like, I don't know, created in, I don't remember when it was created actually. Hold on. I think it was like a couple of years before my first entry to Rust but I'm not sure.

Orhun Parmaksız:

And, I. After that point I basically kind of like liked the the Twi ecosystem and, like, the Twi library, Twi RS library, and kind of, like, kept creating other Twis and also, CLIs too because, I wanted to, like, do other projects in Rust. I enjoyed enjoyed the first one a lot. I kind of, like, wanted to learn more about it and so on. So, I used Tuileries in two other projects of mine and kind of, like, I was very dependent on it after that point, and there's like there isn't any other alternative at that point.

Orhun Parmaksız:

It was just Twi, in like, when you search for, like, how to how to create Twis in Rust, it was just Twi RS. And, I didn't know it was unmaintained until somebody pinged me in one of the discussions. And

Bryan Cantrill:

Oh, it was twiz. It was actually unmaintained. Okay. Yeah.

Orhun Parmaksız:

Yeah. It was, like, maintained, but, like, the the author was, like, I'm I'm busy, guys. I don't have time. Maybe we should do something about it, like we can create a community around this maybe. Yeah.

Orhun Parmaksız:

Or like add people as maintainers and so on. So I was like, invited to discussion by, other other people who build Twiz. Somebody said, yeah, Orhan created these other tools, maybe he can be involved too and so on. And at that point I knew that I should get involved because I liked the tweed library a lot and it was just, my like, you know, one of the like, I think it was one of my favorite libraries in Rust. And, I basically wanted to kind of lead this, kind of like, you know, organization movement thing.

Orhun Parmaksız:

We kind of, you know, discussed how what do we do, how do we keep this thing alive, and so on. And, one of the, like, one of the, like, most straightforward options was was to just, like, get get access to the repo for maintenance, but the author was kind of not there a lot. He was, saying something and then disappearing again, and there were, like, too much delays between those times, and we had to do something at that point, with a couple of other people. We decided to, create a temporary fork and, maybe we were thinking maybe we can just merge, like, upstream those changes after the author is back. And then, the author was not there still, so we kind of moved on with this temporary fork, created a discord.

Orhun Parmaksız:

We we had some meetings and so on. We we really need needed to move quick because there were other forks too. Some people just forked the tree library and started their own projects. So, we just wanted to, have a central place for this project and, like, you know, central place of development, communication, and everything. So, you know, we forked that.

Orhun Parmaksız:

We had some meetings. A lot of other people joined us. I announced this thing on Reddit. It's really helped us to, bring more people in. And somebody just, said, said that we should rename it.

Orhun Parmaksız:

So, one of the suggestions was. I still don't know who suggested that. I searched on Discord a couple of times. I don't know who was the first who suggested it. I don't know if it was in a meeting or it was in GitHub discussions.

Orhun Parmaksız:

I really want to just give props to that person, but I don't know who that was. That wasn't me, for sure. So, was, you know, you know, the the obviously, the name, and, somebody created a logo.

Bryan Cantrill:

Great. I I I agree with you about the props to the name. So I okay. So when was this? Was this in with when was this?

Bryan Cantrill:

Because I started using it when it was two it was two ERS when I when I started using it, in, and I think Andrew and Rain would well, I guess, Andrew, you would be the one to correct me. I think Humility dashboard was our first use of two ERS. I don't I don't know if that,

Bryan Cantrill:

maybe not.

Andrew Stone:

Two yes. The dashboard was definitely before Wicket.

Bryan Cantrill:

So, so, Orin, I I was using two ERS as part of Humility is our is our debugger for Hubris. And Hubris being an operating system, not merely. By the way, if you wanna name an an operating system you want to be searchable on Hacker News, definitely don't name it Hubris because Hubris is used in, like, Hubris is used a lot on Hacker News in its actual

Adam Leventhal:

Just call it Dunning Kruger OS. That'll be easier. Call

Bryan Cantrill:

it Dunning Kruger OS. Exactly. Call it flagged OS. Yeah. No.

Bryan Cantrill:

Absolutely. The, so the Humility is our debugger for that. And, we, after we had done bring up of our initial gimmick board, it was like, boy, we really wanna be able to kinda visualize all of these sensors in the system. And, it it was work that I did kinda over the holidays at the end of twenty twenty one into early twenty twenty two, based on two ERS. Loved it.

Bryan Cantrill:

Like, the mic, this is really, really great. And then, I I I don't know. The renaming must have happened. I think either 2022, maybe even 2023, but with the I I I loved I'm like, the only thing I actually like, the name, like, these guys need a better name.

Andrew Stone:

But you like, you know, you never wanna make

Bryan Cantrill:

that complaint. You know, Adam, like, you don't wanna be like, the name sucks. Just like

Adam Leventhal:

You're right. Your kid's gorgeous, but

Bryan Cantrill:

tough name. But tough name, Adolf, really. The I mean, you you just don't wanna make that complaint. And so Orhan, I thought it was great. Obviously, I was not the only one that felt that way.

Bryan Cantrill:

And I think Ratatouille is such a good name.

Adam Leventhal:

Yeah. Orin, I really appreciate the description like this like, understanding this because the way we stumbled onto this was, like, updating a dependency. Like, I remember updating some dependencies, seeing that two ERS was, like, pushing us to ratatouille and just, like, following along blithely, not understanding, like, this this really complicated community building that you were doing underneath it where it sounds like the or that original author, Florian, was not unsupportive, just also absent. Yes. That there was some urgency to, like, get everyone rallied behind one thing rather than fragmentation.

Adam Leventhal:

But I would say that mission accomplished in terms of our experience just being, like, going to update a dependency and moving right along.

Orhun Parmaksız:

Yeah. So I think it it was, like, two year like, two years from now on like, two years two years ago, from now on, that we kind of, like, started this. And, we kind of, like, tried really hard to reach out to the, floor like, the the author, Florian. And, sadly, we we we needed to move really quickly. So, we just, you know, needed to do something about it.

Orhun Parmaksız:

So, we kind of, like, renamed it, around this time, two years ago. And, the we kind of wanted to wait until he was back because we didn't just wanted to, like, you know, quote, unquote steal his project and just move on with it. We were always hopeful about just upstreaming our changes. And one day, he he came back, and he archived to IRS and added a note to ReadMe, at the top of the ReadMe saying that to IRS is now wrote a tweet. Go go ahead and use that project.

Adam Leventhal:

And he did that, like, without any coordination? It was just like, alright. I give up.

Orhun Parmaksız:

No. Yeah. He didn't give give give us any signal or anything. And, yeah, that day, I basically created the the Rust security advisory for, like, renaming, like, you know, changing two ERS references to router three and, you know, two ERS is deprecated and so on. So that happened very randomly.

Orhun Parmaksız:

We were just kind of hoping that we might upstream our changes. But at that point, we made a lot of decisions. For example, we decided to, like, continue with the the same versioning scheme and, like, I don't know. We we kind of decided many things. Like, we didn't want to use unsafe, for example.

Orhun Parmaksız:

Like, every, like, little detail, we just discussed it on, on on our meetings and also GitHub discussions. And, all our all our, like, decisions are just, you know, community decisions. At that point, we were, having polls for the name, which was not really, which didn't really make sense because, you know, Rotatouille is obviously picked by everyone. But for the logo, we had some kind of a like a pull for it. Everyone just designed a logo and the current logo was designed by someone in the community.

Orhun Parmaksız:

And there were actually great submissions to that. I also tried one which wasn't picked. I'm happy about that because the current logo is really great. And yeah, so we we kind of like building this community on the side and, kind of, like, moving towards, as a as a new project, basically. But all all our, like you know, everything really depends on TRS.

Orhun Parmaksız:

And the funny thing is after after some point we enabled GitHub Sponsors and, we were just basically accepting, like donations and so on. And there is, one one company would really just donated some money to us and we were like, okay, what do we do with this money? We still don't know what to do with this money, so we decided to maybe like give it back to the original author, you know, support him a bit. So, I sent him an email saying that we just wanted to, like, support him a little bit because he created free of it.

Bryan Cantrill:

Let's see if he's to this one. I've got I need to make the check out too. Oh, hey. You are there. Oh, okay.

Orhun Parmaksız:

Yeah. So, he kind of, like, rejected very kindly. He said that, guys, I don't need this. You kind of, like, did the best thing ever by just, you know, keeping this project alive. Thank you.

Orhun Parmaksız:

I don't, need any donations or anything. So, yeah, he's he's pretty happy with the current state of the project, I would say.

Adam Leventhal:

That's great. That's a real one. Yeah. It's great to hear, like, that he I mean, that that it was also so well supported. I don't know.

Adam Leventhal:

That that he, you know, didn't wanna hand over the repo, but did wanna see it continue. It just sounds it's a great story just to to hear that continuity.

Andrew Stone:

It is really great. I I noticed the whole, like, trying to talk about contributing back. You know, it was a very delicate process. And you all did a, like, a great job managing that, and I'm glad to hear that the original author is was happy with it. But, like, I also noticed it seemed like as soon as, like, Ratatouille became a thing and became the de facto standard that, like, development picked up a lot.

Andrew Stone:

Like, it seemed Yeah. Like, it just started going like, it ramped up very fast. It was like you guys are being polite and not contributing that much code or something, and then boom, it it exploded. Is that is that the case, or is that just the weird outside perspective?

Orhun Parmaksız:

So, when we migrated to a new repo, we actually wanted to keep the the existing PRs in the original repo. And the only way to do that without, you know, getting access to the repo is basically, like, writing a script that will just create a PR from, like, each previous PR. So I I created a very ugly ugly script that will just, you know, go to each PR and also each issue and, like, take everything from like, take like, any comments and everything and just, you know, create, like, the exact duplicate of it into the new repo. So that way, we kind of, like, transferred all the PRs, and slowly, we started working on those PRs because there were, like, a lot of PRs. Like, there were around 50, I think, or, like yeah.

Orhun Parmaksız:

Around 50 probably. And, like, we had these 50 PRs laying there. Most of them are just ready to go, but not being reviewed or, like, not being rebased. So at that point, we had a lot of things to do. I tried to be active on that side and the other other people as well.

Orhun Parmaksız:

And over time, we kind of, like, went over everything. And also, there were new users, so new issues and new PRs. And we were just kind of lucky that we had some great people joining in, and they kind of, like, picked up the maintenance. And now we're we're, like, three people doing all the maintenance, and it's moving not very fast these days, but, it's moving at least. So that's that's good.

Orhun Parmaksız:

So in the beginning, there were, like, a lot of a lot of PRs and a lot of issues to go through, because even, like, the simplest thing, was not merged. Something like, you know, bumping the Rust edition or, like, I don't know, bumping some dependency was just laying there for a long time. So yeah.

Bryan Cantrill:

Well, really appreciate all of that and also really appreciate, honestly, the way you did it. Because I had to go from two e r s to round two e. Right? So I was like, a and I was like, oh god. This is how brutal is this gonna be?

Bryan Cantrill:

I'm like, oh, this actually isn't bad at all. It was funny.

Adam Leventhal:

As brutal as a said script. Right?

Bryan Cantrill:

Yeah. And they it was it was actually new. It was good because it was a little bit more than that because they they did make some breaking changes. And but the breaking changes were all, like, good. I mean, they were all, like, pretty reasonable, and it it just didn't take too long.

Bryan Cantrill:

It was it was fine. It was it it, it was, as interesting, it was, like, well thought out. And, like, okay. No. Yeah.

Bryan Cantrill:

That that makes sense. And, you know, we're kinda they took the opportunity to change some names or some things or what have you, but it was it was light. I mean, it was it was not hard to do. You know, it was definitely not more than, you know, a couple of hours at most to get, my thing working, which is great. And then, because Andrew, were you was were you born on Ratatouille or were you because talk about kind of our other uses of this, because we've used it a lot.

Andrew Stone:

Yeah. No. It was yeah. Tu e r s, I started with, for Wicket. But, like, so I the project started, like, originally so 2022, like, Oxcon '20 '20 '2, Adam, John, and I sat down to discuss, like, how we were gonna initialize the rack.

Andrew Stone:

And we came up with this rack setup service and stuff, and we needed some way to drive it over SSH. And so I was just gonna do a CLI because I was I was just saying like, originally, I was like, oh, John just got hired. Like, John's been here for a little bit. Like, he he can take this on. Right?

Andrew Stone:

And then, like, we all got swamped. John built this huge thing, MGS, a bunch of stuff. And I was like, alright. I guess it's it's up to me now because, like, I've kinda finished a few things. And, and then I saw

Bryan Cantrill:

that is the management gateway service. So then and that is what allows us to kinda to to go to talk to all of our service processors. That's kind of that that gateway service that sits on, one of our SUDs that's attached to the switch.

Andrew Stone:

It's both it sits on both scrimlets. So we have redundancy. So the scrimlets are her, yeah, the switch attached to gimlets, which are our server SUDs. And And so

Bryan Cantrill:

And the gimlets are ours. Our compute sleds.

Andrew Stone:

Yeah. We have kind of a interesting architecture there where we process well, I I I'm not gonna get into network architecture. I believe there's plenty of, podcasts on that and documents on that. Yeah.

Adam Leventhal:

We'll we'll we'll have something in the notes that we had a couple of episodes on this.

Andrew Stone:

Yeah. So but, like, I was gonna do a CLI, and then Josh, built this manufacturing, UI in his own, like, Tuohy stuff because, as Josh said, like, other people's software is, you know, the greatest frustration. I'm paraphrasing there. But built his own thing, and I was like,

Bryan Cantrill:

hey. Melville?

Andrew Stone:

I don't know. But, yeah. I, like, I remember pinging Josh and being like, hey. Your thing looks awesome. Like, how do you how do you do this?

Andrew Stone:

And I was like, can I get your philosophy on building UIs? Because, like, I'd I'd done a little handwritten UI stuff using DirectX for a video game back in around 02/2003. But not much, lately. You know? I'm a systems guy.

Andrew Stone:

I don't write a lot of UIs. And, and then Josh showed me his thing, and I was like, I started I kinda had some time to play around with it, and, I saw that we were using two ARS. I think I saw that we were using two ARS, and Hubris. And then I went and, and just started playing with it and, like, I whipped up a very quick UI that was very, very ugly, but the the things that did right was that, there was a bunch of animation. So I remember giving a demo and, like, there was a help menu that just, like, animated out from the side.

Andrew Stone:

And it was it was hideous, but it was cool and it was a a starting point. And so then we were able to get Benjie, our designer, and just be like, hey. Like, you should structure things like this, and he gave me some kind of wireframes. And then, yeah, I was off to the races. But, yeah, it was off to ARS

Bryan Cantrill:

in the beginning. Time Wicket comes up, but we man, we gotta get, like, a the a ASCII movie out there of the the rack the rack setup process because it is gorgeous. It is so Yeah.

Andrew Stone:

But there was also one Friday where I think my wife went to sleep, and, I stayed up late, rendering the rack. So there is a full, like, screen rack rendering of the rack using, anti characters.

Bryan Cantrill:

And it's It's so I mean, it's I

Adam Leventhal:

don't wanna give it away too much, Andrew, but was that that sleepless night when I guess your wife went to bed early. Is that when you made the, like, rack defender game Easter egg that's also built No.

Andrew Stone:

No. No. So that was that was on the way to Oxcon twenty twenty three or '24. That was on the plane. I wrote that on the plane.

Andrew Stone:

And it has interestingly enough, it does have like, the the rack falling, racks falling from the sky do accelerate with gravity. So I tried to, you know, make that somewhat realistic. It makes for kind of weird gameplay. And as I believe you mentioned on another podcast, I am terrible at it. So I really need to merge that

Bryan Cantrill:

into terrible at it. I mean, I I I I mean, like, look, I'm only the second best battle trust player, but, you know, I really expect when you even go and you drop them I mean, it is great. You drop the racks onto a truck. And I think are you driving the truck? Is that the No.

Andrew Stone:

So the trucks random trucks, just go across the bottom of the screen, and you have to drop the racks on, and you get a certain other number of racks. And they have to land on the truck. And then, you know, if they make it to their destination, you get reimbursed a new rack. Like, you've sold a rack now. Right?

Andrew Stone:

You didn't destroy it in, manufacturing. And so That's right. Yeah. So now you get a new rack to sell. And it just goes on forever.

Andrew Stone:

Yeah. But, like, the the speed like, rack or, like, rack speed up. You know, the truck speed up. There's there's varying things. But, like, they always kinda maintain their distance.

Andrew Stone:

They don't crash into each other. But, yeah, it was just kind of I was like, how can I build a simple game that makes sense for oxide? But that was, like the most challenging part of that was finding characters to be able to draw the racks in such a small, size. Like, make them look decent and to draw the truck wheels and stuff. It's all just anti characters thing together and things moving across the screen.

Andrew Stone:

So that's still on a branch because I haven't merged I haven't, like, written the code to integrate it into Wicket properly.

Bryan Cantrill:

Oh, it was sent for Verger.

Andrew Stone:

Oh, wow. Okay. Yeah. Yeah. So, like, this is why, like, it's been complained.

Andrew Stone:

I think Laura brought it up the other day. Like, didn't wasn't that demoed, like, two years ago? I guess. Yes. Yes.

Andrew Stone:

It was. So maybe I should do that some weekend. Maybe I'll

Bryan Cantrill:

I mean, you know, frankly, like, I I got we got lots of people that have bought racks so they can play the game while they're installing it. And, like, what do I even buy this thing for? Like, this thing is the this is the boat anchor if I can't actually play this game while it's installing it.

Andrew Stone:

Yeah. The install I mean, I built it because I think the installs took longer a while back. Now they go pretty quickly. They take, like, I don't know, fifteen to twenty minutes to, like, go through the whole process. But that's still fifteen, twenty minutes you could be playing a video game.

Bryan Cantrill:

You could be playing a video game. Absolutely. Yeah. Yeah. But the and so this is happening over SSH, importantly.

Bryan Cantrill:

Like, this is why, like, why we I mean, any user interface is gonna have to be a TUI that's that is at this because we don't have the rack. The rack is not configured. The rack doesn't speak it has got no networking connection other than the than this connection coming out the front on the tech port. Correct.

Andrew Stone:

Yeah. That's I mean, that's that, like, that's why it was gonna be a CLI, right, until I get inspired. But it's it is pretty cool to be able to just do this over this SSH connection. And SSH provides us other capabilities too. Like, RAIN RAIN is here, and RAIN RAIN, hooked in mechanisms to SSH to allow us to, either open the UI or to, like, upload, a tough repo, which is how we manage our software updates over that SSH connection.

Andrew Stone:

So it's it's pretty handy. Like, we have multiple ways to kinda interact with it. So you don't have to do everything through the through the text UI. I think it was Rain also who wrote the like, you kinda have to click on we did this on purpose, but you have to update all the all the machines in the individually, by all the slides in the rack by clicking on them and, like, hitting install. And they all show up, like, your UIs.

Andrew Stone:

You can view their their, like, their current status, through, like, a pop up, as you scroll through the slides, in the rack display or in another, pane we have. And so Rain wrote, like, a whole update thing for that. And there it it's it's pretty cool. And John John has worked on this significantly as well. But, like, having it available over SSH allows us to kinda step back and say, okay.

Andrew Stone:

Like, we can do all this in the in the TUI, but, like, maybe when we're doing development, we wanna drive it through some automated system. And so you can go to, like, kind of a text view where it's almost like a CLI, and it just it's just outputting all the steps and run you can you can kick off the updates for every slide all at once, except both streamlets because the slide you're connected to, you can't really do that with. Go ahead, Ryan. Explain that better than I just said.

Rain Paharia:

No. No. No. I think, I think I think that was great. I think, you know, one of the things, is interesting where there is a a spectrum of, like, how, you know, how, like, high fidelity it is and, versus, like, how, like, in what places you can use it.

Rain Paharia:

So so for example, a TUI is, like, a TUI is amazing for interactive views. Right? But maybe for, CI, it's a little bit more of a challenge to actually render that in the logs and so on. So, one of the cool things, that we were able to build as a as a team was the ability to have multiple views, where there is the two way view for interactive views, and there's also like a CLI log based view for either batch use or, or use in in CI. And and so, you know, the way it's architected, like, you can see you can start the process with one and then see the progress with the other.

Rain Paharia:

So it's, you know, it's all kind of, nicely architected in that way.

Bryan Cantrill:

Yeah. That is that is awesome. And I the other thing, Rain, that I also love and or, this kinda gets to one of the principles that you outlined for yourself. You know, you in your Fosdum talk, you mentioned that, Rust is right once, run everywhere. And the only Windows software I've ever developed in my life has been software and Rust.

Bryan Cantrill:

So when I developed, like, the humility dashboard, for example, people were just the the the double e's have got to use Windows for a lot of the software that you they need is only on Windows. So they've been able to use the dashboard on Windows, and everything just works. It really is. It does run everywhere. Do you wanna speak to a little bit of that in terms of your because you're able to do all this stuff that Rain is talking about where you can have the kind of multiple views.

Bryan Cantrill:

I mean, Rain, we don't have to worry about it not working on Windows or some other terminal. It just it just works.

Orhun Parmaksız:

Yep. So, the the back ends, let me just, start off with the back ends of Resa three because, that's where it gets really powerful. So we we currently support, like, three three back ends. And two of them is, Linux and macOS native, and one of them is actually cross platform. And it's it's called a Crosstern.

Orhun Parmaksız:

It's another project. It's it's a quite quite good project, actually, like, well maintained and so on, and it gives you, like, a lot of abilities to control the terminal, in a cross platform manner. So, when we use cross cross term with, Reta three, the this this three that you have built will just run on, any terminal on on, like, cross platform, Windows, Linux, macOS, whatever. So, that's where it gets really, powerful. The other back ends, though, for example, we have the Termion back end, which runs significantly faster on Linux.

Orhun Parmaksız:

When you compare some basic rendering on Linux, with, like, cross term versus Termion, Termion will be just faster because it's native Linux and so on. So, yeah, we basically want to, like, give you these options, but this doesn't mean that you you are just limited to those options. This, this Minitel thing that we have talked about, it probably and most likely implements a custom back end that enables you to render on this, you know, old terminal. And this applies to other projects as well. So in theory, if you implement this back end trait on, on something on some screen, some canvas display, whatever you have, and at that point, you should be able to, like, render something on that platform.

Orhun Parmaksız:

So that's, what I was experimenting with, during my Fostom talk because I wanted to for a long time, I just wanted to render something on the web. There were some other projects which does that, but, I didn't like their approach. I was like, okay. Maybe I can do it, like, in a simple way. So I kind of challenged myself for it because I've been just thinking about this Resatue web render for a long time.

Orhun Parmaksız:

So, I I was like I was like, not really, I I didn't have time or maybe I was just lazy. I don't know. But I submitted this, talk to Fostem, and it got accepted. So at that point, I just had to do something. You know, I kinda, like, forced myself by doing that.

Orhun Parmaksız:

And, that was, like, one month till the talk, and I was, like, thinking, what do I do? And, just, you know, live stream the whole process on YouTube. I was just, like, tearing my hair apart, trying to, like, find find a way to render twees. I don't have much hair, by the way. So, maybe because of that.

Orhun Parmaksız:

I don't know. And, like, trying to, like, find something and just, you know, forcing myself to build it. And, luckily, I I just thought

Bryan Cantrill:

just accepted talk driven development. This is the Yeah. Absolutely.

Orhun Parmaksız:

Yeah. Sometimes you just gotta push yourself a bit. So, that's that's what I did. It was quite stressful. But, I at the end, I had something to present, and it works quite well.

Orhun Parmaksız:

And sometimes people ask me what do I use for my, for example, my own website, which is going to be in the chat in a second. People think that I'm, like, you know, like, using some kind of terminal, building terminal, like, website building thing, But, no, it was just HTML in this case. And I just want to say that I used Rust and I used Resetti for for for a website. So, I have some ideas to build websites using Resetti at this point. So, yeah, I built this new library called Ratzilla, and, you know, I just very quickly hacked this together.

Orhun Parmaksız:

And I basically used the, Rataty back end to render on HTML using DOM elements or, like, you know, a canvas. And it's it's working quite well at the end of the day. There is a website built with it right now. It's still not super, like, super super well in terms of responsiveness and, like, maybe, the text and so on, but it works. And, now you can build these type of websites.

Orhun Parmaksız:

I have some other ideas. I wanna maybe build a blog using this, library or maybe, I don't know. I I'll see about it. I I have an idea which is, r v tui yet dot r s. I just want to do that using this library.

Orhun Parmaksız:

So yeah.

Bryan Cantrill:

Okay. So can I ask, like, just a naive question? So the so when you're using the web as a back end, where where is the actual code running? Is that running as Wasm? You you've you've compiled it to Wasm, and then it's running it it's all self contained in the browser?

Orhun Parmaksız:

Yep. So I'm using, I'm using trunk, trunk. Trunkrs.dev, I think. And it's like bundling your Rust code and your, your files, basically, like the index HTML and other JavaScript files into one WebAssembly, WebAssembly file, and then it just runs. It's like it's very simple, actually.

Orhun Parmaksız:

I was kind of amazed by it when I first learned about this trunk tool because I never, like, done WebAssembly development before. And, it's, like, very straightforward and works quite well. You don't even, like, do any annotations or, like, any special imports. There isn't such thing as, like, Tokyo main or something like that. You just use your f n main and just call trunk build, and gives you that that WebAssembly content, which you can just statically host it.

Orhun Parmaksız:

I'm using, GitHub actions to build those websites. I basically call trunk build and just put everything on GitHub actions, like, statically. So, yeah, it it's quite straightforward.

Bryan Cantrill:

Yeah. That is wild. That's really interesting. And then if you your website, though, is your website built with Ratzilla then? Mhmm.

Orhun Parmaksız:

No. Not yet.

Bryan Cantrill:

Not yet. Okay. Got it. It's the terminalcollective.org is the Razzoa, like

Orhun Parmaksız:

Yeah. Exactly.

Bryan Cantrill:

Yeah. That was really cool. There you go. That's really cool.

Orhun Parmaksız:

Yeah. The the live streams were quite fun, actually, because for, like, for, like, I don't know, two hours, you just watch me suffer. And at the end of the day, I just build something looking like that, and it's quite quite pleasing. But, I mean, sadly, first two hours is just pain because of, because of the rendering stuff. And I actually, kind of, like, render some some very cool looking animations, accidentally during those live streams.

Orhun Parmaksız:

I was, like, rendering something wrong or just one cell is just not, like, correctly positioned. So everything just shifts, and then you got, like, a, I don't know, some some kind of, like, a floating, animation or something like that. Yeah. It it was quite fun to watch, and quite fun to just work on. I'll try to find one of those animations now to send it to chat.

Bryan Cantrill:

That's really cool. And and so could you describe a little bit in terms of, like, when you because there are some other things I did. Some some things that were kind of approximating this, but you're like, this this is not the way I wanna go do it. Can you describe the philosophy that you have in terms of, like, the way programs should be able to interact with these back ends? Because I think it's kinda revealing as terms of the the philosophy and ratatouille.

Orhun Parmaksız:

So, what do you mean by interacting with the back end?

Bryan Cantrill:

Well, it's just like I mean, you've got a real emphasis on keeping it simple for the programmer. Mhmm.

Orhun Parmaksız:

Yep. I mean,

Bryan Cantrill:

I don't wanna put words in your mouth, but that's what it felt like from watching that. It's just like you you you want programmers to not have to know a lot about the innards of these back ends. You wanna be able to have a clean boundary. Is that

Adam Leventhal:

is that

Andrew Stone:

up there?

Adam Leventhal:

In particular, I mean, you you showed an example in that in the defozedem talk, Orhan, where you're you were saying, like, okay, here's Ratzatouille. Now remember this, everyone. And then, like, twenty minutes later showing effectively the same code or very similar code for Ratzilla. And and that was very impressive. Like, it's very cool seeing, as Brian is alluding to, like, you know, abstracting away a lot of the details here and letting people just, like, do what they intend.

Orhun Parmaksız:

Yep. Yeah. Okay. Got got the question now. So as a as a as someone who comes from a back end and systems development background, I don't want people to learn about, like, front end stuff, and I don't want people to learn about, most of the stuff they don't need to learn.

Orhun Parmaksız:

They you you know, you just wanna build a website. Right? So, you shouldn't be able to you should not learn about, like if you don't want, you don't wanna learn about, like, reactive states and, like, you know, like, React JS and and, like, other web concepts. So I basically wanted to, keep keep all the logic and all the complex parts in the back end and just expose an API which is as close to as the, to to the, like, the, the original Presatree API. So that was my goal.

Orhun Parmaksız:

If you check out the other projects which are doing something similar with WebAssembly, they're exposing this API, but, like, it it's not in it's not remotely close to the Resatree's minimal, workflow. So I just wanted to, like, keep everything inside the back end, like, all all the stuff there, and I just want people to build what they want. And, that that way, I think it's it's more straightforward. And one of the things that I did, which is kind of, debatable, is that I, I exposed Ratzula, so you don't have to add rats Ratzilla to your project. So you can just use ratzilla two columns rotatory, which is maybe not super, like, intuitive for a beginner because what is rotatory and what why are why there is this thing?

Orhun Parmaksız:

But, like, I don't know. I just wanted a single dependency that will handle everything. And I I just like that more, to be honest. And that's what that's what we're doing with, router three these ways as well. Before, if you wanted to create a terminal, you needed to add crosstern as well or, like, your back end of choice.

Orhun Parmaksız:

And you gotta enable alternate mode. You gotta enable sorry. You gotta switch to alternate mode and enable the row row mode, sorry, alternate alternate screen and row mode. Sorry. And then you gotta, like, create your terminal, like, construct it, and then you can create a, like, a render loop and so on.

Orhun Parmaksız:

But these days, we just, you know, put everything into a single call, called rotatory init that will just do all of these things for you, and you can just, move on with your, UI logic and application logic and so on. And it was kind of like there was a lot of discussions about this as well because we don't wanna hide these things because those are, like, useful as well. If you wanna, like, enable mouse capture, you need to, know about this crosstern back end functions and what crosstern is. So, but, I mean, at the same time, there should be a balance to it. So you wanna just build something simple.

Orhun Parmaksız:

There should be a simple API, and that's our approach to this problem these days.

Bryan Cantrill:

That's really great. When I part of this, I also love I mean, you've just built a lot of things with Ratatouille. And it feel feels like you're still doing that, which I think is is I mean, I I that to me gives you great empathy for those building with Ratatouille because you're building with Ratatouille yourself.

Orhun Parmaksız:

Mhmm.

Bryan Cantrill:

And in terms of, like, hitting these as you say, it's a balance. Like, you know, how much do you wanna you you wanna make it easy for people to build new apps, but you wanna also allow people to get into that back end where they need to for things like mouse capture, and I think it's allowing you to hit that balance. It must how do you, make sure I mean, how do you test this thing?

Orhun Parmaksız:

Do you mean or is it three or, like, yeah.

Bryan Cantrill:

I mean, just kind of in general. I mean, it it just feels that, like, there it it feels like there's some testing challenges with this. I mean, you're you've got, so many and maybe this is where you're able to lean on things like cross term. But how I mean, because you but what you've got is is remarkably robust. What what have you done from a testing perspective?

Orhun Parmaksız:

So in order to test the Resideo application, you kind of have to design your app in a way that you can test it. For example, you you can expose a render function that will take your application state and give you back, something that that is testable or maybe take a back end. In that case, you can use our test back end, which is just, just a very simple back end implementation that that is that can be used to take the whole terminal as a string and can just assert on that string. Another approach is, I which I kind of like these days is, the snapshot testing. Let me just send a link to chat.

Orhun Parmaksız:

So we we can use, like, Cargo Insta for this and also, test back end once again. So you just basically take the whole rendered state of the app, and you just add snapshots for it, and that just works. Most of the time time, people just follow this approach. It it also, like, makes it easy to see what's being rendered, And, also, like, you can just add unit tests to your functions and so on. So that's a kind of no brainer.

Orhun Parmaksız:

But yeah.

Bryan Cantrill:

Intra brain, have we played around with that?

Rain Paharia:

So we haven't actually done much testing for that. But I actually have been playing around with, snapshot testing for two weeks for a personal thing. So maybe we should hook it up into WCAD at some point.

Andrew Stone:

Yeah. I did not know this even existed. This is cool. I this is very cool. Actually, it leads me to a question though.

Andrew Stone:

Like, you mentioned, the render method and stuff like that and how you'd wanna return, like, manage your state and command that you wanna test, like, feedback and stuff to make sure things are doing what you want them to do. Like, your application is behaving well and not just what the output looks like. Do you think like, do you have any I don't know if this is a leading question. I guess it is a leading question. But do you have any, like, things that you would like to change but would just, like, break the whole model of Ratatouille?

Andrew Stone:

Or are there things, like, you really like about the model, and, like, think should be expanded upon? Like, just opinion opinions upon how, like, everything works. How you like, when you took over from two ARS, was there anything that was, like, oh, I wish that was slightly different or this was great and, like, we need more of this?

Orhun Parmaksız:

Yep. So, when we took over from, two ARS, we are sadly bound to the existing rendering mechanism, which is immediate mode rendering. And, we we should just, you know, keep everything in place. We cannot just break everything, at that point. So there were actually quite, quite a bit of discussions about re redesigning the rendering model.

Orhun Parmaksız:

And there's a very prolific maintainer and contributor to Rotatree, Josh. And he's been super active in the repo, and he he's been leading those discussions a lot. One of the projects that we are kind of inspired is, the Xylem and also the, the masonry projects. Those those are basically, like like, the projects that we are, looking up to for maybe, like, adopting a similar rendering technique. There are a lot of blog posts about how they are handling UIs in Rust, And, Josh been just, kind of brainstorming about that for the past years and so on.

Orhun Parmaksız:

We have a forum that we kind of, discussing this. I'll send the link to it. And I would really like to see an easier, way of designing, like, designing a UI, basically, because our current approach is not very flexible when it comes to very complex applications. We basically want to so the current approach is a bit like declarative, I think. We wanna, like, have, more of a different thing where we are, like, you know, you you you create your widgets and you kind of, like, assign an I don't know, maybe an action to it or, like, an event to it if possible and just move on with with that approach.

Orhun Parmaksız:

But right now, it's like you your UI logic and your state is very, like, separated. So you kind of, like, check the state and, like, update your UI. But maybe we we wanna, like, do something else in the future. But I'm not sure if this will actually be a part of Ratatouille because this will just change a lot of things. I was thinking and I was talking to Josh about this, and we kind of want to first try this out on a maybe, new library on top of Ratatouille, which will kind of change the the rendering, like, the UI, design, like, logic and so on.

Orhun Parmaksız:

And then maybe make it a part of Ratatouille. But, we still have time for that, and we still need some ideas. But, like, over over the years, there were, like, many other, things. There's this another project which is a bit interesting. This one is, like, an an attempt to, changing the the, like, logic of, Resideo a bit, like, making it reactive.

Bryan Cantrill:

This is a project called RizUp.

Adam Leventhal:

I knew you were gonna love it. I knew you were

Bryan Cantrill:

gonna lose your mind over this. Word to your mother.

Orhun Parmaksız:

Yeah. So Sorry. There are,

Bryan Cantrill:

like, lot

Orhun Parmaksız:

of no no problem. There are, like, a lot of other attempts for, changing the, like, the rendering logic and, like, the the whole app, like, application structure for the tree. There's this another one, tree realm, for adopting the the Elm architecture. And, you know, like, they're very, very different projects. But, we want to, like, kind of adopt something based on, masonry and xylem approach and maybe have it as a as a part of fraternity at some point.

Bryan Cantrill:

Crespo's eye is twitching somewhere. Have you ever talked to Crespo about Elm? No. But oh, so Crespo's got a great story about how he was doing a lot with Elm and had designed a bunch of things around a new feature of Elm or newest feature of Elm. And as he is going on stage to deliver to the talk, the the maintainer of Elm is announcing that he's ripping it out.

Bryan Cantrill:

The thing that he's like, well, oh, well, That may have actually It's

Josh Clulow:

a shorter talk. A shorter talk, I guess.

Bryan Cantrill:

Yeah. But, the two interrupts. The or this is this is so this is a lot of great stuff here. I mean, you're obviously looking around for a bunch of different kinds of models. And then so, Orhun, in terms of of Ratatouille, what's the, what are some of the things you're kinda looking forward towards?

Bryan Cantrill:

It sounds like you're looking at kinda different models and and contemplating different things. Obviously, with Ratzilla and different back ends, what are some of the other things that you're doing with Ratatouille?

Orhun Parmaksız:

So these days, we are trying to cook up a new release. It's been in the works for a couple of months now. And this is gonna be actually a big one because we finally modular modularizing the create into multiple parts. So, this is a good thing for, for widget developers because back then, if you wanted to develop a widget, you basically depend on which contains everything. This time, when we push this release, you will only depend on probably just Retoti core, and all the widgets will be in Retoti widgets.

Orhun Parmaksız:

The back ends will be split it into their own crates such as Retoti cross term, Retoti Termion, and so on. Also, we are kind of this will give us flexibility to, do more breaking changes, hopefully, and add more, more features to to the widgets and so on. And, yeah, this is gonna be just a quite a good refactor, and this will just, make make give us more room to develop more more things in the Rototi repo. Since now we we're, like, already modularized most of the parts, we added Rotacity macros, for example. This will be, a part of the Rotacity, but you can kind of, like, not depend on it if you're doing, doing a like a library on top of Rust three core.

Orhun Parmaksız:

And also, when we push this release and you may let's say you're depending on Rust three core, this won't change a lot, we are hoping. And this this means that for every Ratatree release, you won't be you won't need to update your dependency, and this will be just more, reliable in that sense because we won't be breaking people's libraries, widget libraries, to be specific. And, yeah, it's gonna be just a just a better way of structuring things. And, I think this is a good like, a big step towards the, UI, like rendering, redesigns and so on. So, we're kind of, like, finalizing that.

Orhun Parmaksız:

This week, I think, I will work on the release automation a bit because now we have a bunch of crates instead of just one. And, you know, we gotta just test this properly before we release it. Nothing will change for people who already depend on Ratatouille. You

Bryan Cantrill:

I was gonna ask what what if yeah. What what what Yeah. Will people need to is there a breaking change from, the perspective of those using Ratatouille, or how does that work?

Orhun Parmaksız:

So, there are small breaking changes. Not many breaking changes. Like, there are some unstable feature flags and stuff like that. But, if you're you're just a regular user, you just bump your Ratatouille dependency, and will contain all the widgets and core and back ends and everything. So nothing will change on that side.

Orhun Parmaksız:

But if you're a a widget developer, you basically need to, you actually don't need to, but it is recommended to just depend on versus e core and versus e widgets if possible. And we're still testing this out. We kind of, like, created a bunch of alpha releases before the actual release. So, we wanna make sure everything works before we release. So, it's it's gonna be that and also, some other features as well.

Orhun Parmaksız:

Let me just have a very quick look. So we kind of changed some things, you know, there's, like, customizable symbols. For example, we added new border sets and so on. So, those are just, like, the typical features that we add, every every release. But, we kind of, like, moved bunch of things around in the code base.

Orhun Parmaksız:

The examples are moved around. You know, the the documentation is moved around and and so on. So, yeah, that's the that's the thing that I've been working on with the other maintainers. We kind of, like, hope to push this release, soon. And, yeah, that's that's that.

Bryan Cantrill:

That's awesome.

Josh Clulow:

I do have a quick follow-up question about, something that has fascinated me for a long time now is the from an aesthetic perspective, I guess. I feel like, applications in this ecosystem have a lot draw a lot of borders around stuff, which I I find fascinating, like, using box drawing characters. And it feels like there's a lot of, I mean, I suppose Brian and myself are probably the only people that still have a lot of, like, 80 column wide terminals. And and so I feel like my historic aesthetic has involved not using a lot of Chrome on around controls and

Bryan Cantrill:

stuff, like, trying to

Josh Clulow:

differentiate stuff with, you know, different case or use of bold or or use of background colors and stuff to to to make things visually separate rather than actually drawing lines between things. Do do you know is that is that like an intentional UI guideline thing that people are doing in the Ratatouille community, or or is that, like, a just like a a natural thing that has emerged now that the Unicode box drawing stuff is, you know, pretty well supported everywhere and, you know, you can do rounded corners and stuff?

Orhun Parmaksız:

Yeah. I think there's a so I I also, like, talked about this during my talk. There's something called look, I think, and I believe, this is like this is like the the most typical look that people go for. I think this is not, like, documented anywhere. It's just, like, something people just choose to do.

Orhun Parmaksız:

So, the the borders are just very easy to use in Resideo. You can just add borders to each widget. And when when people learn about, you know, the widgets, they tend to just, you know, try out this thing, and it turn turns out looking pretty good, I think. And, yeah, we kind of, like, want to support different border types and so on. And that's just something, yeah, something people prefer most of the time.

Orhun Parmaksız:

But, yeah, we don't really have anything documented or, like, anything that we, like, recommend, like that. Most of our examples use block, though. So I don't know. Maybe this is something that we kind of incentivize without even knowing. But,

Adam Leventhal:

yeah, one one thing that

Josh Clulow:

like a back a solid background color thing without any border? Or

Orhun Parmaksız:

So, the block is that, but you can add, like, borders to it. And Okay. The the way of constructing that is basically block two columns bordered. So, that's been used throughout our examples. And it's very easy to just create that block, bordered block, so people just use it.

Orhun Parmaksız:

Yeah. But, like, there are, like, a lot of, approaches to this. And I have seen many other toys that are just not using that or, like, they just want their own thing. And, I I think the the the most, like, most impressive one so far was this, project, which is using some animations as well. I'll try to send it to the chat.

Orhun Parmaksız:

One second. So, it's exapined. It's using the blocks, like the the typical blocks, but it it's actually com configuring them to look like, you know, they are just sharper and so on. For example, on the top, the the block or the title is just, like it, you know, it has this, the the shape, there's like a rectangular shape or something like that. Also, the colors are a bit different, and the blocks are actually, like, animated too.

Orhun Parmaksız:

So, yeah, this this was quite impressive to me when I first saw it. And then I decided to implement this, and it's basically, like, you know, changing the the cells one by one to make this, moving color animation around the borders, basically. So it's not much it's not magic, but, it it it is, like, looking like magic. You know?

Bryan Cantrill:

Yeah. And you did something similar, right, for Ratatouille? Because I think that you demoed this at Fozdimm. Mhmm. But I think that, like, I I was unable to fully I was just, like, listening to it kind of on my phone and was unable to fully appreciate it, but I know that the audience was the audience was was oohing and aahing.

Bryan Cantrill:

So it was obviously, terrific on the big screen.

Orhun Parmaksız:

Yeah. This library is built on top of. It's called tuck in effects. And now the the author of this library is actually working on a script like initialization for the for the animations. So you so you will basically write little scripts for creating animations to your widgets and so on.

Orhun Parmaksız:

It will be quite easy at that point. And, yeah, it's it's a quite use like, not not I don't wanna say quite useful, but, like, aesthetically pleasing at least. So, pretty cool projects are just, exist in

Rain Paharia:

in the So cool. This is this is incredible. Wow. I'm looking at Exabind right now.

Bryan Cantrill:

Yeah. I know. It it's and I don't know if, like, I'm actually, like, it's a little bit of a spin the wheel whether Josh I don't know if Josh, this is a step in the right direction or the wrong direction from your perspective. I it's really stunning, though. The I do love the way you're tying this to 80 columns.

Bryan Cantrill:

So, like, I feel like this is, like, I feel like I'm the I'm the the senator from the agricultural state that is just, like, vulnerable to anything that's gonna like, any kind of pork for my 80 column constituency, I'm gonna I'm gonna vote for.

Josh Clulow:

Single. Single issue constituency. I absolutely single issue. Yeah. %.

Josh Clulow:

Yeah. Everybody's

Andrew Stone:

Well, this

Bryan Cantrill:

has been great. Arjun, thank you so much. I mean, this is you know, we are obviously really big users of Ratatouille here at Oxide. It's extremely important for us. Again, this is not like it is not a this is not out of nostalgia.

Bryan Cantrill:

It's not out of just the fact that it's neat. Although, it's both of those things, it's really, like, a very essential for us on some of the things that we're building, where we we got is a the terminal is the interface, and we need to present something visual or wanna present something visual. And it's allowed us to do, I think, much better things. Rain, the the software that you've built, Android software that you built, software that I built. I mean, and Josh obviously use the terminal a lot in in terms of facade and manufacturing.

Bryan Cantrill:

So this is all, really important to us. And it's really great to have you here and kinda get that full the full story is was was terrific. So Yeah. Thank you very much, and thank you for all your your hard work on Ratatouille. It's really, really appreciated.

Orhun Parmaksız:

Yeah. Thank you a lot for the invite. It's been a pleasure. And, yeah, I I'm just, I'm just actually one of the people who work on these, thermal projects. So I just wanted to, like, thank everybody who maintains Rust three based tool or three tool or, Rust library for Rust three, and so on.

Orhun Parmaksız:

So I'm not, luckily not alone in this. I just wanna, like, take some take a brief moment to thank the other people as well. The maintainers, the people who built stuff with Resatree, they're just amazing. And, I've been just very lucky to be in this position. I've been kind of, like, leading this project, and, I've been just kind of doing a lot of things about it.

Orhun Parmaksız:

But, without all those other people, it was not really possible. So I just wanna say thank you to them, and thank you to your thank you for your invite again. Maybe before, we wrap this up, I wanna share something that I found, recently. It's a very fun project if you guys Yeah. More time.

Orhun Parmaksız:

So, there's this SSH game, which was built with Resetsu, And this is like something that I discovered or some somebody shared this on Discord a couple of days ago. You can just play it right now as well. Just run this command. It will, run a TUI in in your terminal. And the game is basically you have an endless maze and, like, infinite maze.

Orhun Parmaksız:

And, there there are some other players as well. And you're trying to, like, find your way through this maze. And there's some minotaurs, these creatures in this maze. And it's quite fun. I've been trying out for the for the past couple of days.

Orhun Parmaksız:

And sometimes, like, you know, doing, I don't know, just I'm bored, I just wanna play this thing. The the thing is it works quite well because it's very minimalistic game and also like, you know, multiplayer due to SSH and kind of very, aesthetically pleasing too. So, yeah,

Adam Leventhal:

it's This is amazing.

Bryan Cantrill:

This is incredible. I I we're we're gonna go find Adam. Can I go, like, can I go whack Adam in this thing? I

Andrew Stone:

think I

Adam Leventhal:

I think I see you. Yeah. This is where this could be a bit show notes. This is incredible, and this is like we started I I I think I mentioned, Renegade and BBS's. Like, this is really it's great.

Adam Leventhal:

BBS vibes.

Bryan Cantrill:

I think it definitely is. I also feel like, Adam, this is gonna give you something good to do when I'm telling a story for the eighth time.

Adam Leventhal:

Oh, there you go. Okay. This is, like, really Even more helpful.

Bryan Cantrill:

Exactly. This is awesome. And a a a great note, Orhan, to to end on. Thank you so much for, for dropping that in. I I would love to say that I'm going to a meeting, but I'm really just gonna go play this for a while.

Bryan Cantrill:

So,

Josh Clulow:

And just like that, we missed the quarter. Exactly.

Bryan Cantrill:

It would be the first time. But thank you very much again, Orhan. Really appreciate it. And thank you everyone for, thank you for, Raine, Andrew, and and Josh for joining us as well. And, thanks for joining us in in our Europe friendly time.

Bryan Cantrill:

And we'll do a couple more of these through the year. I think I I I enjoy mixing up a bit. So Yeah. Good stuff. And, getting back on brand, we've got absolutely no plans for next week.

Bryan Cantrill:

So we'll be kind of we spin the wheel. No idea what's gonna happen.

Adam Leventhal:

So

Andrew Stone:

Stay tuned. Right. We'll see.

Bryan Cantrill:

Stay tuned. Exactly. Alright. Thanks, everyone. See you next time.

Textual UIs with Orhun Parmaksız
Broadcast by