Elixir Mix is a weekly show focused on the Elixir programming community. Our panel discusses topics around functional programming, the Elixir ecosystem, and building real world apps with Elixir based tools and frameworks.
Episode 27: EMx 027: ExVenture with Eric Oestrich
Panel:
- Mark Ericksen
- Josh Adams
- Nate Hopkins
- Charles Max Wood
Special Guest: Eric Oestrich
In this episode of Elixir Mix, the panel talks with Eric Oestrich who is a web developer who resides in Indianapolis, Indiana. He and the panel talk about ExVenture, Gossip, Cowboy, Raisin, Grapevine, and much more! Listen to today’s episode to hear all about it! Finally, check out Eric’s ElixirConf talk and his blog, too!
Show Topics:
0:00 – Advertisement: Get A Coder Job!
0:51 – Charles introduces the panel.
1:14 – Nate talks about his background.
1:27 – Chuck: My first programming job I worked with Nate. Nate also works now with Eric Berry. We have a special guest and that is Eric Oestrich. Tell us who you are, please!
1:55 – Eric: I work for Smart Logic, LLC. We are a consultancy who has moved to Elixir for the last 2 years.
2:14 – Chuck: Tell us what ExVenture is?
2:46 – Eric: Late 80’s to mid-90’s it’s like a MUD tech space game.
Eric goes into detail of what ExVenture is.
3:28 – Panel: Familiar with MUDS.
3:36 – Panel: Audience can’t tell that Eric isn’t an old guy. Eric – you aren’t an old gentleman – how did you get into it?!
4:02 – Eric: The concept has fascinated me. It’s pure game mechanics. In school I wrote things in Python and try to make it threaded. Never got it going. After that I wanted to do a MUD but not good enough in C and couldn’t get it working in Ruby neither. But one faithful day (a year ago) I got an echo and chat server and now we have a MUD.
5:02 – Panel: Why should you be interested? I will tell you why. ExVenture is an open source...
I encourage everyone to dig into and play with it! It is a game (so that makes it more fun) but you are dealing with game mechanics. I am also curious where you wanted this to go? What made you say: I want to create this and make it open source?
6:37 – Eric: I like it and work has mostly played for it. It’s MIT because of that. Early in the project (between client work) it was a common thread and that’s why it’s open source.
7:27 – Panel: I ran into you at the conference and you were showing me...
Talk about getting metrics out of your system, please?
8:20 – Eric answers the question.
9:09 – Panel: When people are trying to get metrics out of their system – what EVEN makes a good metric?
9:21- Eric: I am trying to figure that out myself, actually. I want to know how long it takes for someone to login? Is that someone trying to hack into my system? If you speak at a global channel or something else...
Eric goes into more detail. Eric also mentions Prometheus.
10:31 – Panel: You mentioned: What would you want to see on a dashboard?
11:01 – Eric answers the question and mentions Prometheus EX.
12:19 – Panel: As you starting building this you were pulling libraries out of it and making them separate libraries. Are you pretty proud of GOSSIP?
12:37 – Eric: Yes! Gossip is based on web sockets and it’s a cowboy socket.
Eric talks about Gossip.
13:10 – Panel: What other clients are you trying to support?
13:15 – Eric: There is a JavaScript client and Node-based game called...
There is a bundle system for that. There is also a Python option.
The one thing we haven’t done yet is a C client. That is important b/c most of the games that you could connect to are 25-30 years old.
14:26 – Panel asks a question.
14:34 – Eric: That is the C client we are waiting for.
14:43 – Panel: You talked at the conference (see the show notes) you talked about things you learned along the way. Can you talk about your process? What kind of bottlenecks and how did you resolve those issues?
15:10 – Eric answers the question.
16:44 – Panel: Did you run out of processes?
16:47 – Eric: The VM shut-off – it was just done. That was the first go-around.
19:27 – Eric: After the ElixirConf, I wanted to see how far I could push it.
Eric continues.
19:51 – Panel: I want to identify some of these principles you just talked about. First, the major block was the gen server is a single process.
20:21 – Panel.
20:24 – Panel: I think that is a common mistake when people come to Elixir in the beginning stages. How did you solve it?
20:50 – Panelist answers the above question.
21:30 – Panel: That’s one of the big things. It’s an architectural issue. Second, you mentioned really LARGE messages. You were sending around really large messages.
22:20 – Eric: For every 100 players was a gigabyte of ram – it was a lot. And that was mostly b/c every copy...when a new character enters the room then that message gets sent out then it gets copied again, and...
23:08 – Panel.
23:24 – Panel: The third one you mentioned was around data base blocking or...?
Can you talk about this one a little more, please?
23:33 – Eric answers the question.
24:02 – Panel.
24:30 – Eric: It was always saving...I tricked Echo into saving...There is a lot of things that could be better to save specifically faster.
24:52 – Panel: I think people would hit those 3 points eventually – there is a lot of value to that.
25:09 –Eric: Yes that was near the end of my ElixirConf talk and my blog.
25:23 – Panel.
25:33 – Eric: It came out in May and I figured out that I needed to learn how to cluster in Elixir. That’s what the ElixirConf was a bout from single node to multiple nodes.
Eric continues.
28:38 – Panel: When you have a cluster – and I join – when I transfer from one room to another room, I could be passed off to another server or node?
29:01 – Eric: Whatever you mean by “being passed off.” Whatever server you land on that’s the one you will be on. The magic is that...
30:08 – Advertisement: Fresh Books!
31:15 – Panel: I am going through the code base now and I am excited. It’s going to help me get better at Elixir.
31:32 – Eric: That’s the point of ExVenture.
31:48 – Panel: You host a server so people can see what it’s about – and that’s Mid Mud, right?
32:09 – Eric: Yep, the first hour of you playing. There is a town crier, you request, and then combat monsters. Also, it is plugged into Gossip and you can talk to them.
32:44 – Eric: Yep, there you go: player logged-in!
32:55 – Panel: Maybe not b/c it will turn into a new podcast soon.
33:07 – Panel: What if I want to use Gossip, what is involved there?
33:16 – Eric: Gossip.Haus/docs – Go there! Set it up and start sending and receiving events.
34:40 – Panel: When I was trying to understand the Prometheus metrics it helped. And then in downloading it (as a tip), for me, it was easy to use the DOCKER instructions.
35:32 – Eric: Yep, that was done by a community member.
35:40 – Panel: Are you looking for people to contribute?
35:50 – Eric: Yep, I have a public Trello board. There are 2 tags.
36:12 – Panel: Sounds like you have people involved?
36:22 – Eric: Bunch of people came on after the ElixirConf.
36:33 – Panel: If people download it (another tip) in the SEEDS file you will find out the admin username and password. I guess that’s something you can add. Login: ADMIN and Password: PASSWORD. What I thought was fun (playing with it) in the admin screen I got a sense that it’s generic enough that I could create a space game. Like playing with sectors of space. Does that make sense?
37:42 – Eric: I don’t want it to be tied JUST to fantasy b/c that’s what MUD is. Everything should be good for historical/ fantasy/ etc. any genre that you want to do!
38:13 – Panel: I could see a HackFest and the company could create one for their business. You could have a lot of fun with it.
38:38 – Panel.
38:44 – Panel: Hidden things on their websites.
38:50 – Eric: Search TEXT ADVENTURE in Google Search. See show notes below.
39:24 – Panel: There is a whole subculture that people are interested in and I didn’t know that these people existed. I think that is interesting.
39:45 – Eric: There are tons of games out there that are 20+ years old!
39:55 – Panel: What is your favorite old school MUD game?
40:02 – Eric lists his favorite old school games! One of them is Achaea!
40:51 – Panel: I like the status bars are really cool. If you haven’t played it you have a health bar. Also you have these expiring times and it’s very cool – modern MUD.
41:22 – Eric.
42:00 – Panel: You came from a Ruby background – what was your transition to Elixir like for you? How did you come to Elixir? What was that like for you?
42:15 – Eric: Yeah some of my friends were into Elixir from a functional standpoint about 2 years ago. They were reading about Phoenix and such. They wanted to see how it was going to go.
43:06 – Panel: Try by fire. Coming from Ruby to Elixir – what some advice would you give the same person?
43:37 – Eric: It was less of a culture shock b/c Phoenix was still kind of “Railsy.”
44:35 – Panel: When I was first learning ERLANG, and telling them that it was a standard library.
44:59 – Eric: It’s using Cowboys Ranch.
45:19 – Eric: There are a number of people out there that they want people to run to SSH b/c it’s more secure.
45:46 – Eric: I guess if we are on this topic about secure...
46:40 – Chuck.
46:51 – Panel: I think there is a lot of value, Eric, and the lessons you’ve learned and the path you’ve gone down. If you are new to Elixir going to ExVenture is a great way to start.
47:20 – Eric.
47:35 – Panel: Just run the format and we can do it that way. I encourage people to download it and see what it’s like as a user, and play with it as an admin. We have a Meetup coming up this Thursday. Eric is coming in virtually into our Meetup group.
48:29 – Eric: Gossip is open source. Grapevine and Raisin – check these out, too, b/c they are open source, too.
48:58 – Panel: Where can people contact you?
49:05 – Eric: Twitter! GitHub! Mudcoders.com.
49:39 – Picks!
49:44 – Ad: Lootcrate.com
Links:
- Ruby
- Elixir
- Elm
- Atom.io
- Flutter.io
- JavaScript
- Visual Studio Code
- React
- Erlang
- ExVenture
- Ex_Venture
- ExVenture’s Trello Board
- Prometheus
- Prometheus EX
- Gossip
- GitHub: Gossip
- 2018 – Conference Talk @ Elixir Conf with Eric Oestrich
- Eric’s Blog
- Libcluster
- Raft – GitHub.io – The Raft Consensus Algorithm
- pg2
- MidMUD
- Gossip/Haus/Docs
- ExVenture: Docker Environment
- Google: Text Adventure
- Achaea
- Cowboy
- SSH
- Grapevine
- Raisin
- ASDF Plugins
- Eric’s GitHub
- Eric’s Twitter
- Brooklyn Nine-Nine
- Elm Packages
- MetaBase
Sponsors:
Picks:
Eric
Mark
Josh
Nate
- Mentoring and Paired Programming
- Metabase
Charles