Speaker 1: Hello, welcome to another episode of Elextra Mix. Today I'm
Speaker 1: the only one on the panel and this is Alan
Speaker 1: Whyma and today we have Tess, the creator of wasam
Speaker 1: X or washim ex. We're still debating what they call
Speaker 1: that one tesse. How are you?
Speaker 2: I'm good. Let's say it wasn't Max. I don't say
Speaker 2: this out allowed to often, so that's settled for wasn't x.
Speaker 1: Yeah, it's kind of I often hear that from people
Speaker 1: just adding the ex either to the beginning or to
Speaker 1: the end. I talked to the creator of XCODR. I
Speaker 1: think you just called the CLDR on a lot of things,
Speaker 1: but of course you said you have to add the
Speaker 1: ex to it or else. It's not an official Elextra library,
Speaker 1: you know, just the way the way it's done.
Speaker 2: It's always a balance, right. You have to be found
Speaker 2: so you can call it wasn't. But then a few
Speaker 2: college just wasn't as a library on XPM. It's easy
Speaker 2: to find, but it's confuses everybody. And you want to
Speaker 2: say it's for alex yas represent before Alexia. So that's
Speaker 2: I think that's how it works.
Speaker 1: Well, I mean, there's that sentence alone is not super clear,
Speaker 1: at least to me. But we're going to get into
Speaker 1: into that. I think first let's kind of talk a
Speaker 1: little bit about you know, who are you, right, why?
Speaker 1: Why did you what brought you from your beginnings all
Speaker 1: the way to where you are now? Or at least
Speaker 1: we started working on this MX. Yeah, good, good question.
Speaker 1: So you know, I started as like you know, in university,
Speaker 1: going straight for computer science degrees, and actually I had
Speaker 1: to earn some money to pay the rent, so I
Speaker 1: started developing a Ruby and Rails at open source acually
Speaker 1: a project management system, and to earn some money while studying,
Speaker 1: and that helped me, right, I had the choice between
Speaker 1: academic career professional programmer, and then helped me make the
Speaker 1: choice for the non academic being a programmer.
Speaker 2: That was good. Switched over to a software development agency
Speaker 2: bit quotem button based and started as a back end
Speaker 2: developer Ruby and Rails. We switched to ALIXI Phoenix like
Speaker 2: back before Phoenix context, so I vividly remember the time,
Speaker 2: and we had to find context names for where our
Speaker 2: users struck goes like that. That was fun.
Speaker 1: It was like one of the first I would say,
Speaker 1: because we don't have that many like not full power, boar,
Speaker 1: what's the word? It's like a drama sessions. That's what
Speaker 1: I kind of took from that. I mean it was
Speaker 1: many years ago. I remember that because I also was
Speaker 1: like you, we started before context, and was like, what's
Speaker 1: the context and why do we need this stuff? And
Speaker 1: what's the point? And it was quite a lot of
Speaker 1: complaints if I remember.
Speaker 2: Yeah, I don't see it as drama as too much,
Speaker 2: but as confusion, right, and he was just now it's new. Sorry,
Speaker 2: let me stop you here. If you compare it to
Speaker 2: the russ drama, which we're both probably aware of, it's nothing,
Speaker 2: but for a community that's quite calm, it was something.
Speaker 2: And I'm not trying to say something bad about that.
Speaker 2: It's just such an abrupt change, I think for most people,
Speaker 2: because we were so used to things being kind of
Speaker 2: more open, in my opinion, but then this became it's like, wait,
Speaker 2: why are we doing this?
Speaker 1: What is this? And then there are lots of questions
Speaker 1: about how to structure the code, like you said, what's
Speaker 1: a context? All these kind of things. Sorry, I'm starting
Speaker 1: to take over show from you, but I just remember
Speaker 1: that one, and I don't want to gloss over that
Speaker 1: because It's one of the few times where things were
Speaker 1: just such suddenly change.
Speaker 2: It was definitely work to do right, and you know,
Speaker 2: I was in the software development interesting, we had tons
Speaker 2: of customers, right, and good luck convincing your stimus that
Speaker 2: you have to spend upgrading Phoenix inventing contact. I mean,
Speaker 2: it wasn't that much, right, but still it's also a
Speaker 2: bit hard to communicate. On the other hand, it's a change.
Speaker 2: You get a new chance to express what you really
Speaker 2: want with U schemas right and how to structure them.
Speaker 2: So if you see it dead way, it gives you
Speaker 2: another tool to structure your code problem. So that's something.
Speaker 1: Yeah, And if you follow the I believe if you
Speaker 1: follow the book by I can my mind has coming
Speaker 1: blank today. It's a long day at work. If you
Speaker 1: follow there's a book about structuring your code for a
Speaker 1: lecture came up quite recently from pragmatic programmers. I have
Speaker 1: his space in my mind, but the name is that
Speaker 1: coming to me? Oh, Bruce, he has a book and
Speaker 1: I think you structure, but I'm better at those two.
Speaker 2: But I know the book. I know what you talk about.
Speaker 1: Yes, yeah, it's like I forgot the acronym or something
Speaker 1: like something with angry bees. I forget now, But it's
Speaker 1: funny because they're supposed to happy term remember, but I
Speaker 1: forget it now. But in any case, I do follow
Speaker 1: his structure for the most part, especially if I'm working
Speaker 1: with just normal Alextra code, which I was doing recently.
Speaker 1: Usually I'm spending most of my time in Phoenix Lang,
Speaker 1: where you have Acto and everything else to work with.
Speaker 1: But sorry, I'm STI techn ever your episode continue what
Speaker 1: You're right, it's good, it's good.
Speaker 2: That's what we do. We talk about Alexia, yes, and
Speaker 2: I think it helps to get our hands held a
Speaker 2: bit right if we have that support, like how to name,
Speaker 2: how to structure, Like it's the same thing with like
Speaker 2: I want to create something creative with my Alexia app,
Speaker 2: but where do I put the file if it doesn't
Speaker 2: follow the pattern. There's always these kinds of things that
Speaker 2: cause a bit of trouble. And that's where I wouldn't
Speaker 2: say it's even drama. It's it's you have to think
Speaker 2: about it. You have to have a plan, and sometimes
Speaker 2: you need a guide and then it's easier. Yeah, anyhow,
Speaker 2: let's bring back you know back then, you know it
Speaker 2: was software development, agency times. But I was there for
Speaker 2: seven years. I guess I needed a change in scenery.
Speaker 2: I you know, my wife was pregnant, I was about
Speaker 2: to get a kid. There was this transition in life
Speaker 2: and I needed a transition at the job too. So
Speaker 2: I was looking for a you know, more product facing
Speaker 2: company and still wanted to stay with Alexi because that
Speaker 2: was arsome awesome. And at the software development agency at
Speaker 2: bit Crowd, I was transitioning from back and to pull
Speaker 2: stick to management, to talk into customers vironments, all the
Speaker 2: managery stuff, right, and I needed to get my hands
Speaker 2: dirty again. So that was the change. I went to
Speaker 2: remote dot com. They employ like a lot, a lot
Speaker 2: of back end Alexia. It's one of the biggest Elexi
Speaker 2: code basiness I know of, right, So we have a
Speaker 2: lot of backend developers, all ALEXIR, all the big Phoenix
Speaker 2: up and then I could I should probably talk about
Speaker 2: what remote is even because remote com is a pretty
Speaker 2: generic name. We are a global HR software solution. So
Speaker 2: if you want to hire someone, fire someone, promote, get
Speaker 2: their sick days, all the HR management. You know that
Speaker 2: every company needs speak and small. That's what we do,
Speaker 2: but a bit more modern, right, there's these old game
Speaker 2: players and we like a modern take on it. And
Speaker 2: there's like a bit of a trick to it, which
Speaker 2: is it doesn't even matter if you're like a proper employee,
Speaker 2: employed or a contractor. You can have them in the
Speaker 2: same interface. That's pretty good. And the next trick is
Speaker 2: that you can like we are also an employer of record.
Speaker 2: That means, let's say you have a company, but you
Speaker 2: want to get the best Elixir coder, but they sit
Speaker 2: in a different country.
Speaker 1: Right.
Speaker 2: Either you're lucky and you have like your company has
Speaker 2: a shop there and you can employ them there, or
Speaker 2: you they have to make them move right in your country.
Speaker 2: But then maybe they don't want to move, maybe there's
Speaker 2: a visa restriction like stuff like that. You don't want
Speaker 2: to have that troublem and still employ the best people,
Speaker 2: So you can go through remote dot com. You can
Speaker 2: employ them through us. We will like technically employ them,
Speaker 2: but it's your employee, your company's employee, and it's still
Speaker 2: in the same matterface. It's it's your remote employee. That's
Speaker 2: where then income's from remote come. And you know, there's
Speaker 2: this one thing which is if your employee is in
Speaker 2: a different country, you have to send the money over, right,
Speaker 2: Like we invoice you in your country, but they are
Speaker 2: paid in their country. And that's my team, like the
Speaker 2: team that sends the money across the globe of not
Speaker 2: not just you employee, but like all the thousands of
Speaker 2: employees all across the globe in all the countries. That's
Speaker 2: the team. And I became team leader of that team,
Speaker 2: proud lead of a couple talented developers. Yeah, and that's
Speaker 2: what I do for today.
Speaker 1: Now there's why are some MacX relate to this? This
Speaker 1: is an outside Oh.
Speaker 2: Yeah, now I talked a bunch, so wasn't Max is
Speaker 2: not specifically to my team. That's more invoices and you know,
Speaker 2: comply and texts this sort of thing. But you can
Speaker 2: easily imagine web assembly being a use for such a project,
Speaker 2: for any software service. And let's be a bit more
Speaker 2: general and just away from my day job. So maybe
Speaker 2: should we say what websentily is because it's supposed to
Speaker 2: be about WASSNX.
Speaker 1: Right, Oh, you know, you know you're you're totally right,
Speaker 1: So that's kind of back up a bit. That's a
Speaker 1: good point. So we have wire them. Do you even
Speaker 1: know why some stands for oh yeah, web assembly. Sorry
Speaker 1: I thought I think it's an act first, that's sally acronym.
Speaker 1: But yeah, sorry, maybe you're the expert compared to me,
Speaker 1: so you go ahead, he yes, So yeah, websmily. Actually
Speaker 1: it's two things, right. It's like one part, it's a
Speaker 1: binary format that you can compile your computer programs libraries in.
Speaker 1: So take you have a C library or Rust or whatever,
Speaker 1: elexy even, and you can can compile that down to
Speaker 1: repressently and then you can use that's the second part.
Speaker 1: You can use thatsenty block to then run it in
Speaker 1: another environment, in another place, so you can use that
Speaker 1: websentitley block, run it in your ELIXI back and in
Speaker 1: your I don't know what nerves project, in your Rust server,
Speaker 1: the cloud edge, or in your browser. I think every
Speaker 1: browser now comes with a web persentary one time. So
Speaker 1: that's the flexibility of websentry. You can take it from
Speaker 1: lots of languages and run it execute the program library
Speaker 1: in a bunch of different environments and languages. So that
Speaker 1: was what represently is. And with that, like with that
Speaker 1: flexibility comes a bunch of additional things like how do
Speaker 1: you encode things? How do you interface with like how
Speaker 1: do you pass down a screen or you struct or
Speaker 1: whatever you have down to represently land. It's all running
Speaker 1: in a sundbox so to be secure. So let's say
Speaker 1: you build a plugin system with webresently, you want to
Speaker 1: want to execute user provided plugins code and you don't
Speaker 1: want this user provided plug and in websent d to
Speaker 1: reach all of your data and your feelings back and right.
Speaker 1: So that's all running in a sandbox. It only accesses
Speaker 1: what you as the host give into it into the websently,
Speaker 1: so it's it's quite secure there, and it's usually faster
Speaker 1: than the native language, like probably faster than alixy, although
Speaker 1: you have to trust me because they didn't have a
Speaker 1: bench out there right now. Yeah, I mean, well it's
Speaker 1: pretty fast, but there's it's still not necessarily native, right
Speaker 1: because you're still like a VM in between.
Speaker 2: It's not native, that's that's correct. So that presently basically
Speaker 2: the they invented an like an imaginary computer, and that's
Speaker 2: the assembly code for that imaginary computer, and then every
Speaker 2: run time just interprets as this computer. But some of
Speaker 2: them compile with a JIT compiled this down to native code, right,
Speaker 2: Like most of them actually, I think so. It's pretty
Speaker 2: comparable to like the JVM, for example, in that sense
Speaker 2: that you reach native speeds near na native speeds, and
Speaker 2: I think oftentimes people use it in bad pages JavaScript
Speaker 2: environments to be even faster than the native shaperscript. I
Speaker 2: mean native in a sense of in the browser native,
Speaker 2: not native code native.
Speaker 1: Well, I don't think you imagined this, but this kind
Speaker 1: of product was, I don't how would you say that? Well,
Speaker 1: there was something called ASM before WASM, if I remember correctly,
Speaker 1: is adam JS.
Speaker 2: Oh yeahs smjsas MGS. I think it was right, Yeah,
Speaker 2: that's where the idea started. Or but then I'm not
Speaker 2: a historian. I don't know the history too much. I think, yeah,
Speaker 2: someone really clever came up with, like you can compile
Speaker 2: any program into JavaScript, and not just JavaScript that humans
Speaker 2: can read, but you know, acting as like kind of
Speaker 2: an ASM assembly JavaScript. It's like a bunch of things
Speaker 2: somebody can read, but it's super fast to execute. And
Speaker 2: suddenly you had a way I don't know. Let's say
Speaker 2: you have a weird image format. You know, your iPhone,
Speaker 2: if you have an iPhone, probably saves images in this
Speaker 2: hype format that nobody can read. It's not a you know,
Speaker 2: not a great and it's not a P ANDG or something,
Speaker 2: but that code that converts images, maybe that's the c
Speaker 2: library or rust library. And now he suddenly had a
Speaker 2: way to compile this tough JavaScript like this assembly jobscript
Speaker 2: or even web posently later, right, and you can run
Speaker 2: this library to convert images or what have you anywhere.
Speaker 2: Suddenly that it gives you a bunch of reader And
Speaker 2: that's really the power of episently right, if you can
Speaker 2: take a library or a program from like one environment
Speaker 2: and run it and use it in your app.
Speaker 1: Well, that's also like the benefit. There's a couple of
Speaker 1: things my understanding about where then they're trying to I
Speaker 1: guess you can say solve. So one is about portability, right,
Speaker 1: is that you don't need to think about the platform
Speaker 1: because theoretically, like it can run on web or even
Speaker 1: on your machine, as you kind of mentioned. That's one
Speaker 1: thing that I think that they wanted to solve or
Speaker 1: that they're looking to do with this. It's kind of
Speaker 1: like usability, right, yeah, reasonability. And then the other one
Speaker 1: is about safety, right, so that you're able to say, okay,
Speaker 1: I'll give you access to a but not the b
Speaker 1: so you can say, okay, you can you can go
Speaker 1: to the web, but you like you can call outside
Speaker 1: the web, but you can touch my hard drive stuff
Speaker 1: like that.
Speaker 2: Yes, I think the defense The term is object capability model.
Speaker 2: That's the academic you know term to express this, which
Speaker 2: basically means in you know, normal human words, that whatever
Speaker 2: we presently can use is only the stuff that you
Speaker 2: give it. So if I give it a user struck,
Speaker 2: that's what it can use. But it cannot access all
Speaker 2: the other users in your database because it doesn't have
Speaker 2: a handle to your database. You just don't give it
Speaker 2: ever the handle to your database, except if you want
Speaker 2: to give the handle to your database. Right then of
Speaker 2: course it has no emission to use that. So it's
Speaker 2: really up to you to the host program to think
Speaker 2: about what is being given to the representd binary. And
Speaker 2: that's where security comes and goes. Like if you give
Speaker 2: everything to it, if you want to, you can, then
Speaker 2: the security goes out the window, right because you can
Speaker 2: do everything, but it can be really deliberate if you
Speaker 2: want to to only provide the things that you really
Speaker 2: wanted to have. That's where the pluck and system comes in. Right,
Speaker 2: If I have myselfwa as a service, and I want
Speaker 2: my users to give, you know, write plug ins for
Speaker 2: my service. I only give it the things that the
Speaker 2: plug and should have. Nothing else is accessible.
Speaker 1: Yeah, well, I mean. But the other cool thing too
Speaker 1: is that's also interesting is usually for these kinds of
Speaker 1: things that are cross platform, you know, like erlaining and Java,
Speaker 1: you have to write in a specific language, right. But
Speaker 1: the other thing with wism is that you can use
Speaker 1: nearly any kind of language that you want, which is
Speaker 1: really exciting because you can literally write with Python or
Speaker 1: JavaScript or any of these other kinds of languages or
Speaker 1: even whatever, as long as you can convert that into Watson, right,
Speaker 1: which is quite exciting.
Speaker 2: Actually, at my day job, I have an experiment running.
Speaker 2: It's not officially yet, so here here here the first time,
Speaker 2: if you might Colique, I actually have an image conversion
Speaker 2: service that for example, it takes like all weird image formats.
Speaker 2: It's computing them, computing previous of those in websomentary. It's fast,
Speaker 2: it's secure, we don't have to care if it's like
Speaker 2: some unsafe thing that the user gives us as an image,
Speaker 2: like some exploit, some hacker doing stuff. It's running in websentity.
Speaker 2: It's secure, it's good, it's fast. So yeah, kind of good,
Speaker 2: you say, is this but then you know, there comes
Speaker 2: the part where you want to run this websomity in
Speaker 2: all kinds of environments, not only US, not only jobascot,
Speaker 2: not only the browser, about an alexir and this is
Speaker 2: then you have to have a websentary run time that
Speaker 2: embeds into your Alexi code. And this is what was
Speaker 2: an X is really about. So we talk all about
Speaker 2: websmity to you know, sell the benefits, But wasn't X
Speaker 2: the thing that I wildn't write. That's the Elexi part
Speaker 2: that when you have a websomity binary and you want
Speaker 2: to run it and interface with it from Alexia.
Speaker 1: Well, let's kind of talk more about that. Well, actually, sorry,
Speaker 1: before we talk about that. We did have a small discussion,
Speaker 1: but we can be even higher level than that, because
Speaker 1: I don't want to get into you know, this one's
Speaker 1: better than that one. So you talk about watsom in
Speaker 1: terms of it's kind of like this run time, right,
Speaker 1: but if you try to get into wat them, there's
Speaker 1: different kinds of run times that run That was and
Speaker 1: that part is kind of confusing to me. But at
Speaker 1: the same time, it's also not right, like we have
Speaker 1: the beam, but then again, like you can think about
Speaker 1: if we compile our earline code, but then we have
Speaker 1: different versions of the beam that we could run on. Okay,
Speaker 1: this is not that hard to think about. It's just
Speaker 1: a little bit strange, you know. Yes, it's a little
Speaker 1: bit confusing. How does that? Can you explain more about
Speaker 1: why that is? Why don't we just have this a
Speaker 1: single runtime? Sorry, yeah, go ahead, No.
Speaker 2: It's fine. I think your example with the beam is
Speaker 2: a quite good one. Like, imagine we have the earl
Speaker 2: and runtime to handle your beam file. It's right, But
Speaker 2: then comes a company that maybe invents something on top
Speaker 2: that makes it twice as fast, three times as fast,
Speaker 2: and then maybe they have a good point to sell
Speaker 2: that right, because it's only fair. It's running the same
Speaker 2: beam file, it's just twice as fast, and maybe some
Speaker 2: people want to pay for it, and that's the business.
Speaker 2: So you can imagine that. Except with websent, we represent
Speaker 2: is also your binary format. It's an open standard. Everybody,
Speaker 2: you me, everybody can implement that format and build an engine.
Speaker 2: It's you know, some people have fun doing that, and
Speaker 2: maybe you can make a business out of it. If
Speaker 2: you know, you can invent some things on top, maybe
Speaker 2: not only being faster, like I think inventing a u
Speaker 2: JIT to be even more performed, maybe things like interfacing
Speaker 2: with representitly in creative ways, adding a GPU to it,
Speaker 2: and maybe enable the graphics landscape, like all things or
Speaker 2: features you can imagine. And that's where the variat variety
Speaker 2: comes from. Also the places where you run representitly. Is
Speaker 2: it the cloud, is it edge computing? Is it embedded
Speaker 2: in your system somewhere? That's you know, all what companies
Speaker 2: start to specialize in.
Speaker 1: Okay, that makes a little bit more sense. Just that
Speaker 1: was always confusing for me for a long time, like
Speaker 1: when in a minute, why is it I have this
Speaker 1: run time and this run time? I guess it's kind
Speaker 1: of like darker. We have like a consistent darker file,
Speaker 1: but then you can run them on pot man or
Speaker 1: darker and there could be another kind of run time.
Speaker 1: All right. Actually, for some reason, your thing made much
Speaker 1: more sense than all the ethodic thinking I've been doing
Speaker 1: for the past couple of weeks about this stuff. Yeah, yeah, okay,
Speaker 1: that makes sense. So then you have this kind of
Speaker 1: trade off like hm, I want to follow this one
Speaker 1: or this one and then you can kind of make
Speaker 1: your choice. Now coming back to your library, right, how
Speaker 1: does it work? I mean, are you using a special
Speaker 1: run time or is there you said there's some kind
Speaker 1: of open standard like meaning backed run time form. Is
Speaker 1: that that's what you're working with?
Speaker 2: Yes, exactly. So what we actually do is we we
Speaker 2: don't write or run racks with present in alex hear.
Speaker 2: We actually use Rust on Rustler and Rust to interface
Speaker 2: with wasn't Time. That's one of those engines that runs
Speaker 2: websent and wasn't Max. Like the thing I write is
Speaker 2: basically the glue code to make alex heir and the
Speaker 2: beam with all its you know, special things like gen
Speaker 2: service and processes and how memory works and interface that
Speaker 2: with Rust and the sea level of thinking like the
Speaker 2: memory layout that you know have you have in Rust
Speaker 2: and in the Sea land of things and that's the
Speaker 2: group that I have. But yeah, that wasn't time in
Speaker 2: basically written in Rust. That's the thing that we use underhood.
Speaker 2: And it's an open source engine, so not a I mean,
Speaker 2: there's companies backing it, but the whole thing is open source.
Speaker 2: They have that they are in all the stuff, not committees,
Speaker 2: and that's where I saw the most you know, progressant
Speaker 2: and future of web assembly. But other people may have
Speaker 2: different opinions that I see that.
Speaker 1: Yeah, I see it from me on on here, I
Speaker 1: think I wuck with them before interesting, I was just
Speaker 1: looking at the bike Coode Alliance, which is which is
Speaker 1: interesting too. Okay, thanks a very darker.
Speaker 2: It's the name I should have plopped the other bikout
Speaker 2: alliance that's there behind that.
Speaker 1: Yeah. No, it's it's good to have some kind of consistency.
Speaker 1: I'm not against specific runtimes having some special features. It's
Speaker 1: just as somebody who wants to get into this, you
Speaker 1: want to kind of understand, like, wait a minute, which
Speaker 1: one should I go to? I mean, so both of
Speaker 1: us have some experience with RUST as I do the
Speaker 1: RUSS podcast. You know, it's kind of like which run time?
Speaker 1: So in RUSS, just to give a background, it's not
Speaker 1: like the Beam where we already have this run time
Speaker 1: where it does all the multi multi ACYNC stuff. In RUSH,
Speaker 1: you have to choose your a sync run time, which
Speaker 1: if you don't know what you're doing, it's basically it's confusing.
Speaker 2: Right.
Speaker 1: There's like a sink STD I think is its own
Speaker 1: run time. I forget now I think it is, isn't it?
Speaker 2: I have no idea whatsoever. I know that I looked
Speaker 2: into Tokyo, but this whole acinc rust game that's confusing
Speaker 2: to me. And actually that relates to Moss, you know,
Speaker 2: I wanted to like today right now, wasn't it's interfacing
Speaker 2: with rust, but it's like standard plane RUSS. It's not
Speaker 2: acinc but it wasn't time. The underlying engine has some
Speaker 2: really cool features. If you go acing, so you can
Speaker 2: start and stop and like war wasn't modules any time,
Speaker 2: Like I mentionine, you run multiple at once, not just
Speaker 2: one representing module, but many of them at the same time.
Speaker 2: And if you're asining, you can like run them in
Speaker 2: separate basically threads under the hood, right and separate processes
Speaker 2: and stuff, and acing does all that for you. You
Speaker 2: can start stop them. It's pretty great. And today I
Speaker 2: have to build this on my own. I have my
Speaker 2: own thread spawning because you know, when you go into
Speaker 2: a NIFT from Aleixia to put it down to rust,
Speaker 2: like that's a NIF, the beam actually wants your NIF
Speaker 2: to respond almost immediately, like within a couple of minutes
Speaker 2: seconds to that core, because the beam needs to schedule
Speaker 2: your ELIXI process, right, And basically that if if like
Speaker 2: a represently call takes a while, like if your represent
Speaker 2: the program just takes I don't know, a minute to
Speaker 2: compute whatever it needs to compute. That's not immediate return.
Speaker 2: So I have to spawn a thread, set that to
Speaker 2: the side, let it compute, but return to the beam immediately,
Speaker 2: wait for the response, send us back to the gen
Speaker 2: server as a message. It makes all the things a
Speaker 2: bit more complex, right, so I'm actually actively looking that's
Speaker 2: one of my open proly trusts right now where try
Speaker 2: to convert this to acincrust and I choose Tokyo, But really,
Speaker 2: from my perspective, that whole acin crust thing, maybe I
Speaker 2: need to ask the one who knows more is a
Speaker 2: bit confusing, like which engine to choose? What would be better?
Speaker 2: But I think you can't go wrong with Tokyo, right
Speaker 2: they have all the kinds of engines you actually want
Speaker 2: to have.
Speaker 1: But that's kind of my point is that once you
Speaker 1: get more into rust, it's basically like I would shorten
Speaker 1: the whole thing down to choose Tokyo unless you have
Speaker 1: a good reason not to. And one of the reasons
Speaker 1: that sticks out is like if you're doing something that
Speaker 1: doesn't have threading, like or some specific like IoT hardware,
Speaker 1: then there's like Minia or something else. But basically, if
Speaker 1: you choose Tokyo, you're pretty much gonna probably get exactly
Speaker 1: what you want. It does a lot of stuff for
Speaker 1: you in Tokyo. I'm not sure how much in about Tokyo,
Speaker 1: but basically Tokyo is like the Beam in terms of
Speaker 1: it starts up a scheduler for every single thread and
Speaker 1: you can also control how many you want when you
Speaker 1: can figure it. And yeah, it's it's really it's really
Speaker 1: quite an interesting thing. It's it's interesting to see that
Speaker 1: this Tokyo run time actually does act like the Beam,
Speaker 1: you know, which is just kind of mind blowing.
Speaker 2: Yes, yes, it's it's pretty great. And that's why it
Speaker 2: kind of fits so nicely with my approach of having
Speaker 2: gen service and all that. I could basically mirror many
Speaker 2: of the things and between Rust and Alexia, and that
Speaker 2: would be would be a good architecture. It makes things
Speaker 2: simply easier to maintain, and that's you know, what I
Speaker 2: want to I don't want to spend time and waste
Speaker 2: time on programming overhead. I want to spend the time
Speaker 2: on the fun features.
Speaker 1: Well, so now that you mentioned something and I was
Speaker 1: a little bit curious about how you do it, So
Speaker 1: are you when you're working with this net right? I
Speaker 1: worked once with Rustler, and I basically just created a function,
Speaker 1: just made a function call mm hm, and then I
Speaker 1: just put it in a dirty schedule because then I
Speaker 1: don't need to worry about you know, yielding, et cetera. Yes, now,
Speaker 1: how so with yours, are you actually sending a message
Speaker 1: in between from the ROSCO to clientition messages from the
Speaker 1: ross code to the electri code.
Speaker 2: Yes, that's and that's one of the hard parts. Okay,
Speaker 2: let me try to get this on a podcast without
Speaker 2: any diagrams. And you know, so there's one cool thing
Speaker 2: in websently, which is webs smily code can actually say wait,
Speaker 2: what I need to run like a function from the host.
Speaker 2: So you know, you're your Elexi program and want to
Speaker 2: run some websently, but they have a message like I
Speaker 2: don't know what fetch user, but fetching the user that's
Speaker 2: Elexi code again, So we persently can call back into
Speaker 2: Alexia and then fetch the user. Alexa gives the user
Speaker 2: tossemily back and then represently continues. So there's this whole
Speaker 2: message passing like calling methods back and forth between ALEXIIR
Speaker 2: and Rust and represently and to make this happen, I
Speaker 2: you know, I'm sitting in a NYF in a Rust environment.
Speaker 2: In my code were program in, and there is no way,
Speaker 2: at least that I know of where you can just
Speaker 2: call an alexia or like airline function from a NTH.
Speaker 2: You cannot just say execute function and then you get
Speaker 2: the result, because that's not how the beam works. The
Speaker 2: beam wants a message to be sent to a process, right,
Speaker 2: So all the things I can do from Rust level
Speaker 2: is I want to send this gen server a message
Speaker 2: asking nicely, can you give me the result of this
Speaker 2: function called then web at least they can come and
Speaker 2: do that and give me the results sult and then
Speaker 2: I can continue on Rust and you know, proceed. So
Speaker 2: there's there is I have to have gen service. I
Speaker 2: have to like send messages in between from Rust and
Speaker 2: synchronize that. So I have like nutrixis and all these
Speaker 2: like fancy things to make my threats weight on the
Speaker 2: results from alex inland.
Speaker 1: Okay, I'm trying to follow in my In my mind,
Speaker 1: the first question I have is the calling the host code.
Speaker 1: How is that feature built into waresom or what is
Speaker 1: that exactly?
Speaker 2: Calling into host code? That's a built in feature, so
Speaker 2: we call that or like Lawson calls that imported function.
Speaker 2: So a web as Hamily module basically exports functions that
Speaker 2: you can call like I don't know, convert the image,
Speaker 2: calculate fibonacci, whatever. Then Alista can call those exported functions
Speaker 2: and get to salt. But there's also imported functions. So
Speaker 2: from the point of websent ly, they need functions to
Speaker 2: be imported, like coming from the host. So in Alexia,
Speaker 2: I need to implement those functions and give them to
Speaker 2: websentit to call to function. Imagine debugging, right, if websombly
Speaker 2: wants to print out the debug spring, it cannot. It
Speaker 2: doesn't have a screen or like printer attached or anything.
Speaker 2: But you can import or give it a function that's
Speaker 2: you know, your io oputs or something where you can
Speaker 2: then forward it to the console or whatever you want.
Speaker 2: So websentity can import functions from the host, for debugging,
Speaker 2: for accessing file systems, like for all kinds of things.
Speaker 2: You can implement a whole computer, like the whole posing
Speaker 2: system because that VAZ that's as standard that basically as
Speaker 2: a computer like file system, memory management or all these
Speaker 2: things arguments, parameters, environments.
Speaker 1: Okay, so this part makes sense. So I'm aware of that.
Speaker 1: You can write the code structure and you have this
Speaker 1: WASM binary. But the part that doesn't make sense to
Speaker 1: me is how does the rust part come in. It's
Speaker 1: not part of the WASM build. Is that just the
Speaker 1: way that you talk with the run time or where
Speaker 1: does the rush russ park come in at?
Speaker 2: Okay, so when this weapsent, the binary wants to run
Speaker 2: some Alexi code to you know, run this function. Wasn't
Speaker 2: time the thing that the engine basically asked. My code
Speaker 2: asks me like, hey, can you give me like the
Speaker 2: result of this function? And I have to then go
Speaker 2: to Alexi land and say, hey, alexir beam run time.
Speaker 2: I need to run this function, which is the thing
Speaker 2: I cannot do. The beam doesn't allow and live to
Speaker 2: just run a function. There is no such a thing. Instead,
Speaker 2: we send a message to a process and wait for
Speaker 2: the response and hope and you know across our fingers
Speaker 2: that a response comes because if not here, I don't know,
Speaker 2: then yeah, some aerostates sometime ort the usual Okay, gotcha,
Speaker 2: And actually I think that's for the show notes. I
Speaker 2: have this whole thing explained in a GitHub issue where
Speaker 2: someone extically asked the same question. Maybe you can put
Speaker 2: this in a show notes. I have, Like, there's the
Speaker 2: fancy diagram that I, you know, want to paint in
Speaker 2: this podcast with words, but maybe having is having it
Speaker 2: as an actual diagram helps.
Speaker 1: Yeah, definitely, because it it's just there's a lot of
Speaker 1: things happen, and so that's why it gets you know,
Speaker 1: there's a lot of things. And also this is still
Speaker 1: I mean, WEASM has been around for quite some time,
Speaker 1: but it's still quite new to a lot of people
Speaker 1: because it is also confusing too because it's called WASM,
Speaker 1: which is short for web assembly. So you're thinking, okay,
Speaker 1: it must be in the browser, but that's not exactly true.
Speaker 1: I think running on your machinists came later. It was
Speaker 1: a little bit. Yeah, it's kind of something out there,
Speaker 1: and we talked about the Fermion, right, so Fermion, if
Speaker 1: I remember correctly, was started by a guy who used
Speaker 1: to work on HELM if I remember correctly, Yeah, because
Speaker 1: I talked with him a while ago. It is quite interesting.
Speaker 1: And so he has this whole company on doing I
Speaker 1: think tied or something. Well, it's been a long time
Speaker 1: since I talk with him. I don't know why I even
Speaker 1: brought him up now anyways, but yeah, there's like this
Speaker 1: whole thing about running it on your machine and so yeah,
Speaker 1: and then it seems like people wanted My understanding is
Speaker 1: people are looking at using WASM kind of like processes
Speaker 1: within the Beam, but in like a larger scale in
Speaker 1: terms of like okay, let's spin up this WASM binary,
Speaker 1: have an executed job and send the response to this
Speaker 1: other pod, you know, which is it's kind of interesting.
Speaker 1: It feels like we're going we're going back to what
Speaker 1: Beam has been doing for a while, you know, with
Speaker 1: message passing and spinning up jobs this kind of stuff.
Speaker 2: Yeah, I think that's also best how to think about
Speaker 2: it from an Alexi perspective, that's how your busity interact
Speaker 2: with websent the best, as like that's a separate process,
Speaker 2: hyparate gen server gonna send messages and hope for the
Speaker 2: best that the message comes back because you know also
Speaker 2: your WEPSENTITD code can have box and can decide to
Speaker 2: just break apart. So it's the same idea, the same
Speaker 2: that you following the beam that maybe you're of a
Speaker 2: module breaks apart and then you have a message and
Speaker 2: it's safely encapsulated.
Speaker 1: Well, I think there's a couple more things that could
Speaker 1: be interesting to talk about too. I don't know if
Speaker 1: it's still the same or not, but my understanding is
Speaker 1: that Rust is definitely one of the best languages to
Speaker 1: write webs only with in terms of like everything kind
Speaker 1: of matches up because it's not when you see it
Speaker 1: as a run time in RUSS, it's like wats and
Speaker 1: thirty two, which is kind of weird. There's also no
Speaker 1: it's I don't know if there is a garbage collection
Speaker 1: built in yet or not, but that was something that
Speaker 1: was lacking. That's why RUSS worked out quite well too.
Speaker 2: It's yes, oh no, no, don't get the name des
Speaker 2: like an extension to it as I think there's a
Speaker 2: proper name with sort extension. But let's say there's an
Speaker 2: extension to the web smily where you can basically enable
Speaker 2: the feature fleg to allow garbage collection. There's a proposal
Speaker 2: for that. It's implemented in most engines already. There's also
Speaker 2: like a real strong development in making websmit more usable
Speaker 2: in tons of different environments. So garbage collection is one
Speaker 2: of them, Garbage collected languages and interfacing persimity is another.
Speaker 2: Like traditionally, if you want to call a websentitly function
Speaker 2: or interface with it somehow, websmity only understands like numbers,
Speaker 2: like integers, floats like this sort of thing. But you,
Speaker 2: as like an Elexi person, you think instructs your user
Speaker 2: structure like stuff like this. It's structured data, and there's
Speaker 2: this translation layer where like was mixed, like my library
Speaker 2: tries to help you write to the websm d memory,
Speaker 2: put your users structure whatever you have into like the
Speaker 2: bits and bites that alec that the websent can read,
Speaker 2: and the same way around backwards when you get the result.
Speaker 2: But actually it would be so much nicer if websmitly
Speaker 2: had a different mintion language like a type system. Say right,
Speaker 2: they can say, hey, this is a user stug. It
Speaker 2: has a name that I don't know, a birth date,
Speaker 2: and what they have and suddenly websently knows the same
Speaker 2: types that you have in neuro alexir, and they can
Speaker 2: talk about higher level complex types and that's exactly what
Speaker 2: that's called component model and websentitly. They just released that recently,
Speaker 2: and I'm also trying to work this into the Lexi
Speaker 2: implementation so that we don't have to think about bits
Speaker 2: and bytes and serializing it into I don't know, Jason
Speaker 2: Springs or whatever, but we can actually take complex types
Speaker 2: using a type system. The component model is a type
Speaker 2: system under thehood. Yeah, and then we can talk about
Speaker 2: the same thing about the same complex type in websind
Speaker 2: and alexir. I'm also quite hyped about the type system
Speaker 2: and Alexia. I'm not sure yet how, but maybe we
Speaker 2: can work it make it work nicely together. Let's see.
Speaker 1: Well I know that. So it's kind of interesting too
Speaker 1: when they're working on this WATM stuff because I forgot
Speaker 1: the name of the project, but there is it's been changed.
Speaker 1: The name that's been changed a couple of times for
Speaker 1: a lecture in it least were called Loman and then
Speaker 1: there was another name. It's quite a few names. I
Speaker 1: think Darktor still working on it.
Speaker 2: Wasn't it the way you can take alexicode and run
Speaker 2: it as a websentity program. Right was it this?
Speaker 1: Yeah? In the browser, which was quite interesting because a
Speaker 1: lot of people don't want to write JavaScript to do
Speaker 1: a lecture. Yes, trying to.
Speaker 2: Finally, didn't this go down? Like now you'll know more
Speaker 2: than I do. Wasn't this like an avendant or something?
Speaker 1: YESO, No, the Luna one has been touched for a while,
Speaker 1: but I couldn't want to have a new name. I
Speaker 1: was trying. That's what I'm actually trying to find right now.
Speaker 2: But you know what I can pitch there? And there
Speaker 2: is Patrick Smith. He is he's a great person, and
Speaker 2: he's writing orb. Orb is a way where you can
Speaker 2: write an alexir function and that compiles to actually repressently,
Speaker 2: and then you have your Alexi function in line in
Speaker 2: your Alexi code base, but it's absently and orb actually
Speaker 2: uses then wasn't max for integration tests, so you know
Speaker 2: you're an alex heir. You compile to websently. Then in
Speaker 2: his tests Patrick then uses websentitly like was max to
Speaker 2: test the He compiled the right things. Yes, there's the circle.
Speaker 2: I think orb is it's a good library.
Speaker 1: To look at. Yeah, it looks like the name of
Speaker 1: that the thing is called Firefly now I remember now, Yes,
Speaker 1: it's been archived as a junior this year. I get
Speaker 1: really bummed down when I see it, kind of get
Speaker 1: it getting abandoned like this. I understand that it definitely
Speaker 1: takes quite a bit of effort to keep this going,
Speaker 1: but it's it was exciting to see what's going on.
Speaker 2: Yeah, to my understanding, Firefly or like Luman had to
Speaker 2: implement the whole beam basically as a as a walk
Speaker 2: to then run it in represent V versus ORB. I
Speaker 2: just linked it for the show. Notes if you want
Speaker 2: to ORB is more like you take a single function
Speaker 2: and you know, changed it into represent V bite code,
Speaker 2: so it's not the whole beam run time. It's more
Speaker 2: like a computation of a function. So it's this much
Speaker 2: smaller problem. But that seems to work and it's much
Speaker 2: less maintenance and you know, fast and nice and good. Yeah.
Speaker 1: I was just looking forward to this coming out because yeah,
Speaker 1: I mean I make surely said to see you see
Speaker 1: this kind of stuff work down. But yeah, it's it's tough,
Speaker 1: but yeah, coming coming back. Okay, Now, why is the
Speaker 1: max Like I we didn't actually get into the reason
Speaker 1: about why you started getting working on this one because
Speaker 1: you're not really using wires in a new day job, right.
Speaker 2: No. I had a used case back when I was
Speaker 2: in the software development agency. Was a client who needed
Speaker 2: to create an enormous PDF file. But the problem was
Speaker 2: they want they wanted this to be created in the
Speaker 2: backgend to send them out via email and such. But
Speaker 2: most of the time the user clicked like the in
Speaker 2: the HTML page like a download PDF button. So most
Speaker 2: of the time it was like the user clicking on
Speaker 2: the web page. Sometimes it was an email sent asynchronously,
Speaker 2: and I was like, hey, man, you're generating this PDF file.
Speaker 2: We already have all the information on the HTML page,
Speaker 2: but we need to go back to the server, then
Speaker 2: to this expensive database career again produce the PDF, then
Speaker 2: send it back to the client. That that's just the
Speaker 2: waste of resources. Let's just implement the thing in JavaScript
Speaker 2: and you can create PDFs and jobscript right because all
Speaker 2: the information was there. But then I was like, hey,
Speaker 2: if it's JavaScript, you cannot have it in the back
Speaker 2: and then send it out via email. So I needed
Speaker 2: a solution that can generate my PDF in the client
Speaker 2: in the browser and in the Alexa back end, so
Speaker 2: there was websently represently was the modern way to approach it.
Speaker 2: I had some time to spare to build up a
Speaker 2: prototype like super simple prototype, just generated a PDF and
Speaker 2: it worked, and then from there that that's five years ago.
Speaker 2: Actually I think that was five years ago. And back
Speaker 2: then I didn't think I need the gen service. I
Speaker 2: just made it stupid simple, no korbicks, no important functions.
Speaker 2: It was just so so simple. But then over time
Speaker 2: it got some usage, some attention, and then people were
Speaker 2: asking can you, you know, can I provide a function
Speaker 2: from alex heir into webssmibly And then I was like, oh,
Speaker 2: but then you need to send a message. Then I
Speaker 2: had to have gen service. There was this sole itteration
Speaker 2: going on. Yeah, so it all started from this one
Speaker 2: PDF I wanted to create on the client and the
Speaker 2: back end.
Speaker 1: Throwing something like that, and then you get to start
Speaker 1: kind of working on it. But I mean, obviously you
Speaker 1: still enjoy working on it because you start working on it, right.
Speaker 2: Yeah, that's true. Honestly, I was working a lot in
Speaker 2: the early days, and now it's extended maintenance. I would say,
Speaker 2: so I do implement features. I do experiment with it,
Speaker 2: but I also have a family in the day job,
Speaker 2: so it's the usual open source you know, you have
Speaker 2: to spend your time somehow, and you know, family and
Speaker 2: earning some money comes first. But there's so much fun
Speaker 2: in open source work and getting down to the details
Speaker 2: of I don't know, moving some bites around to make
Speaker 2: the fit into web assembly, or thinking about asy and
Speaker 2: grass that all these things is so stimulating and fun
Speaker 2: that I just cannot stop. But it's not you know,
Speaker 2: I don't get paid for it. It's not like fastest development.
Speaker 2: And compared to how webers smily moves forward like websamily
Speaker 2: as an ecosystem is so fast moving day, you know,
Speaker 2: the garbage collection, the component model. So many new things
Speaker 2: come up that are really good and great. And one
Speaker 2: of the main things I do maintaining Warsen mags is
Speaker 2: just you know, getting the new version of was was't
Speaker 2: time in making it work and compile again, And that's
Speaker 2: already I don't know half a day spend, and so
Speaker 2: I mostly keep up with current developments and then if
Speaker 2: there's time left, I do at some features centerp okay.
Speaker 2: So that's the call I think that's you know, it's
Speaker 2: a bit late for this in a podcast, but if
Speaker 2: you are interested in this, like us is the thing
Speaker 2: webs mb is interesting. I'm really open to external contributors
Speaker 2: if you're missing a feature and this sounds interesting, really
Speaker 2: happy to do. I try to do. Try to be
Speaker 2: a nice person, try to be a good collaborator. I
Speaker 2: don't want to be a dictator of this whole thing.
Speaker 2: And there's already been quite a few contributors that happily
Speaker 2: emerge pullquists. So you are invited to join the tun ah.
Speaker 1: Yeah, you're still working with I'm I forgot what his
Speaker 1: name is, Sonny Scraggin. He's I was just looking at
Speaker 1: the acink issue you have. He's quite a good guy
Speaker 1: for helping people out with Rustler and stuff, so that's
Speaker 1: probably what he was working with with you.
Speaker 2: Right, He's been so helpful in the past. I'm so glad.
Speaker 2: That's also something that you know, this open source community,
Speaker 2: it spends rust and Alex here. Yeah, I can just
Speaker 2: ask for help. I don't know everything, like how can
Speaker 2: I and I can just ask for help and then
Speaker 2: people come in and actually do help. And that's I'm
Speaker 2: really thankful and I do learn a lot from it.
Speaker 1: Yeah, I remember I worked with Russler for a project.
Speaker 1: He was definitely super helpful and always willing to Yeah,
Speaker 1: he did more than I was expecting, like if, I
Speaker 1: was quite shocked with how much he was able to
Speaker 1: put in. So yeah, he's and I think he's one
Speaker 1: of the guys who was working on Rustler itself, right
Speaker 1: at least he was at some point, that is what
Speaker 1: I remember, or if not, he definitely was a heavy
Speaker 1: user and promoter of it at minimum because I had
Speaker 1: surely with roster, I couldn't figure out.
Speaker 2: I should stalk my contributors a bit more. I think,
Speaker 2: I don't know, but I'm still thankful. I just seeing
Speaker 2: the contributions they make on Micropositive alone and the conversations
Speaker 2: behind the scenes a bit. It's really helpful already, and
Speaker 2: it's also what makes the whole thing fun and sustainable.
Speaker 2: People oftentimes talk and open source about, you know, being
Speaker 2: burned on and stuff, but I can just be honest
Speaker 2: and say, you know, there's a family. People understand, and
Speaker 2: instead of complaining, they come and help out. They open
Speaker 2: my product fast or even if it's an issue, but
Speaker 2: they are like detailed. It nice and I can actually
Speaker 2: work on it, so that's really, you know, the good
Speaker 2: part about this community.
Speaker 1: I have an opinion about that one. I mean it,
Speaker 1: of course, it's a by person thing. But my opinion
Speaker 1: about languages like Elixir and to an extent, are Russ
Speaker 1: some other languages that are what I would say more
Speaker 1: niche Right, you have a different type of developer usually
Speaker 1: working with these things, and le's of course they're forced
Speaker 1: into it, which I don't know how many there is,
Speaker 1: But for people who specifically want to work with this technology,
Speaker 1: this language, they have a different mindset. They're there to
Speaker 1: learn for the better, they're there for doing things for
Speaker 1: the better. They choose this language as opposed to say,
Speaker 1: working with something more mainstream or popular. So you're going
Speaker 1: to get a different kind of developer who's more I'm
Speaker 1: not sure how the heck I want to say, but
Speaker 1: I think you're already understand what I'm saying. Could you
Speaker 1: kind of shake in your head like yes, That's been
Speaker 1: my opinion about these kinds of languages, is that you
Speaker 1: get a different kind of developer rather than somebody who
Speaker 1: just has to get the work done the barses, you know,
Speaker 1: cracking the web we're going to finish quickly, and so
Speaker 1: they just let our frustrations and yeah, so that's been
Speaker 1: my kind of that's my thought about this kind of community.
Speaker 2: Yes, I think it's also a bit of an uphill battle,
Speaker 2: like imagine trying to be hiring for an Elixir job.
Speaker 2: Like the current market situation is a bit tough, right, Yeah,
Speaker 2: and there's so many people who want to code an
Speaker 2: alex heir, and you really have to step up your game.
Speaker 2: I'll also be lucky, lucky I guess than then to job.
Speaker 2: So as as an employer, like as a company, I
Speaker 2: think it's a good choice to start an elexiir. Oftentimes
Speaker 2: people say you can't find Elexi developers, but what really
Speaker 2: A lot of people want to code a elex heir.
Speaker 2: Maybe sometimes you just have to say either you pay
Speaker 2: for the seniors or you train some middle level or
Speaker 2: juniors to the show, and then you I think you
Speaker 2: get dedicated and good people on average. I mean there's
Speaker 2: always exceptions, but on average, I think you get a
Speaker 2: good bunch of good people. No, I also think so too.
Speaker 2: It's of course it's always better to have the right developer,
Speaker 2: but I think without if they've never really worked with
Speaker 2: it before. You need to kind of show them because
Speaker 2: how do I say?
Speaker 1: Yeah, I mean there's a moment where it clicks for everybody,
Speaker 1: like wow, actually this makes sense, Like it's so easy
Speaker 1: to do these kinds of things. There was there's this
Speaker 1: guy named Theo, who I guess just spoke at Elexro Comf.
Speaker 1: I used to kind of watch this stuff. He's a
Speaker 1: bit of a character, which good or bad, it's up
Speaker 1: to you. But he seems like, I mean, he's somebody
Speaker 1: who's who somehow got converted from In my opinion, from
Speaker 1: my understanding of who he is, he was kind of
Speaker 1: like a JavaScript heavy person, but maybe I'm wrong. But
Speaker 1: then he became super crazy about Alixer. I think I'm
Speaker 1: not sure how it happened, but I think he says
Speaker 1: it's his new language. Like I said, he actually just
Speaker 1: keynote spoke at Elixir comf in US, and that was
Speaker 1: quite shocked because I never would have expected that because
Speaker 1: usually these this guy's got a couple million people who
Speaker 1: watch my YouTube, These kind of I mean don't really
Speaker 1: have people who'd write Leckster to have a couple million
Speaker 1: subscribers on there, right, So it's it's it's quite exciting
Speaker 1: to see when you you know, I can say, convert
Speaker 1: somebody you know who was doing something more mainstream, possibly
Speaker 1: to a elixir or even to a beam language in
Speaker 1: general too. Yeah, well that's the thing, right, And when
Speaker 1: he talks about he's not just saying, oh this is sexy.
Speaker 1: He was saying, no, this stuff makes sense. Look at this.
Speaker 1: We have processes, we got to spend these things uff,
Speaker 1: we can monitor them. We got messages, we got this,
Speaker 1: we got that, we can we can send tasks to
Speaker 1: another machine so we can scale horizontally easily. We got
Speaker 1: all these stuff. So it's it's good to see that
Speaker 1: other people can see it, because I think you need
Speaker 1: to actually play with it before you actually, like you
Speaker 1: need to drink the kool aid, before you actually start
Speaker 1: to fall in love with it.
Speaker 2: You know.
Speaker 1: It's you can get some idea, but it so there's
Speaker 1: an aha moment where you're like, oh god, this is
Speaker 1: so easy. Like I just implemented a some code that
Speaker 1: can like process a bunch of files asynchronously in parallel,
Speaker 1: and it was so so simple, and the handle errors
Speaker 1: was so dead simple, and it's just like wow, I
Speaker 1: can't like if I did this in Python or JavaScript,
Speaker 1: while it would be so slow, and it'd be one
Speaker 1: by one and it would be this issue in that issue,
Speaker 1: and I would be freaking out that the thing would
Speaker 1: just crashed, rather than just saying, you know what, the
Speaker 1: process that that's doing the processing can crash, don't care.
Speaker 1: But at least I know that this starts and works,
Speaker 1: and I can put it to the side and lock
Speaker 1: the error and keep going.
Speaker 2: And that's not even thinking about mutability of data and stuff.
Speaker 2: But like you have raised, Yeah, that's another one, conflicts
Speaker 2: and stuff. Yeah, so there's lots of heavy lifting and
Speaker 2: that's that also gives me a bit of hope, and
Speaker 2: I'm really hopeful and cheer for the Elexi community. But
Speaker 2: you also see on like the stake overflow service that
Speaker 2: Alexi and Phoenix specifically is like highly liked and desired.
Speaker 2: It's still that over on market isn't reflecting that so much?
Speaker 2: Right I was, it doesn't really make sense. Can be what, Yeah,
Speaker 2: that doesn't really make sense.
Speaker 1: Not actually think about it, Like I think most of
Speaker 1: the positions I went to pretty much the tech team
Speaker 1: have to choose to tech which in which it should be.
Speaker 1: But how come Yeah, like you said, how come Alexi
Speaker 1: and Phoenix are high up there, but overall it's not. Yeah,
Speaker 1: it's not a popular language. I wouldn't call it popular
Speaker 1: language or popular framework even you know exactly what I'm saying,
Speaker 1: Like why why is that?
Speaker 2: Why?
Speaker 1: Or how come are people just like hating their job
Speaker 1: or or why is it that more people are pushing
Speaker 1: them for this in their companies?
Speaker 2: Maybe it's trade offs. Right If I'm new to the market,
Speaker 2: just out of university or something, right, I it feels
Speaker 2: like I have to choose a language for the rest
Speaker 2: of my life. It's not like that you can learn
Speaker 2: new languages, but imagine it's your first language. Is where
Speaker 2: you get your experience where you have to build your
Speaker 2: CV And do you do this with a new language
Speaker 2: that currently doesn't have a big market or do you
Speaker 2: do this with a no improven language where lots of
Speaker 2: companies higher for and also the big companies higher for. Right,
Speaker 2: So that's the choice for developers and same goes for companies. Right.
Speaker 2: They do look at market sizes, like how many employees
Speaker 2: do I get? What's the you know, that's that's looking
Speaker 2: at numbers, that's making business decisions, and that's also trade off,
Speaker 2: so I do get it, and then it's also like
Speaker 2: the barrier to entry, and there I'm really thankful for
Speaker 2: what the Use and Chris McCord do, like presenting these
Speaker 2: awesome things, and that really helps to spread the news.
Speaker 2: Also things like Lifebook. Like at my day job, I
Speaker 2: convert many of the documents and you know often run
Speaker 2: this strip, run this and that into Life Books and
Speaker 2: that's so much nicer. You get documentation and running the
Speaker 2: code at one place you can iterate over it. So
Speaker 2: these things really make a good ecosystem that I think
Speaker 2: it's worth buying in. But then you need to spread
Speaker 2: the news. It needs to grow.
Speaker 1: Well. I hope that a lecture does grow. I remember
Speaker 1: seeing some people saying that got rid of it because
Speaker 1: you know that we didn't have any people who really
Speaker 1: understood it. And that's the sad part is when people
Speaker 1: wrap it out like I think Bleacher Report people may
Speaker 1: know that I think all the electure is basically gone
Speaker 1: at Bleacher Report, which is such a sad tale because
Speaker 1: it was such a good success story. It's that is
Speaker 1: there an.
Speaker 2: Outlier or the norm? Like is it a lot of
Speaker 2: companies getting out or is it just one famous example?
Speaker 1: No, it's just and that's the good part is it's
Speaker 1: not the norm in my opinion, it's because like if
Speaker 1: you're in management and you see your silver bill go down,
Speaker 1: you see all these benefits, why would you promote that
Speaker 1: this goes away? Right? If you had all these issues before,
Speaker 1: you're paying for all this hardware, all of a sudden,
Speaker 1: your hardware builds lash to nearly nothing in comparison what
Speaker 1: it was before. So'm like one hundred and fifty down
Speaker 1: to eight or five or something like that. Servers, you know,
Speaker 1: then then why would you dare to switch to something
Speaker 1: else like I would be. It's one of those things
Speaker 1: like if it's not broke, don't fix it kind of
Speaker 1: kind of things. And that's just something much more performed.
Speaker 1: But then again that's still a risk. It's a risk, right,
Speaker 1: it's a risk. And usually you don't just convert to
Speaker 1: software by like a big wish. It's a process and
Speaker 1: it's maybe painful, and maybe you do some decisions that
Speaker 1: are outside of the language. It's just like the people
Speaker 1: doing coding decisions, and maybe it's too complex, it has
Speaker 1: other trade offs, and then you're not happy with that,
Speaker 1: but you blame the language and that can go either
Speaker 1: way like four or against the X year. Yeah, so
Speaker 1: it's never just the easy switch at least. No, it's
Speaker 1: not a complex business. Yeah, so, I mean, I think
Speaker 1: most of these issues are more political than they are
Speaker 1: like technical. It's usually always something outside of the tech.
Speaker 1: Very few things are tech related in my in my
Speaker 1: opinion from what I've seen, is more so like somebody
Speaker 1: doesn't like it, so they get out of it. I've
Speaker 1: implemental Phoenix and stuff for other companies or even Alexus
Speaker 1: to say, and yeah, most of the time you can
Speaker 1: it by with other languages, but you need to start
Speaker 1: seeing the benefits by like actually seeing errors and stuff
Speaker 1: and handling things properly, and then you can start to see, okay,
Speaker 1: this is why this is. This is good. Yeah, but
Speaker 1: you actually had the architecture properly. Yes, that's the point, right.
Speaker 1: And in the past I was back, you know, a
Speaker 1: couple of years ago, I was working on a big
Speaker 1: umbrella elixir project where like it was spread out and
Speaker 1: it ended up, at least to me, being super complex
Speaker 1: and complicated, and I had a hard time just getting
Speaker 1: this into my head and everybody else like to who
Speaker 1: the person who invented the system was like, yeah, it's easy,
Speaker 1: and trying to convince me. And it wouldn't have been
Speaker 1: easy to blame this on the language, you know, Phoenix
Speaker 1: and having Umbrella and those interfaces between all the apps,
Speaker 1: and that I could have blamed umbrellas or feeling so
Speaker 1: alexia on this problem. But maybe it was the architecture, right,
Speaker 1: So you have to see many different projects to actually
Speaker 1: make a fair comparison between languages. But but coming back,
Speaker 1: I mean, I don't even know where the heck we
Speaker 1: can even come back to. I think we went went
Speaker 1: through basically everything. If there's something, I mean already call
Speaker 1: out for if anybody who was willing to help, Is
Speaker 1: there anything that we did mess I.
Speaker 2: Think no, Like if you want to use warnax, let
Speaker 2: me know. Like I'm also super interested in the stories,
Speaker 2: like is it a success? Is that a failure?
Speaker 1: Is it hard?
Speaker 2: Let me know? That also motivates me to continue, right,
Speaker 2: if there's some feedback, and it can be any kind
Speaker 2: of feedback. You know, I'm a German, I'm direct. You
Speaker 2: can just you know, tell me the things. But also
Speaker 2: if you want to contribute it, contribute. Super happy to
Speaker 2: have you on board. I think it's a good project
Speaker 2: that's also more complex than your typical Alex the beginner project,
Speaker 2: so it's not just one gencer, but it's not just
Speaker 2: one Nive or something. It handles the whole story. But
Speaker 2: still it's open source, so you can have a big
Speaker 2: learning experience there. It's it's I think it's a good
Speaker 2: choice for mid level project.
Speaker 1: Okay, great, yeah, testing if there's nothing else. It was
Speaker 1: great there, heavy on the show. Hopefully we're heavy on
Speaker 1: again in the future with something else going on.
Speaker 2: Yes, it's sure. It was really fun.