Danny: Welcome humans, elves, ogres, grues one and all to the titans of text podcast. We are your hosts, Danny "Austerity" nissenfeld Eric: and Eric Oestrich Danny: And we have with us today the one and only Justin Seabrook-Rocha. Did I say that right? Justin: Yeah that was perfect. Danny: great, great, so why don't you get started Eric? Eric: Sure, alright, so let's start out with Who Are you? Justin: So my nickname is Xenith, I've been using that for 30 years. I'm a network engineer by trade but I kind of grew up as a software engineer in middle school and high school. Got into muds probably mid 90s. I started with the AOL muds and that's kind of moved on from there and that's where I started programming; kind of landed on Godwars. Danny: So did you get into muds first or programming first? Justin: I got into programming first. I'd say my first language was logo. Danny: Yeah, yeah I remember logo. I got into that in elementary school. Justin: yeah that sounds about right. Danny: So what real language did you get into after that? Did you do the basic track or did you get straight into something like c? Justin: I did hit on basic. I probably didn't spend too much time in basic. C would have been my first real language. Not that basic isn't a real language. Danny: Yeah, no no, but logo's not. That's what I was implying Justin: You get to make pretty boxes with logo. Danny: Yeah you can move that turtle. So what got you interested in mudding specifically? Was it the programming aspect that drew you into that or was it an interest in the game itself? Justin: I'd say the games definitely came first. I didn't discover muds on my own; a couple of my friends discovered them and that's how I got in them. Because it was the mid-90s and the internet didn't really exist yet. My friend group definitely came up from BBSes so like door games, legend of redgrey and that kind of stuff. The next thing kind of lead naturally into muds once we all hit AoL and that AoL premium fun time. Danny: Any embarrassing dial-up bills that your parents got in the mail? Justin: Oh, yes, I definitely had a few 600 dollar aol bills at the time. Danny: So what lead, your friends got you into it and got you into godwars. How did you make the jump into the staff side? Justin: So I think that was purely because I wanted to program. Back then open source didn't quite really exist. There weren't really easy to find communities. So since I was already investing significant amounts of time in these games and I wanted to learn coding I knew some of them were written in C so after having applied to be staff on the first mud, the first godwars mud, I was staff for a bit and then I was able to sweet-talk them into giving me coding access. You know how everyone else starts you get a little bit, you write a bit in here and update a bit in there and soon I was on par with the lead coder. Danny: yeah, suddenly you're building one day and suddenly you're the coder left because everyone's moved away. How did that move on to age of legacy? Where did that one start out? Justin: So there was this mud called Dizzy MUD back in the late 90s. I believe it was definitely a rom 2.4. As usual it was a "heavily customized" ROM. So the founders of age of legacy split off from there. I'm not sure how they got the code in the first place but when they split off they started age of legacy and i was friends with one of the founders who asked me to come over from the godwars mud to be the main programmer. Danny: Were you playing anything else at the time or were you strictly "oh no I'm coding it and I'm just going to concentrate on making this game better"? Justin: Because it was so long ago my memories are very hazy. I can say though for age of legacy I did not play it. I had a character for testing. I was pretty much playing the godwars mud which was godwars the retaliation and legends of terris which I actually still play to this day. Danny: Wow that's quite a while. I love hearing stories about places people still log into after 10, 20, 30 years. Justin: I met my wife in terris. Danny: Wow so I'll need more on that one. How did that happen? Was it like a PK gone right, so what happened there? Justin: So terris is no pk. It's pve, you know questing-exploration and killing monsters to grind up; very heavy roleplay. At the time I was still in college and she had just graduated from grad-school and lived in texas. kind of really had nothing to do. I think if i remember correctly she had played terris back in the 90s on aol but we didn't know each other at the time. So this is around 2007 when we first met in terris. She was a guildmaster and I was just a high ranking member. You know in game talk leads to out of game talk and since I was in college and I'm not good at writing papers and she is an english and history major so she offered to edit my papers for me and one thing leads to another. Danny: So it's the old tutoring ploy, that's where its at. Justin: pretty much. Danny: That's really great. So you started on godwars but then mostly were playing a pve mud. Were you ever really into the pvp/pk aspect? Godwars has a pretty strong history in putting up PVP/pk style muds. Justin: I would say godwars is pure pvp. There is some grinding involved just to get your skills up but it's definitely not the point of the game. Thinking back that godwars was probably the only pvp mud i've ever played. I think I was stuck to pve as much as possible. Terris was pve, Federation, my first mud, was pveish it wasn't really a fighting mud it was more a space exploration and trading game. There was other stuff you know, gemstone, dragon realms, modus operandi. Those were I guess some of them had PK aspects to them but were pve most of the time. That bled into my wow playing as well. I never played a pvp server. Danny: So what did you do on Age of Legacy? You jumped over to Age of Legacy when it started so you're pretty much a founder so to say as far as coding goes so what did you do with Age of Legacy, to improve it, what were your goals what were you trying to do there? Xenith: I had some, I guess I had some PTSD from GodWars. There were a lot of DIKUisms that I hated. Such as the split between PCData and Character data so my goal with Legacy was to clean up the code so it looked much nicer to work with as well as adding new features. I think I did a lot of bug fixing so almost all the bugs in the mid-2000s were finished by me and new features were other people for the most part. Danny: So if you go look at the Age of Legacy website right now which is legacy.digitalinteria.net it's referencing that it's back and that it's better than ever. So what happened to Age of Legacy? Was there just an exodus? Xenith: I will always say it's mud drama which happens everywhere. So the founders actually handed off control of it to a new group and they kind of ran it into the ground and eventually we got control of it back. Before that time there was an exodus and most of the players had left so now the game is 2, 3 players at most. When we brought it back I run it on my personal servers. The website they host somewhere else and I just forward it there. I think digitalinteria is just a general web hosting company. I'd say the biggest better than ever part is that it got completely re-written in c++ so a lot of the C Dikuisms got replaced which makes it a lot more stable and a lot less memory leaky. Danny: Is it a true rebuilding from the group up or is it more like a port effort? Xenith: It was basically a port effort. A lot of it is we didn't rewrite large chunks of it. Most of it was replacing things like char buffers with STL stuff: strings and vectors. Danny: What about future stuff? Is it still an archive effort to keep it up or are you guys still working on it, doing small improvements and updates? Xenith: So for me it's an archive effort I don't do any coding anymore. I'm just the server owner at this point. The other founder is trying to finish his PHD so he doesn't do anything anymore but he was the one who pushed for the C++ port but once that was done he went back to his graduate program. We do have another coder who's working on new features. Kind of new features around bringing more modern stuff into the MUD like dynamic loot. I'm pretty sure he took the idea from WoW. Danny: So many of us are taking ideas from WoW, from Diablo. Those two are probably the biggest. Xenith: The goal there is to make the loot valuable again because we don't have anyone building anymore and building takes a lot of time so you have to build very carefully but now we have dynamic loot system so it saves a lot of time. Danny: Sure it makes a lot of sense as our player bases dwindle we can't all have the 30 to 100 people online at any given time and you definitely have to make amendations for that. So what about now, what are you working on now other than obviously hosting Age of Legacy. Xenith: Now, in my vast quantities of non-existent free time I'm working on a new mud called Ataxia. I blatantly stole that name from a Java mud that my friends worked on back in the early 2000s called Euphoric Ataxia but that was Java and no one works on Java anymore. I started Ataxia probably in 2007 or 2008 just kind of as a playground for learning new languages. When I originally began it it was going to be in c++ because at the time I hadn't really done much real c++ that wasn't just a sheen over C, basically C with classes, but then it quickly morphed into Objective-C because I wanted to learn how to build mac applications. That didn't last long as I learned how pitiful GNU stuff is for building actual servers. So in 2009 is when I converted to Go. The Go version actually got pretty far. You could walk around, log in, look at rooms, look at items, chat; no combat or anything like that. Then I lost all my free time because I graduated, got a real job and life got in the way and I got married. These days Ataxia is now written in Rust. Maybe once or twice I week I poke at it a bit but it really hasn't gone anywhere. I will say that in the conversion to Rust I did find a bunch of bad design decisions in the Go version that I hopefully will not repeat. Danny: So is Go and Rust part of your actual career or is that just the most interesting language to you right now? Xenith: That is the most interesting language to me right now. Since 2010 my career took a left turn. I'm now a network engineer so there is very little programming. My current company I do some programming. Danny: It's still a lot of interesting networking things with MUDs too. It's not surprising how tangential that can be. Xenith: It's definitely part of the working on Ataxia I found limitations in Rust with networking. I am eagerly awaiting all of the new async/await stuff coming to Rust this year. I'm a little bit involved with the Rust language itself. By a little bit I mean I hang out in the channel and follow along but I haven't contributed anything yet. That's your standard async stuff which I used very heavily in the Go version since Go is built on those concurrency primitives of Go Routines and channels. As soon as we get something similar in Rust land I think it will make building this sort of thing much nicer. Eric: The big question that all of the developers want to know about Ataxia is Are you using an ECS? Xenith: I will say that that is the plan. In rust one of the biggest ECS libraries is called SPECS and I already have that listed as a dependency but it's not used yet. Hopefully once I get to the point where I'm actually building the object system I will be using an ECS model. Eric: So it looks like SPECS blows out to Specs Parallel ECS. So is Ataxia set up to be concurrent and all of that fun jazz? Xenith: Yes and now. Because it's using SPECS and because Rust is build to support parallelism and concurrency, at least with futures, yes Ataxia will support that. I go back and forth with what functions can be sent out to different threads and what need to be run in sequence because MUDs by nature are very sequential. Interactions between two players or two NPCs or when you're in combat is a very sequential kind of algorithm. One side hits, the other side hits and paralleling that really risks getting things out of sync and stuff happening out of order. I always go back and forth with how much a mud can actually be parallel. Eric: There's a thing about something fighting a dragon where the dragon starts charging you and you run through a door and close it but the dragon still runs through because of concurrency and eats you. Xenith: Exactly, yeah. If he closes the door but the dragon doesn't see the door close event before it does its move event it's missing that door. That's obviously a very bad thing for the player but a very good thing for the dragon. Danny: So what are the communication plans for Ataxia? Are you going to make a web client or support telnet? Xenith: Both. I'm going to support telnet simply because that's the easiest option for me and I've written telnet servers. The very dumbest telnet can just be handling text and newline. You don't need to handle much of the telnet protocol to test. Some of the protocols that were invented on top of telnet like GCMP and MXP are clever but the clients can be very limited in how they can support it. I would definitely like to add in web sockets and an HTML client. You can do a lot of customization with that. And websockets can have SSL on top of it. Doing secure telnet is much harder since very few clients support that. Eric: The spread of TLS over telnet is slowly starting to happen now that Mudlet supports it. I think AxMUD does too so we're getting there. Xenith: I do think the mudlet support is very, very new. As far as I can tell it's mostly used by people who don't use windows. There are some windows mudlet users but I kinda get the feeling that most of the mud players on windows use MUSHClient or claim to use ZMud. I'm not sure how they keep it running in the windows 10 world but they love it and they stick to it. Eric: Must be using a Windows XP VM. Danny: That sounds so horrible. Xenith: I've talked to some people that use ZMud. They have a whole bunch of triggers written in ZMud they dont want to port to CMud or mushclient or anything else. They'd rather keep ZMud running than try to port them. Danny: I mean that's such a common theme for not only players but MUD owners too just keep band-aiding everything. Xenith: Yeah, I definitely know that desire. Eric: There isn't a snippet for porting to CMud? Danny: I don't think KaVir wrote a snippet for that. On that note I will take a brief moment for a word from one of our many sponsors of this Podcast even though it's the first episode ever. Vineyard, are you looking for a mud host that cares about your needs? Just point your web browser at vineyard.haus. That's V I N E Y A R D dot H A U S. Vineyard.haus. Vineyard: where the hosting is free and you get more than what you pay for. On the topic of hosting you self host. What kind of metal do you have in a closet? Xenith: So I used to work for a co-location company so I still have a cabinet from them. It's a full rack with 1 gigabit transit, I'm kind of lucky there. The mud itself is hosted on a small atom server. It's basically a half depth box with an atom processor in it, 8 gigs of ram and an SSD. The MUD doesn't really need much processing power. That machine runs Linux. I grew up with linux so I'm a pretty confident sysadmin at this point so I can do everything myself which I understand is pretty rare in the MUD world at this point. Danny: What distro are you running in there? Xenith: Just plain debian. Danny: That is certainly the wet dream of most mud owners. To have a situation like that for sure. Xenith: Yeah it's only 400 dollars a month. Danny: That is not part of that dream. Xenith: It holds all of my personal stuff plus the personal stuff of other people so it's not 400 dollars a month just for the mud. Danny: Well I pay 70 dollars a month for my cloud windows server, mostly because it's windows, so 400 isn't that far off. Eric: What I thought was splurging for a grapevine server for 40 dollars a month for dedicated cores. Xenith: Yes, If i was doing this today and I didn't have the rack I'd probably be running this on a linode VM or digital ocean. Danny: Let's transition to something more personal. Given that you've been around pretty much the whole time like many of us there are other people coming up in the world of mudding do you have any words of wisdom or advice about that? Xenith: This is definitely a hobby but it is a fun hobby. My advice is learn the history but I would never advise someone new to continue running one of the old classic muds. They're good for reference material but you can do things so much better these days by using one of the modern engines like Evennia or build it yourself. In the MUD Coder's slack you definitely see a few people who are just building it themselves from scratch. So I'll put a shout out here for ex_venture here as well. Eric: I was going to say I think all three of us are building out own frameworks. Danny: No, I'm building a natural language translator apparently. I don't think I'm building a MUD anymore. Xenith: You're building an entire new universe. Danny: Well someone has got to have to a place for all the rabbits is what I say. Eric: I think We'll call that our first episode of Titans of Text. Make sure to check out next episode which is DarkWind. Danny: So two weeks from now you can look forward to yet another delve into the world of MUDs and Text Gaming in general. This is not just about MUDs it is Titans of Text so hopefully we will expand and get our fingers into all aspects of text gaming. Eric: Thanks for coming on Justin. Xenith: Thanks for inviting me it was a lot of fun. Danny: Titans of text was recorded in front of a live cat audience.