Ngobrolin Elixir - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.
Ringkasan Episode
Bantu KoreksiEpisode ini membahas tentang Elixir, bahasa pemrograman fungsional yang berjalan di BEAM (Erlang Virtual Machine), bersama tamu spesial Alan Weimah. Diskusi dimulai dengan latar belakang Alan yang berpindah dari Ruby ke Elixir karena ketertarikannya pada pemrosesan multi-core dan concurrent programming. Topik utama meliputi perbedaan antara concurrency dan parallelism, konsep green thread, keunggulan model pemrosesan Elixir yang menggunakan copy of data untuk menghindari mutex dan locking, serta perbedaan mindset antara OOP dan functional programming. Alan juga menjelaskan tentang OTP (Open Telecom Platform), Phoenix framework, Phoenix LiveView untuk real-time web applications, serta berbagai use case yang cocok untuk Elixir seperti aplikasi web, sistem telekomunikasi, dan aplikasi real-time.
Poin-poin Utama
- •Elixir adalah bahasa pemrograman fungsional dinamis yang berjalan di atas BEAM (Erlang Virtual Machine) dengan keunggulan pada concurrent dan parallel processing menggunakan konsep green thread yang sangat ringan (sekitar 1 kilobyte per proses)
- •Model pemrosesan Elixir menggunakan copy of data antar proses sehingga tidak memerlukan mutex atau locking, berbeda dengan pendekatan shared memory pada bahasa lain yang rentan terhadap race conditions
- •Perbedaan mindset antara OOP dan functional programming: OOP fokus pada methods di dalam object, sementara functional programming fokus pada transformasi data melalui pipeline dengan pipe operator
- •OTP (Open Telecom Platform) adalah koleksi library pattern yang telah teruji selama 30 tahun, mencakup supervisor untuk monitoring proses, GenServer untuk background processes, dan Mnesia untuk database
- •Phoenix framework dengan LiveView memungkinkan pembuatan real-time web applications yang sangat efisien menggunakan WebSocket dan hanya mengirimkan perubahan HTML (diff) ke klien
- •Elixir mampu menskalakan aplikasi secara vertikal (menambah resource pada satu mesin) maupun horizontal (menambah lebih banyak mesin dengan networking built-in)
- •Beberapa perusahaan besar telah berhasil mengurangi penggunaan server secara drastis dengan bermigrasi ke Elixir, contoh yang dibahas adalah Bleacher Report yang mengurangi dari 120+ server menjadi hanya 5 server
0:13Halo-halo-halo selamat malam.
0:16Halo selamat malam semua, apa kabar?
0:19Selamat malam.
0:20Inggris mood, Inggris mood.
0:22Inggris mood.
0:23Let's like, let's speak Inggris.
0:26Let's speak Inggris.
0:28Bisa jadi tutorial belajar bahasa ya.
0:32Let's learn Inggris tonight.
0:34Ya karena malam hari ini kita cukup spesial ya karena kita kedatangan tamu yang berbahasa Inggris.
0:43Jadi kita harus bertanya dan menjawab juga dalam bahasa Inggris.
0:47Halo Mas IT.
0:49Halo Cet.
0:50Halo Cet.
0:51Ya kalau mau komen bahasa Indonesia boleh ya?
0:53Nanti kita terjemahin.
0:54Good evening. Ya kalau mau bahasa Indonesia boleh silahkan.
0:58Selamat malam semuanya.
1:00Dan malam hari ini kita kedatangan tamu spesial karena topiknya juga cukup spesial.
1:06Di channel ini sering dibawahkan tapi biar yang lebih ahli lah ya.
1:10Terlalu ditanyain, sering dibahas tapi enggak pernah, eh sering ditanyain cuman enggak pernah dibahas secara mendalam.
1:16Ya karena saya, karena saya agak susah menjual, menjual sesuatu.
1:22Karena kan apa ya, bahasa pemulgaman itu sifatnya apa ya, personal kan ya.
1:27Ada yang suka, kurang suka, atas segala macam.
1:30Tapi kita nggak bisa menjelaskan, kita nggak bisa menjelaskan kenapa kita suka satu bahasa dan lainnya.
1:38So, let's tonight, let's invite Mr. Alan Wyma.
1:52Wyma.
1:54Hello, good evening.
1:56Hello Alan, good evening.
1:58Hello, how are you?
Lihat transkrip lengkap
2:00We are good.
2:02Oh I'm center stage now, okay.
2:04You are on spotlight.
2:08So, let's start, let's start with who you are, what you do and your background story.
2:14Oh wow, that's, I always hate these very open large questions.
2:18Yeah, so, who am I?
2:22That's such an existential question, right?
2:24That's very deep meaning, who are you.
2:28Yeah, but you can type it on your CLI, you know, who am I?
2:32Okay, I need to ask.
2:34Who am I?
2:36In short, I would say, yeah, I'm just a software engineer.
2:40I've been here in Hong Kong for about around 10 years and around three and a half years in Shanghai before here.
2:46And of course grew up in USA.
2:50It's kind of a long story about how I got over here as you can see.
2:54So basically after I graduated from school, it was like about 2010, I think it was.
3:00No jobs, you know, because we had the financial crisis.
3:03So I thought, okay, why not go to China for a couple of years, go back home.
3:06I did part A, part B, still haven't gone back yet.
3:09So that's kind of the real short story.
3:12I studied computer science and Mandarin Chinese.
3:17So that's why I went to mainland China first, was in Shanghai.
3:20Then, yeah, I got an opportunity to work in a startup and spin the business from one type of business to another.
3:27And then, yeah, I can keep going, but, you know, you're talking about 10 years of history over here, right?
3:33So I can keep going if you really want, but I don't think that's interesting.
3:39More interested how you end up to Elixir.
3:42Elixir, wow, that's a really great question.
3:44So I don't know about you guys, but so when I went to school, we first we learned C++, not C, and then we did Java.
3:52And I was always interested in how to do parallel multi-core programming.
3:58Okay. Have you guys ever done that stuff before or no?
4:02With C++, yeah.
4:04Yeah, it's not fun, I think. I haven't tried with C++, but I'm sure it's not that fun.
4:08C# also can do that. I did long, long, long time ago. Java can do that too, yeah.
4:16So basically, I mean, languages I knew at the beginning of the course of C++, probably the most.
4:22And I was always interested in multi-core processing, right? Multi-core, multi-thread CPU processing.
4:28And I had this project that I wanted to do, and I can't remember what it was.
4:33It was some freelance project. If I'm speaking too fast, let me know.
4:37No, it's fine.
4:38It's okay, yeah. I always speak too fast usually, maybe because I get too excited.
4:42And so I kept hearing about this language called Elixir, and I had no idea what it was.
4:49But I heard interesting things. At the time I was doing Ruby, which I think a lot of people do Ruby, right?
4:56Anybody here not do Ruby? I think everybody do Ruby.
5:00You should give it a try. It's really a lot of fun.
5:04And so one of the big names in Ruby was Jose Valim. He worked at a company called Plataformatec.
5:10They did a lot of libraries for Rails. And he was working on Elixir, and I said, "Okay, good thing."
5:17I did Ruby for a while. I did Rails, of course. And I know Jose. I know the name.
5:22And I looked into it, and I said, "Wow, that's interesting stuff."
5:25Because it was doing what I wanted to do, which was multi-core processing.
5:31I know Riza. Is it Riza, right? Riza or Riza?
5:35Riza, yeah.
5:36Riza, you've played around with Elixir before, so you know what I'm talking about.
5:41It's easy to do multi-core processing with Elixir.
5:45Yeah, it's like by default.
5:47Yeah, it's out of the box, right? The way the whole system works is called a process,
5:53which is similar to a process on your computer, but it's a process within its own virtual machine.
6:00So they have this virtual machine called the Beam, B-E-A-M.
6:04And it manages its own processes, and they're basically green threads.
6:11I'm not sure if you guys know what a green thread is or not.
6:15Can you explain a bit, maybe?
6:17Yeah, but I'm always really bad at explaining this stuff.
6:19I know approximately what it is, but when it comes to explaining it, it's really hard to explain.
6:24So my understanding of what a green thread is, it's not a real thread,
6:29but it kind of acts like a thread in terms of it has its own memory and its own kind of thread of processing.
6:35That's why they call it a thread.
6:37But you can easily start and stop it.
6:40In any case, Google green thread, and you understand more and more about it.
6:46Yeah, let Wikipedia explain it.
6:50So it's a pretty interesting thing.
6:53The problem with threads is that they take a lot of resources to run.
6:59They're really quite expensive.
7:02But green threads are much more efficient in terms of the resources that they require.
7:09Now, I can keep going on and on, but that's kind of how I got into it.
7:14Because I wanted to be able to run a lot of work at the same time, and it was work that was parallel.
7:21And so I'm guessing your audience is a little bit kind of newer to programming.
7:25So I like to explain something that's quite important.
7:28There's parallel, and then there's concurrent.
7:34They are different, but they're kind of required.
7:37Well, if you have concurrent work, then you can parallelize it.
7:41So concurrent, you can think about something that's self-contained.
7:44And parallel is something that you run multiple concurrent processes work at the same time in parallel.
7:51So in order to have parallel programming, you have to have concurrent programming to it.
7:58Is there a race condition or something like that?
8:04Race condition, wow.
8:06Well, that's the funny thing about Elixir is that it actually solves a lot of the parallel programming that you need to do.
8:14So is it Yvonne or Yvonne, or how do you pronounce it?
8:18It's Yvonne.
8:20Yvonne, have you ever played around with Elixir before, Erlang?
8:23No, I heard about it.
8:26I learned a couple of it, but I never really tried to make it into production.
8:33So yeah, just a little bit.
8:35Okay, then one of the problems, because you said you did some stuff with C/C++ with parallel concurrent work.
8:43So with that, did you use mutexes?
8:45Yup, I did mutexes.
8:47And well, in my experience, like when handling this race condition, I really chunk the data out.
8:59So it's actually concurrent process just one way.
9:04So it doesn't affect one another.
9:06That's how I do it.
9:08But to be honest, I still don't know how to handle this condition in parallel processing.
9:14Well, I think we are more familiar with Node.js in terms of concurrency.
9:23Yeah, I mean, I can go either way.
9:26So if you want to explain more, if you want me to talk about a little bit more with Node.js.
9:30I think Node.js still has a shared model of concurrency in terms of the memory.
9:36I'm not too sure about the memory, but I believe it might be shared.
9:40But in general, Node.js, unless something's changed, is single thread, single process.
9:48So if you want multi, you have to spin up multiple instances.
9:56I think you guys' English is better than mine.
9:59But yeah, you have to spin up multiple processes, right?
10:02That's correct, yeah.
10:03If you think about it, that's actually the way that Elixir works is that you have multiple processes,
10:10not as heavy as multiple instances of Node.js, much, much, much, much, much lighter.
10:15But the other thing too is that it follows the same path of no sharing data.
10:21So in your previous work where you had mutexes, there's no need for mutex because you never share the data.
10:27You actually send a copy from one process to the other.
10:34So if you have an integer, you would send the integer copy to somebody else.
10:40What you're doing is just sending a copy to it.
10:42So if you edit that piece of data or you throw it away or whatever, it never hurts anybody else because they have their own copy.
10:51So there's no need for any mutexes. There's no need for any locks. There's no need for any kind of protection of data.
10:57So it's something like in the Git terms, you fork the data and do whatever with the data.
11:05But you merge it back in the end with the expectation to merge it back in the end after you're done with whatever it's supposed to do.
11:14I think it depends.
11:15Not in that case. You're merging back a copy, right?
11:18So if you say, give me an integer and you say, why don't you add one to it and send it back?
11:22I'm sending you back a copy of that one.
11:27So the data is actually immutable.
11:29So the data in the memory part is never changed, right?
11:34Correct.
11:35When I get the result is that actually new allocations in the memory, which if another process changes, I don't care because I get the copy of it.
11:47Exactly.
11:49That makes sense now.
11:52So that solves a lot of issues already.
11:55But the one issue that it doesn't solve is if you have a very big chunk of data and you send a copy of that, that's a problem.
12:04But actually, there's kind of a solving with that, if I remember correctly.
12:08I mean, the only reason you have a big piece of data is like a big piece of binary data, right? Maybe if you have like two gigabytes of DVD, you know, video, you have that, right?
12:18You actually don't send a copy of that. You send a copy of the reference.
12:22But nonetheless, like we talked about before, the data is actually immutable.
12:26How long did you learn Elixir?
12:32I'm just curious, what is your main programming language before until you...
12:38Ruby, right?
12:39Exactly.
12:41Ruby to Elixir is easy because I know that. Is Phoenix inspired by Ruby?
12:50Ruby on Rails.
12:52Ruby on Rails is, sorry, Rails is inspired, Phoenix is inspired by Rails, Ruby on Rails.
12:58So Ruby is the programming language, Rails is the framework.
13:02Framework.
13:03Yeah.
13:04And Phoenix is the framework on top of Elixir.
13:07Yeah. So Phoenix was heavily inspired by Rails.
13:14Do you use Phoenix?
13:17Do you use Phoenix?
13:18It's every day?
13:19Do you use Phoenix?
13:20Every day, yeah. Approximately.
13:25This is a good question in this context.
13:28You came from the object-oriented programming, right?
13:32Like Ruby, Java, or C++.
13:35How to change the mindset to be functional?
13:38OOP, the functional.
13:40Yeah.
13:41Because for me, myself, compared to Ruby, the syntax is similar, right?
13:50But the mindset and the paradigm is different, way much different.
13:58So how you come...
14:00Elixir is a dynamic functional, right?
14:03Yes.
14:07Yeah, it's a dynamic functional language, but now they're adding types to it.
14:10But coming back to the main question, how do you change your mindset from OOP to functional?
14:15Practice.
14:16Practice.
14:18Yeah, it's a big one.
14:20Just being able to practice, reading lots of code.
14:23It's really the truth, right?
14:25And it takes time to get into it.
14:27Some tips is that when you become functional, you start to break out stuff and you focus on the data.
14:35It sounds kind of weird, right?
14:37This is my interpretation.
14:39I think I've seen other people say the same thing.
14:41What I notice is that when I went from object-oriented to functional is that I actually start thinking more and more about the data that I have.
14:50And you find yourself thinking more about that.
14:52And then you find yourself operating on the data rather than the...
14:56If it's OOP, you'd encapsulate the data, and then you would call methods on it, and that would in turn manipulate the inside data.
15:04Which actually sounds very complicated if you think about it.
15:08To me, it sounds quite complicated.
15:11And so for functional, you definitely spend more time thinking about the data structure that you have.
15:17And then you think about transforming that data through different steps.
15:21If somebody can pull up some code sample of a pipeline, it would be really helpful to kind of understand how that works.
15:29Because I find functional to be so much easier to follow than OOP.
15:36Because OOP, anything can happen.
15:38You have getters and setters.
15:40But actually, when you use a getter, you actually have the real reference to that data.
15:43As opposed to functional, where you're always going to get a copy of that data.
15:48So I think basically every single functional language that I can think of runs the same way.
15:53So this is a great example.
15:57So you have a function called setupUser.
16:00You have parameters that come in.
16:02That's probably something from form submit.
16:05So if you just read this from top to bottom, it's basically you have three steps happening.
16:09First you create the user.
16:10Then you're going to send an email.
16:11And then you're going to start the trial.
16:14It really reads like steps, one, two, three, four.
16:17If you look at this same thing using OOP, it could be simple like this.
16:24But it could also be very, very complicated.
16:26Because you could have one method that does all this.
16:28You could have who knows what.
16:31You could have all kinds of stuff.
16:33But to me, this one is very, very clear.
16:35It just reads step one, two, three.
16:39And for those of you who are brand new to Elixir, this is called a pipe operator in line 10, 11, 12.
16:48All it means is take the previous data and put it into the first parameter.
16:58Parameter, yes.
16:59It's piping.
17:00I think this came from F# actually.
17:03And JavaScript will have this too actually.
17:10I'm not sure if it's out yet or not.
17:12But they're supposed to have the same thing.
17:14Yeah, not yet.
17:15But it's still in proposal.
17:20And so basically every single step, you're actually transforming the data.
17:25You're not changing the original data.
17:27You're actually making a copy, mutating that copy, and then keep going on.
17:31But its function need to return something, right?
17:34Return something with that piping.
17:38Yeah, so every function has a return value.
17:41Same with Ruby.
17:42Python, I think not.
17:43Even Python, I think it returns none if you return nothing.
17:46But for sure, Ruby returns something all the time.
17:50Well, in PHP, you can just return void or nothing.
17:57In PHP, I don't know what it is anymore.
18:01It's always something new every year.
18:05It's becoming more and more like Java is what I see.
18:09Yeah, but in Indonesia, it's still the most popular language.
18:14Oh, it is, yeah.
18:15But it's really complicated.
18:18I tend to be wary of languages where the creator is just backed away from it.
18:23If I remember correctly, the creator of PHP just wants nothing to do with it.
18:28That's what I remember.
18:29Maybe I remember wrong.
18:30Things have changed.
18:31But that gives me a little bit of worrisome if the creator is kind of backed away from it.
18:37Well, lately they changed a lot since PHP 8.
18:42Is it 8 now?
18:43Last time I remember it was 7.
18:44It must be 20 by now, no?
18:468.3 now.
18:48They have types now.
18:50They have types? Really?
18:52No, types. They introduce types.
18:55Oh, types.
18:56You never had types before?
18:58Okay.
18:59Well, in PHP now you can declare strict types.
19:03And now the order of the parameter or argument is no longer absolute.
19:13As long as the parameter name is the same, you can just put the parameter anywhere you want.
19:20It doesn't matter anymore.
19:23And yeah, they have a spread operator now.
19:28So they're just absorbing from different languages.
19:33Trying to keep up.
19:35Yeah, trying to keep up.
19:37There's a benefit for coming late is that you can take all the good ideas that work.
19:43But then I think PHP sounds like a Franken-language now.
19:47All these different things.
19:49That's true.
19:51Okay.
19:53We have some more questions in here.
19:55What is this? Hello, Kong Alan.
19:57What does the Kong mean?
19:59Brother.
20:01Brother.
20:03Oh, brother. It literally means elder brother.
20:07Elder brother.
20:09Older brother.
20:11Yeah, I'm kidding. That's not my comment.
20:14Okay.
20:16We have a very good question.
20:20So, Andre said he's a main language.
20:23One technical question.
20:25He wants to be an elixir as his main language, but like me, we cannot get any elixir jobs.
20:32What do you think about that?
20:34Indonesia or South East Asia, maybe?
20:38Yeah, that's a really great question.
20:42You kind of have to make them, if that makes sense.
20:46So the current place I'm helping out at, they never did elixir.
20:50They had no interest in it.
20:52But they believed in me, and they let me choose what I thought was correct.
20:56And I told them what I want to choose.
20:58And I came there saying, "Listen, it's not going to be easy to find people who know this language, but the benefits are XYZ."
21:06I think I've almost never -- I cannot say never for sure, but probably almost never have a problem with choosing elixir.
21:17When I start a project, right?
21:19So you may not be able to find a job doing that specific language.
21:24But what you can do is you can do your own personal projects.
21:29You can keep checking around, find a startup that is starting out, get hired, try to ask them to use this one.
21:40There's many different ways to do it.
21:42That's what I recommend, because I know that it's very difficult to find a job using elixir.
21:48But I think there are some companies in Indonesia doing elixir, is that right?
21:54Some of them, yeah.
21:56They're hard to find, but what you can also do, you can start up a meetup group.
22:04So I start up one, Riza, you come sometimes.
22:06I need to start another one next month.
22:09And that will allow you to network with other people who are doing elixir, or Erlang.
22:14If you can do one or the other, I think that's great.
22:16Because even if you can't do elixir now, but you're doing Erlang, once you have the opportunity to do elixir,
22:23I think it's going to be straightforward.
22:25It's going to be easy for you to find if you already have a Beam language, even Gleam, right?
22:30Because it's pretty much all in the hood, it's about the same to me.
22:34Gleam is probably a little bit different, but I haven't tried it out yet.
22:37So I just talked about Gleam right now.
22:39Gleam is another programming language on the Beam.
22:41So Beam is the VM, so think about JVM for Java, Beam is for Erlang and elixir.
22:48And another quick thing that we didn't talk about, and I'm going to try to relay the information now.
22:53Erlang was the first language on the Beam, and then elixir came out later.
23:00There's many other languages, but elixir is the most popular one.
23:03And then the latest one that's becoming popular is called Gleam, G-L-E-A-M.
23:08So Gleam is a type safe compiled version on the Beam.
23:14So as we talked about before, elixir and Erlang both are dynamic, meaning that they're not strongly typed,
23:19meaning that you can type whatever you want and it'll still run.
23:24Nice logo.
23:26Yeah, it's a very cool logo.
23:29So Gleam is like TypeScript for Elixir.
23:35Well, as you can see the syntax is kind of like, you see it's got this import kind of like Python.
23:39Rust.
23:41Well, the compiler is written in Rust. It's very interesting.
23:44So unless something's changed, the way it works is you write Gleam like this,
23:52and it's going to compile your code into core Erlang.
23:58And then core Erlang will then be compiled into Erlang bytecode.
24:04So the way it works is that you have your language, say you have Erlang,
24:07Erlang gets compiled to some type of AST, which is Abstract Syntax Free.
24:14And then that will be compiled into core Erlang.
24:17Core Erlang then gets compiled into Erlang bytecode, if I remember correctly.
24:23And so the compiler for this one is written in Rust, so Rust to core Erlang.
24:30And Gleam also compiled to JavaScript, if I'm not mistaken.
24:40Oh, interesting.
24:42It probably can. I think nearly every language can now with pure JavaScript.
24:47You're not talking about WebAssembly, right?
24:51No, no, no.
24:53To JavaScript, OK.
24:55Gleam compile to JavaScript.
24:58I've heard that, but yeah.
25:01OK.
25:04Show me.
25:05Interesting.
25:06This one.
25:08Let's see the compiled one.
25:10This one, the source code written in Gleam.
25:16This one is JavaScript.
25:18Oh, that's the compiled result.
25:20Interesting.
25:22OK, that's interesting.
25:23Interesting.
25:26But maybe it would lose something if it's not run on Erlang.
25:33Well, you're not going to have the beam, which I think is...
25:36Not having the beam I think is the worst part, because the beam is really a powerful machine.
25:42I think they tend to be in the front end, because there is a query selector for DOM selection right here.
25:52Just on flavor it seems.
25:56There was a project, I think it might still be worked on, I'm not too sure, but it used to be called...
26:03Oh wow, I forgot the name now.
26:05Basically, they got Erlang to compile and run using WebAssembly in the front end.
26:11Oh, I've heard that, but I don't remember the name.
26:14I forgot the name. It's changed names at least one time.
26:17Oh, they changed it?
26:20I think it's called Lunar...Lunas?
26:23Lean?
26:24Or?
26:26No, this is another one.
26:28No?
26:31I think it's still being worked on.
26:34Orb? No.
26:36Unless they change the name, I'm pretty sure it's not Orb.
26:40Alright.
26:46Firefly.
26:48Firefly?
26:49Yeah, that's the new name if I remember correctly.
26:52I don't know, is it?
26:54Yeah, I think so.
26:56A new compiler and runtime for Blim Language.
27:01This one?
27:03But this is archive.
27:06Read only.
27:11Well, I'll look for it and then we can see if we can find it still.
27:16I think it's still being worked on.
27:21So, yeah, about that, about the Elixir ecosystem in...
27:26Lumen.
27:30Like a lot of Lumen?
27:32Yeah, why all the frameworks use the same name?
27:35Oh, it is called Firefly. It used to be called Lumen.
27:39Oh, it used to be called Lumen and then become a Firefly.
27:43That's called Firefly, yeah.
27:45This one, Lumen?
27:47Yeah.
27:49Let's call Firefly now.
27:51Oh.
27:53Since September 1st of 2022.
27:58From Dockyard.
28:00Dockyard?
28:02Yeah.
28:04So if you go to getfirefly.org.
28:14So you can run Elixir using Wasm.
28:20Browser also... it's Wasm, if I remember correctly.
28:24And that's something's changed. Yes, you heard it, target Wasm.
28:28Since we lost Beam here, that means we cannot run it as a coin currency anymore, right?
28:34So it's just like...
28:35Well, I didn't say that, right?
28:37So the thing is, these guys were actually in the group and talking...
28:44So when I'm talking about the group, I'm talking about the consortium.
28:46The group that was making the rules.
28:49What your browser can and cannot do.
28:51And so they were saying, "We need this feature and we don't need this feature."
28:55And they were talking like what stuff they did.
28:57So it may still run about the same.
29:01I haven't tried it, but I believe that they're using web workers or something like that to do the processes.
29:10But they may have its own thing, too.
29:12Oh, interesting.
29:15Okay.
29:20If we can do that, that means it's really good for the pre-optimized large processes like compiling or rendering or compressing images.
29:33That would be good.
29:35Well, I mean, the Beam is not really made for very intensive things.
29:41But you can shell out to see Rust, whatever, if you want to do some computation intensive stuff.
29:49Okay.
29:50If you need to. It's actually pretty simple with Rust.
29:54But what it's great for is what we talked about, like having concurrent parallel work.
29:58It's very, very good at that and very good at recovering from any types of errors.
30:03And you can implement all kinds of retry operations, things like that.
30:10Time to learn new language.
30:13We didn't even talk about OTP, which OTP will blow your mind.
30:17And not one time, by the way.
30:20Open Telecom Platform, yes.
30:25So we can touch a little bit on OTP since I mentioned it.
30:28Sure, sure. Please do.
30:30So yes, as they said, OTP stands for Open Telecom Platform.
30:34If I remember correctly, that was a buzzword that their sales team came up with or somebody marketing something like that.
30:41But basically nobody calls it Open Telecom Platform. They always call it OTP.
30:45It's kind of like GNU, GNU.
30:49Basically GNU stands for, I forgot, it's basically a recursive acronym with no real meaning.
30:54So OTP has now become something like that.
30:57What you can think about is that OTP is a collection of libraries that were battle tested over 30 years of working with Erlang.
31:07And they take all of the features of Erlang and the Beam and put it together into some very great patterns.
31:13And so there's things like a supervisor, which means that it's going to watch a process.
31:18If that process breaks or fails, it'll automatically restart it for you.
31:23It's got a GEN server, which is basically short for a generic server.
31:26So if you need to have something that operates concurrently in the background, we can send it data and it does stuff with it.
31:32GEN server is usually your case.
31:35And there's a lot of other things in there.
31:37So that's kind of the short thing about what is OTP.
31:42It's got a lot more things into it.
31:44Also, if you look at this page, Amnesia is a big one.
31:47So Amnesia, as you hear, it sounds like Amnesia, which is forgetting things, but it's actually a database for storing data.
31:55So it's obviously a programmer joke.
32:00As you can see, it's written by Robert Verding.
32:03He usually hangs around my meetup group I throw up every month when he talked a little bit about Amnesia.
32:10I think Amnesia is also the database of RabbitMQ, but now they're replacing that because it's an old database and it doesn't work for everything.
32:19But yeah, it's kind of cool.
32:21Amnesia, I believe, is distributed and it runs through the networking.
32:29Sorry, I'm a little bit blank right now.
32:32Anyways, maybe we have more questions, people in the audience.
32:38Yep.
32:40Wait, let me check.
32:43Yeah, there's a highlighted one.
32:46This is actually my question, too.
32:49I haven't used Elixir.
32:54If I want to learn it, where should I start?
32:59Sure.
33:00I think really great introduction.
33:03So it depends on if you have cash or not, because there's, of course, some really great resources.
33:11But nonetheless, if you go to elixirlang.org, they have basically a learning and docs section.
33:16I think the learning section itself will give you a pretty good -- sorry, not learning.
33:20Is it guides?
33:22Maybe not guides.
33:23Things have changed a little bit.
33:24I think it's guides.
33:26Guides, yeah?
33:27Yeah, the guides -- actually, probably the guides which you want to take a look at.
33:31They go pretty in-depth about the different things within Elixir that will give you a nice overview.
33:40If you have a little bit of cash, I highly recommend you pick up Elixir in action.
33:45That will get you a very good in-depth knowledge of OTP.
33:54If you like videos, if you go to Pregmak Studio, they have an Elixir OTP course.
34:01Fantastic course, in my opinion.
34:04Okay.
34:05Pregmak Studio.
34:08Yep, Pregmak Studio.
34:10They have very great Elixir OTP courses.
34:15This one?
34:16So the Elixir OTP one.
34:17Yeah, this is a good one.
34:18Also Phoenix Live View, which is also really great.
34:21Yeah, we need to talk about Live View.
34:25Wait, wait, wait.
34:26Lisa, go up a little bit.
34:29Go up?
34:30On top, yes.
34:31So we have a purchasing penalty from Indonesia.
34:35Oh, 60%?
34:37Nice.
34:39The perks of being a country with poor exchange rate.
34:45Okay.
34:46It's quite expensive, but I highly recommend it.
34:51I'm not telling you guys what to do, but if you have friends come together, that's all I'm going to say.
35:00I highly recommend the course.
35:01It's really good.
35:02They go pretty in-depth with stuff.
35:04And even on YouTube, there's a lot of different resources.
35:09But I mean, again, if you just study some of the projects that are out there that are open source, you're going to learn a lot.
35:17Do you have any reference or project to learn?
35:22Yeah, open source projects.
35:24Open source project or something?
35:26Yeah.
35:29To learn.
35:30I mean, if you look at Phoenix, it's probably a really great one to take a look at.
35:34Phoenix Live View is probably another good one.
35:37Those two alone are already pretty good.
35:39If you want something simpler, wow.
35:44I don't know.
35:46I think to be honest, if you want to get started and you have a Rails background, picking up Phoenix is really, really simple in comparison.
35:57They used to be much, much more similar, but now they definitely have some differences to them.
36:02But the nice part about Phoenix is that it abstracts all the complications that you would typically have if you have a brand new Elixir project.
36:14So Phoenix to Elixir is like, say, Laravel to PHP, is that right?
36:19Yes.
36:20The web framework that sorts everything for you.
36:24I'm not too sure.
36:25I haven't done Laravel in a while, for sure over 10 years.
36:28What I can say for sure, because I've done a lot of Rails and Ruby, when you have a Rails app, you can't add any Ruby library to a Rails app.
36:39You have to have a Rails plugin for a Rails app.
36:43That's what's been my experience.
36:45Things may have changed recently, but you always have to look for a Rails plugin.
36:50Now for a Phoenix app, there's actually no such thing as a Phoenix app necessarily.
36:54They're all Elixir applications.
36:56So basically, you can use any Elixir library that you want within Phoenix.
37:04There's no special thing that you need to do.
37:06Including the library that comes with OTP, that means you can use it inside Phoenix.
37:12Yeah, you can use it out of the box.
37:14The way that Phoenix does things is that they put all of the web stuff in one folder, and you're supposed to put all of your applications specific into another folder.
37:25You don't have to follow the pattern, but it helps you follow the pattern because it helps you to separate and make sure that you can actually have different types of entry points into your code.
37:36So basically, you could actually create another app that just has a CLI, so basically a command line interface.
37:43Or even a GUI application.
37:48Is it time for pray right now?
37:51No.
37:53Alright, here's some weird sounds. I don't know what that was.
37:56That's probably from my side.
38:01Okay.
38:04Alright, so one thing that I think, in my opinion, is one thing good about Elixir is the community.
38:16It's the warming and very intimate, like we can accidentally meeting the author, Joseph Halim, in your meetup.
38:33That's a good community vibes for me.
38:39So no drama like JS JavaScript community?
38:43JavaScript or PSP or anything.
38:50Yeah, I have to say there's definitely less drama in Elixir community compared to other communities because I'm also in the Rust community and in, what else am I in?
38:58Flutter?
39:01Flutter? Okay.
39:02I'm not too much into Ruby. I mean, it's not like I hate Ruby, it's just I just don't use it much anymore.
39:08But yeah, Flutter, Elixir, and Rust are the three languages I really focus on.
39:12But yeah, out of those three communities, I would say for sure Elixir is relatively drama-free.
39:18It's not totally drama-free, but it's relatively drama-free as opposed to JavaScript. I don't know what's going on with them.
39:25Again, the creator, he disappeared somewhere. I think he's working on Dino, right?
39:29Yeah.
39:31That's the node JS.
39:33The node JS, yeah.
39:37So he's gone. Python, he stepped down because of drama. What's his name? Guido.
39:45Guido, yeah.
39:47So most of the creators, they kind of left, I think.
39:51I mean, Bijorn is retired, I believe. I don't know. I don't think he's doing much now as a consortium of people.
39:57So most of the creators actually kind of back away after some time, but Jose is still there. He's still doing stuff.
40:02But he's definitely more of a shepherding kind of style.
40:06Okay. So what kind of application that you usually choose Elixir, let's say, offer Rust because you know Rust as well?
40:18Yeah, if I'm doing a web-based application, for sure I choose Elixir because the Phoenix and Phoenix Live View, as we really talked about,
40:26there's no comparison. It just works. It works great. It takes very little resource to run.
40:33The story, the web, how easy it is to create a website using Elixir and Phoenix is just too easy compared to other languages that I've talked about.
40:46I mean, obviously PHP, maybe it's easier. I mean, you have Laravel, you have Rails, of course, can be quite quick.
40:52But with the amount of resource that it uses, with the ease of use, with the innovations that they're doing, I just don't see a reason to not use it,
41:00especially because the resource and the real-time features of Phoenix that you have out of the box.
41:06What about Rust? What kind of application that you built with Rust?
41:12Well, I could talk about, you know, an actual application I created using both Elixir and Rust together.
41:18Maybe that's more interesting because it kind of shows the power of the two.
41:23So I had this client. They're a pretty big MNC. You definitely heard of them. I'm not going to name who they are.
41:30But I had to integrate with their ERP system and actually create PHP files using that for their website.
41:38So basically they wanted to integrate all the products into their existing website. So I had to go there, I had to pull all the files.
41:44So one product would have, so for instance, Hong Kong, we have basically two or three languages. You got traditional Chinese, you have simplified Chinese, and you have English.
41:56And then you have other countries. Indonesia, I don't know if you have more than one language or not. For sure you probably have English.
42:02And you have, is it Bahasa? Bahasa Indonesia, ya? Yes, Indonesian language.
42:09And so you may have more than that, but if you think about one country, Indonesia has two. Hong Kong, which is not really a country, by the way, because I don't want to get in trouble.
42:19It has at least three languages, two to three languages. And, you know, in USA, we have at least two, I think.
42:25You know, we have Spanish and English. You probably want to support those two at least, maybe even French.
42:30But yeah, so every country they have usually a couple, right? Exactly.
42:35So for this MNC, they had basically everything, every single country and then all different languages.
42:40And so I had to create all this for, and then they have hundreds of products. So that's probably, you know, I don't know what that would be. Tons of files, right?
42:48And to me, I'm like, well, obviously I want to do this not sequential, but in parallel.
42:55And so that's what I did. But the problem is it took at least about a half hour and four gigabytes of RAM using just Elixir.
43:03So I had, you know, I don't remember how many, I had thousands of these XML files and I had to go through the file and go up and down XML in order to get the data that I needed.
43:15So originally I tried XPath, it was too slow. And then I tried another method, which is basically read the file line by line and pattern match out the data I needed, which we can talk about pattern matching later on.
43:26But basically hold the data that I need. That was also too slow. And so what I did was I did XPath with Rust. So I just put it, gave it to Rust.
43:37And the whole process end to end was just tens of megabytes and 10 seconds. So it went from a half hour, four gigabytes of data down to 10 seconds and tens of megabytes of data.
43:51Wow. Hmm. Nice.
43:56I know that parsing XPath with XML on PHP is really, really slow.
44:05Too slow, right?
44:06Yeah, too slow.
44:09So as you can see, there's no language that does it all. But that's why I focus on those three languages. But you can see specifically Rust and Elixir, putting the two together, you get something quite powerful.
44:20Hmm. Okay. So what in your opinion, in your own opinion, why Elixir is not more popular than it is now?
44:34So wait, or maybe is it just Indonesia, maybe in Hong Kong or maybe in the States, it's different?
44:42It depends upon what you're doing. It depends on what you're doing, right? So let's kind of roll back a little bit, right?
44:48Erlang datang dari Ericsson, yang pasti kalian pernah dengar dari Sony Ericsson.
44:52Mereka popular karena mereka membuat pindah telefon, kan?
44:57Jadi, secara asli, Erlang datang karena mereka memiliki perlukan yang sangat sulit untuk diikuti.
45:03Ya, mereka memiliki kotak yang memanfaatkan pindah telefon, menggunakan pindah telefon dari satu tempat ke lain.
45:11Hmm.
45:12Jadi, kalian memiliki perlukan yang sangat besar, karena ketika kalian mengubah kotak-kotak itu, mereka tidak bisa turun lama, karena kemudian kalian akan mendapatkan pindah.
45:20Karena jelas, orang-orang harus menyebut 911 atau 110 atau apa saja nombor yang kalian punya untuk nombor pertahanan.
45:25Jadi, mereka bisa turun, tapi tidak lama.
45:28Yang lain yang kalian harus khawatirkan juga adalah, kalian tidak ingin panggilan seseorang mendengar panggilan seseorang lain.
45:34Mungkin semuanya akan turun, karena ada bug.
45:37Jadi, error harus diisolasi. Sekarang kalian bisa melihat kenapa mereka memiliki proses, dan proses-proses bisa diisolasi.
45:42Karena satu proses, satu thread atau apa saja yang kalian ingin menyebutkan.
45:45Jadi, dalam kesempatan ini, proses beam termon itu turun.
45:49Ia tidak akan menerima panggilan lain.
45:53Yang lainnya, yang kita tidak membahas juga, yang sangat menarik.
45:56Jadi, bahasa ini muncul pada tahun 80-an.
46:00Oh, wow.
46:01Kotak-kotak yang panas, sebenarnya lebih tua dari Java, lebih tua dari Python, Erlang.
46:06Jadi, itu juga memiliki upgrade kod panas.
46:09Jika kalian tidak tahu apa itu, itu berarti, setelah sistem itu berjalan,
46:14itu dapat diupgrade ke versi selanjutnya.
46:17Tidak ada "down time".
46:19Tidak, tidak ada "down time".
46:21Tidak ada "down time".
46:22Ini dipanggil upgrade kod panas.
46:25Upgrade kod panas.
46:26Upgrade kod panas adalah sesuatu yang lain, tapi ini dipanggil upgrade kod panas.
46:30Ya.
46:32Dan jika kalian pikirkan, itu sempurna, karena sebenarnya ada video yang dipanggil "Earlang Movie".
46:36Kalian harus menontonnya di YouTube.
46:37Itu sangat menyenangkan.
46:40Jadi, mereka menunjukkan, sebenarnya dalam perkembangan, mereka menunjukkan bahwa,
46:44"Hei, ada bukaan".
46:46"Earlang Movie", lihatnya setelah show ini.
46:49Dia membuat panggilan, menetapkan panggilan,
46:52mengambil panggilan lain, membuat panggilan,
46:54dan itu menyebabkan bukaan.
46:56Panggilan itu sendiri turun.
46:58Mereka menemukan bukaan,
47:00mereka menetapkan bukaan, mereka rekompilasi kod,
47:02mereka menekan kod ke panggilan telepon,
47:06dan kemudian mereka mengambil panggilan lama,
47:08dan mereka bilang, "Oke, mari kita coba lagi".
47:11Tidak apa-apa saja.
47:14Ini adalah awal 80-an, kan?
47:17Ya.
47:19Bukan banyak bahasa yang bisa saya pikirkan memiliki upgrade kod panas.
47:23Ya.
47:27Dan ini dari box, kita tidak perlu melakukan apa-apa saja untuk menggunakannya, kan?
47:31Anda harus bisa membangun upgrade,
47:34tetapi ini dibangun ke VM,
47:37ini dibangun ke barang-barang.
47:39Ya, tanpa memasang library tertentu atau sesuatu seperti itu, ya?
47:44Bagi Elixir, mereka tidak mendukung dari box,
47:47jadi mungkin ada lebih banyak barang yang harus Anda lakukan,
47:49tetapi dalam kesalahan, ini mungkin.
47:51Ini pasti mungkin karena dibangun ke VM.
47:54Baiklah.
47:58Saya penasaran tentang bagaimana
48:01lifecycle Elixir dan Phoenix adalah aplikasi web.
48:06Maksudnya,
48:08saya bayangkan seperti Anda memiliki Beam sebagai VM,
48:11seperti JVM dengan Tomcat atau Apache Tomcat,
48:16Anda harus memiliki web server, ya?
48:18Jadi, apa itu? Anda masih memerlukan web server seperti Nginx
48:22yang akan menguasai PM di port tertentu,
48:26sesuatu seperti itu,
48:28dan Anda masih memiliki load balancer di atasnya?
48:31Anda tidak perlu, sebenarnya.
48:34Anda tidak perlu.
48:36Ini tidak perlu memiliki proxy depan, tetapi Anda bisa.
48:38Ya, Anda bisa melakukannya.
48:41Maksudnya, Anda mengatakan Beam bisa menggunakan port 80 dan 443?
48:46Ya.
48:50Berarti Anda memiliki routing tertentu di dalam aplikasi itu sendiri.
48:58Dan ini berhasil, karena jika Anda memikirkan,
49:00ingat, kita sudah berbicara tentang proses, ya?
49:02Jadi, setiap permintaan yang dimasukkan adalah prosesnya sendiri.
49:05Satu-satunya alasan yang saya gunakan adalah,
49:07jika Anda memikirkan tentang telepon, seperti yang telah saya jelaskan tadi,
49:10ini cocok dengan situasi...
49:14masalah telepon itu memasukkan masalah yang sama dengan sekarang.
49:20Anda ingin bisa memiliki satu permintaan yang tidak menghancurkan pengalaman orang lain di website Anda.
49:24Jadi, Anda memiliki isolasi proses.
49:26Anda ingin bisa mengubah kod Anda sementara orang masih menggunakannya.
49:30Anda tidak ingin orang memiliki down time, seperti yang terlihat di Facebook.
49:34Dan satu lagi hal yang kita tidak bicarakan juga adalah,
49:36Anda bisa menghadapi banyak load.
49:40Anda berpikir tentang itu, kan? Saya pikir kita hanya memiliki pertandingan cricket.
49:42Saya pikir saya mendengar dari seorang lelaki india.
49:44Saya pikir India hanya memenangkan, itulah kenapa dia memberitahu saya.
49:46Jadi, dia ingin mereka menghubungi semua orang.
49:48"Hey, kita menang, blah, blah, blah."
49:50Jadi, pertandingan itu berlaku, kan?
49:53Setiap hal terjadi, semua orang akan menghubungi pertandingan itu.
49:56Anda ingin dapat menghadapi banyak permintaan tanpa mengambil down time server Anda.
49:59Jadi, cara Elixir itu berfungsi adalah,
50:01Anda bisa menghadapi banyak traffic,
50:04tetapi itu akan memberikan waktu yang sama untuk setiap proses.
50:08Jadi, jika Anda memiliki banyak orang menggunakan server Anda,
50:10mereka akan memberikan waktu respons yang lebih lambat,
50:12tetapi pada dasarnya mereka masih akan mendapatkannya.
50:14Sehingga sementara, tetapi itu adalah hal yang berbeda.
50:16Tetapi itu masih dapat menghadapi banyak traffic,
50:18yaitu yang harus dihadapi oleh Telefon Switch,
50:20dan juga website Anda juga harus dapat menghadapi banyak traffic.
50:23Ya, saya belum memiliki gambaran mental
50:28tentang bagaimana untuk mengembangkan aplikasi web Phoenix,
50:32tetapi saya menemukan artikel itu.
50:35Riza, bolehkah Anda buka artikel itu?
50:37Ya, tentu.
50:39Di Elixir Graz, mereka menunjukkan cara untuk mengembangkannya.
50:43Sebenarnya cukup mudah.
50:45Seperti command Mix Release yang dilatihkan di aplikasi.
50:48Ya, saya pernah dengar tentang Mix untuk membangun aplikasi,
50:51yang mirip dengan NPM.
50:54Ini...
50:56Anda bisa lihat dalam dokumentasi juga.
51:01Ya, ada deployment di sini.
51:03Ya, mereka memiliki servis yang berbeda,
51:05seperti Fly.io atau apapun.
51:07Fly.io adalah yang paling konfiden.
51:10Seperti Heroku dan sebagainya.
51:12Ini server cloud?
51:15Fly.io?
51:17Ya.
51:19Ini servis P-A-A-S,
51:23jadi Anda hanya bisa dikembangkan secara dasarnya.
51:25Sebenarnya tidak, mereka memiliki hal-hal sendiri.
51:27Ia mirip dengan kembangkan.
51:29Ya, Anda bisa menunjukkan Fly.io.
51:35Dan mereka memotong semua hal-hal,
51:39termasuk menciptakan file Docker atau sesuatu.
51:42Ini mirip dengan perangkat app Google juga, kan?
51:45Perangkat app Google pada waktu itu?
51:48Saya pikir ini menggunakan sesuatu seperti perangkat app Google.
51:52Anda memiliki versi sendiri seperti Postgres dan sebagainya.
51:55Ya.
51:57Saya juga memiliki beberapa video di YouTube saya juga,
52:03yang menunjukkan bagaimana untuk memasang VPS.
52:05Ini tidak begitu sulit seperti yang Anda pikirkan.
52:08Pertama kali dengan api api,
52:11ini akan mengambil Anda waktu.
52:13Tetapi setelah Anda melakukannya pertama kali, ini cukup mudah.
52:15Tapi Anda masih memiliki latensi karena
52:21mungkin menggunakan Postgres di belakangnya,
52:24dan database berwarna hijau.
52:26Dalam koneksi database,
52:28app ini menjadi lebih rendah, dan Anda harus memotong secara dasarnya, kan?
52:32Ya, dengan api api, biasanya database ini akan menjadi yang paling rendah.
52:36Ya.
52:37Itu yang paling rendah.
52:39Ya, itu bagus.
52:41Sebenarnya, case penggunaan yang menarik,
52:43kalian berdua...
52:44Kisah penggunaan yang sudah lama berubah,
52:46tapi itu adalah kisah penggunaan yang bagus.
52:48Ada...
52:49Tunggu.
52:51Ada sebuah perusahaan yang dipanggil...
52:54Bench?
52:56Oh, wow. Apa namanya?
52:58Saya lupa namanya sekarang.
53:01Saya akan lihat apakah itu terjadi pada pikiran saya.
53:03Mereka memiliki 100 dan...
53:05sekurang-kurangnya 120 server.
53:07Mereka memiliki campuran Java dengan Ruby dan beberapa hal lain.
53:11Kemudian mereka menggantikan segalanya dengan Elixir.
53:15Mereka menggunakan sekurang-kurangnya 120 server hingga 5.
53:18Dan mereka berkata mereka bisa...
53:20Leecher Report?
53:21Ya, Leecher Report. Itu benar.
53:23Leecher Report.
53:24Ini benar-benar diberitahu. Mereka banyak berbicara tentangnya.
53:26Ini artikel yang sangat lama.
53:29Dan juga Leecher Report.
53:31Mereka bilang mereka memiliki 5 server.
53:34Dan mereka bisa mengambilnya menjadi 2.
53:36Hanya karena mereka membutuhkan redundansi.
53:38Mereka menghilangkan semua layer caching mereka juga.
53:42Jadi mereka tidak memiliki caching.
53:45Mereka hanya menulis dari database.
53:47Atau apa saja yang mereka punya.
53:49Dan mereka memiliki banyak konten yang sangat spesifik.
53:53Jadi jika kalian suka Sport A dan bukan Sport B atau C...
53:56Jika kalian login, kalian tidak akan melihat Sport B atau C.
53:59Kalian hanya akan melihat alat Sport A.
54:00Itu sangat istimewa bagaimana kalian suka konten Sport A.
54:05Ya, ini Leecher Report, tahun 2017.
54:16Maaf, saya sudah memberitahu.
54:17Ini sekurang-kurangnya 120.
54:18Ini 150 dalam artikel ini.
54:20Untuk 5.
54:21Dan mereka juga berkata mereka bisa mengambilnya menjadi 3.
54:24Tiga dari mereka, jika saya ingat dengan tepat.
54:26Dari Ruby on Rails Monolith ke Elixir Venisia.
54:32Mereka juga memiliki Java juga, jika saya ingat dengan tepat.
54:35Saya pikir itu hanya untuk mengurangkan push atau sesuatu.
54:38Untuk beberapa pekerjaan spesifik.
54:40Saya faham.
54:42Oh, menarik.
54:44Bagaimana mengurangkan streaming atau seperti Websocket?
54:53Websocket.
54:54Itu mudah.
54:56Mereka memiliki sesuatu yang dipanggil Channel.
54:58Bila saya bilang itu mudah untuk mengurangkan segalanya.
55:02Mereka menambahkan sesuatu di bagian atas Websocket.
55:06Ya, mereka memiliki sesuatu yang dipanggil Channel.
55:09Jadi dengan 1 Websocket, kalian bisa melanggan untuk berbagai Channel.
55:12Jadi dengan 1 Websocket Connection, kalian bisa memiliki berbagai topik yang berbeda.
55:16Baiklah.
55:18Sekarang saya penuh.
55:19Saya akan mencoba ini.
55:22Ya, saya akan mencoba itu juga.
55:23Sekarang saya penuh.
55:25Saya tidak tahu, itu aneh.
55:28Jadi saya kembali dalam pembangunan web.
55:30Sekitar 8 atau 9 atau 10 tahun lalu.
55:34Seperti saya belajar sendiri.
55:36Mencari sumber online.
55:39Tidak ada sumber yang saya temukan.
55:42Seperti tidak ada website atau CSS Tricks atau apa-apa.
55:49Mereka jarang menyebut Phoenix sebagai pilihan untuk belajar dari web framework.
55:56Itu selalu...
55:57Ya.
55:58Biasanya, tentu saja, ACML, CSS, JavaScript, tentu saja.
56:01Tapi kemudian, apabila menikmati framework...
56:04Setidaknya, Laravel.
56:06Ya, PHP dan Laravel sangat popular di Indonesia.
56:10Jadi tentu saja, ada banyak resursi.
56:13Tapi selain itu, React baru saja dimulai.
56:18Dan setelah itu, Swale, Vue, tapi...
56:20Saya tidak tahu...
56:22Berikutnya.
56:23Ya, dan semua spin off dari framework React.
56:28Tapi jarang ada orang di luar komunitas Phoenix dan Elixir.
56:34Ecosistem itu.
56:35Seperti memulai banyak konten tentang Phoenix.
56:40Saya tidak tahu, itu perasaan saya.
56:42Saya tidak tahu jika itu berubah sekarang setelah bertahun-tahun.
56:46Ada beberapa streamer besar yang berbicara tentangnya sekarang.
56:49Ada orang namanya Theta, T-H-E-T-A.
56:51Dia banyak berbicara tentangnya sejak ini.
56:53Theo?
56:54Ada Theo? Maaf, saya lupa.
56:56Theo?
56:57Ya.
56:58Tidak.
56:59Oh tidak.
57:00Dia memiliki rambut dan rambut.
57:02Itu saja yang saya ingat.
57:03Ya.
57:04Ya.
57:05Ya.
57:06Ya.
57:08Ya.
57:09Jadi dia memulai banyak hal.
57:10Seperti yang kamu lihat, dia memiliki 299K.
57:12Saya pikir dia lebih besar daripada itu.
57:13Saya pikir dia di juta-juta.
57:16Mereka banyak berbicara tentangnya.
57:18Itu hanya...
57:19Itu mengambil waktu.
57:20Karena...
57:21Salah satu hal yang saya lakukan untuk Elixir dalam pekerjaan sebelumnya.
57:25Dan...
57:26Jawaban yang saya dapat dari pengurus saya adalah...
57:28Jika kamu lihat di lantai, kita semua sedang melakukan Java dan React.
57:32Maksudnya, idea kamu tidak akan berhasil.
57:35Maksudnya, bukan karena tidak akan berhasil.
57:37Lebih seperti dia ingin mengatakan idea kamu itu bodoh.
57:40Maksudnya, mungkin saya membaca terlalu banyak.
57:42Tapi itu adalah maksudnya dia.
57:44Seperti yang kamu lihat, kami semua smart.
57:47Kami tidak menggunakan Elixir.
57:49Kami melakukan hal yang bagus.
57:50Kami menggunakan Java dan React.
57:52Oleh itu, kami melakukan hal yang tepat.
57:54Dan idea kamu terlalu radikal dan tidak masuk akal.
57:58Tapi itu...
57:59Ada banyak keuntungannya.
58:00Maksud saya, bagaimana kamu bisa menggunakan 150 server ke 5?
58:03Betul?
58:04Maksud saya, bagaimana banyak duit yang bisa kamu menyimpan?
58:06Ada banyak artikel...
58:07Jika kamu melihat Elixir dan menyimpan duit...
58:09Kamu akan menemukan banyak artikel tentang orang yang berubah...
58:11Dan mereka menyimpan banyak duit.
58:13Dari itu.
58:14Ya, saya pikir juga Pinterest.
58:17Pinterest, ya.
58:18Mereka menggunakannya untuk spam atau sesuatu seperti itu.
58:21Mengecek...
58:23Mereka menggunakannya untuk sesuatu.
58:24Google menggunakannya juga, sepertinya.
58:25Adakah kamu ingat leak Google yang muncul beberapa bulan lalu?
58:28Mereka memiliki Elixir di sana di mana-mana.
58:30Ya, ya, ya.
58:31Paling kurang mereka menyebutnya.
58:33Saya tidak tahu bagaimana mereka menggunakannya.
58:35Ya, dalam leak itu.
58:37Mereka menyebutkan Elixir di mana-mana.
58:39Saya lupa apa itu.
58:41Oke.
58:43Tapi kita tidak bahas Phoenix Live View, yang menurut saya adalah game-changer yang besar.
58:47Itu sangat bagus.
58:49Phoenix Live View.
58:51Apa yang saya perhatikan sangat adalah Rail.
58:53Apa yang saya suka tentang Rail adalah Rail selalu merasa seperti membawa sesuatu yang baru ke meja.
58:57Mereka memiliki pipeline aset ini.
58:59Mereka memiliki banyak hal lain yang berbeda dengan MVC.
59:02Semua hal-hal ini adalah ide baru.
59:05Setelah saya memiliki Elixir dan Phoenix...
59:07Phoenix mulai memiliki ide baru yang orang tidak pernah memiliki sebelumnya.
59:10Satu-satunya ide yang terbaik yang terjadi terakhir adalah Live View.
59:13Jadi Live View adalah server-side rendering SSR.
59:18Jadi kita sudah berbicara tentang channels sebelumnya, ya.
59:22Jadi yang ini dibina di atas channels.
59:25Jadi apa yang terjadi adalah Anda memiliki sebuah template.
59:28Web browser Anda pergi ke sana.
59:31Ia mengeluarkan seluruh page sebagai template statis.
59:34Kemudian Anda menghubungi web socket.
59:36Dan Anda akan mendapatkan rendering baru dari site yang sama.
59:41Dan apapun yang terjadi di latar belakang akan dihantar ke Anda melalui web socket.
59:46Terus terdapat Live Wire atau Live View?
59:56Kenapa disebut Live Wire? Karena itu berasal dari Live View.
1:00:00Itu berasal dari Live View, tapi itu berasal dari Live View.
1:00:05Terlebih dahulu adalah Live View, kemudian terdapat Live Wire di Ruby on Rails.
1:00:12Dan Live Wire di RRVL.
1:00:16Keluarga Wire.
1:00:20Keluarga Wire.
1:00:22Banyak-banyak hidup.
1:00:23Dan mereka benar-benar menghabiskan banyak waktu untuk membuat ini efisien.
1:00:33Jadi Anda menghubungkan perubahan setelah Anda menghubungkan web socket.
1:00:38Jadi jika hanya satu perubahan karakter, Anda hanya akan menghubungkan satu perubahan karakter.
1:00:45Super, super, super efisien.
1:00:48Dan biasanya apa yang terjadi adalah, Anda melakukan event.
1:00:54Anda menghubungkan event dari Wire ke web socket ke sisi lain.
1:00:57Logik berlaku, Anda menghubungkan back to Diff dari HTML ke Anda.
1:01:03Anda juga bisa memiliki arah satu-satunya.
1:01:05Anda berdiri di sana, dan Anda dapat menghubungkan update Pub/Sub di bagian server yang dihubungkan.
1:01:11Seperti aplikasi chat, Anda bisa membangun.
1:01:15Atau alat AI seperti stream respons.
1:01:20Apa saja yang Anda inginkan.
1:01:21Tapi pointnya adalah Anda tidak harus selalu melakukan sesuatu atau mendapatkan sesuatu kembali.
1:01:30Yang bagus tentang bagian ini adalah sangat jelas.
1:01:33Jadi Anda memiliki...
1:01:34Kita bisa melihatnya dengan sangat cepat.
1:01:35Anda memiliki usePhoenixLiveView.
1:01:37Itu memiliki sedikit magi.
1:01:38Saya tidak akan berbicara tentang itu.
1:01:39Funksi render ini adalah template Anda.
1:01:44Jadi Anda memiliki...
1:01:48Apa itu bahasa template?
1:01:49Seperti H-A-M-L?
1:01:52Tidak, ini dipanggil HEX.
1:01:54H-E-E-X, HEX.
1:01:56HEX.
1:01:57Jadi apa yang HEX...
1:02:01Jadi Elexor datang dengan E-E-X.
1:02:04Yang dipanggil Elexor Embedder.
1:02:07Itu dipanggil Elexor Embedder.
1:02:08Bisa menjadi apa saja.
1:02:09Bisa menjadi teks file.
1:02:11Saya menggunakan E-E-X untuk menciptakan file PHP.
1:02:14Tapi HEX adalah E-E-X yang mengenai HTML.
1:02:19Jadi itu harus benar-benar HTML.
1:02:21Jadi jika Anda memiliki HTML yang tidak benar,
1:02:23Jika Anda memiliki tag yang tidak benar, ia tidak akan mengumpulkan.
1:02:27Anda bisa menggunakan string seperti ini.
1:02:29Atau Anda bisa membuat file HEX baru.
1:02:32Yang memiliki file HEX ini.
1:02:35Seperti partials.
1:02:37Ya, partials.
1:02:38Jadi itu adalah template.
1:02:42Kemudian fungsinya dihubungkan dua kali.
1:02:44Seperti yang saya katakan, penyimpanan page ini.
1:02:46Dan juga perhubungan websocket.
1:02:48Inisial state.
1:02:50Ini adalah inisial state, kan?
1:02:51Ya.
1:02:52Sebenarnya, jadi Anda menandatangani...
1:02:54Jadi pada kes ini Anda menandatangani varian temperatur ke 70.
1:02:57Dan kemudian Anda menandatangani temperatur ke socket.
1:03:00Dengan 70.
1:03:02Untuk klien.
1:03:04Untuk template, ya.
1:03:06Dan socket kemudian menggunakan tanda dan template.
1:03:09Jadi Anda melihat temperatur di sana.
1:03:12Yang ini?
1:03:14Ya.
1:03:16Dan kemudian Anda memiliki handle event.
1:03:18Jadi itu apabila event terjadi.
1:03:20Anda bisa melakukan hover, apa-apa saja.
1:03:23Apa-apa jenis event yang bisa Anda hantar.
1:03:25Dan Anda bisa melihat di sini, ini hxclick.
1:03:28Ya, nama event ini adalah pssclick.
1:03:31Dan itu akan mengerangkan temperatur increment.
1:03:35Handle event di sini.
1:03:37Ya.
1:03:38Jadi, jika Anda belum menggunakan Elixir sebelumnya, ini bisa menjadi sedikit mengganggu.
1:03:41Biasanya ini dipanggil pattern match.
1:03:43Jadi Anda melihat temperatur ink.
1:03:46Maksudnya itu harus 100% sama dengan nilai.
1:03:50Ya.
1:03:52Oke.
1:03:54Yang ini.
1:03:56Ya, antara server dan klien.
1:03:59Seperti ping pong, Websocket, kan?
1:04:02Selalu terbuka, kan?
1:04:04Karena seperti Websocket.
1:04:06Ya.
1:04:08Sesetengah orang bilang Websocket koneksi sangat mahal.
1:04:12Mengapa Elixir di Phoenix sangat murah?
1:04:16Ya, proses Elixir di Phoenix, atau proses Elixir secara umum, mahal.
1:04:22Mereka sekitar 1 kilobit memori.
1:04:242,000 kilobit, ya?
1:04:272,000 kilobit.
1:04:28Ya?
1:04:29Yang berbeda dari Threads.
1:04:31Threads itu cukup besar.
1:04:33Ya, jadi jika Anda memiliki Threads, akan mengambil lebih dari itu saja.
1:04:37Mereka bisa membangun lebih besar dari 1 kilobit, tapi mereka mulai dari 1 kilobit.
1:04:41Ya.
1:04:42Jadi bukan Threads, hanya proses.
1:04:45Tapi ada satu.
1:04:47Anda harus memiliki satu aplikasi yang berjalan, yaitu Beam, VM.
1:04:53Yang selalu berjalan.
1:04:55Tapi dalam Beam akan ada proses, proses kecil.
1:04:59Mari kita bicara sedikit tentang Beam, sehingga menjadi lebih masuk akal.
1:05:04Karena jika saya bilang ini, tidak akan membuat banyak masuk akal.
1:05:07Jadi mari saya bilang sedikit lebih.
1:05:09Jadi cara Beam berhasil adalah ia memiliki sesuatu yang dipanggil scheduler.
1:05:15Atau sebenarnya memiliki beberapa scheduler.
1:05:17Jadi komputer tipe sekarang, bagaimana?
1:05:19Sepuluh hingga empat core?
1:05:21Sesuatu seperti itu?
1:05:23Ya, server web mungkin.
1:05:25Jika itu sebuah mesin, mungkin hanya dua atau empat core.
1:05:29Ya, apa saja. Saya hanya berbicara tentang mesin lokal.
1:05:32Tapi oke, kita bilang server web yang tipe, Anda memiliki dua core, ya?
1:05:35Yang murah.
1:05:36Maksudnya, Anda memiliki dua scheduler.
1:05:39Maksudnya, Anda bisa menggunakan dua proses di sebaliknya.
1:05:44Jadi jika Anda melihat gambar, terima kasih, Riza.
1:05:50Ini adalah website Anda, menurut saya.
1:05:52Ya, ya.
1:05:54Saya mengambil ini dari Sasayuri.
1:05:58Anda mengambil, Anda mengambil, ya?
1:06:00Mengambil, ya.
1:06:04Jadi, untuk setiap core yang Anda memiliki, Anda memiliki scheduler sendiri.
1:06:08Dan proses ini akan menjadi sebuah kondisi hibernasi.
1:06:13Jika tidak, jika tidak ada apa-apa yang harus dilakukan.
1:06:16Jadi tidak akan dilakukan.
1:06:18Jadi Anda tidak menghampirkan apa-apa.
1:06:20Dan jadi, itu bagaimana scheduler ini berfungsi.
1:06:27Ia mencari proses yang memiliki kerja untuk dilakukan.
1:06:30Ia menggunakan mereka untuk sekitar 2,000 panggilan menurut reduksi.
1:06:34Sekitar 2,000 panggilan fungsi.
1:06:36Dan kemudian, ia menghampirkan dan melakukan proses berikutnya.
1:06:38Itulah bagaimana Anda memiliki kerja yang sama.
1:06:41Dan jika satu scheduler memiliki lebih banyak kerja daripada satu lain,
1:06:46Sebenarnya, scheduler lain bisa mencuri beberapa kerja dari scheduler lain.
1:06:49Jadi, Anda memiliki balansasi kerja yang berlaku.
1:06:55Jadi, scheduler ini berfungsi seperti Q mesaj?
1:07:00Ya, berfungsi seperti Q.
1:07:09Anda melakukan 2,000 panggilan fungsi.
1:07:11Baiklah, Anda selesai.
1:07:13Anda menuju ke akhir talian.
1:07:15Dan itu berfungsi.
1:07:17Dan jika proses tidak ada apa-apa untuk dilakukan.
1:07:19Tidak ada apa-apa kerja untuk dilakukan.
1:07:21Ia tidak akan dilakukan.
1:07:23Ini hanya menghabiskan waktu.
1:07:25Jadi, jika Anda memiliki perhubungan WebSocket yang tidak ada apa-apa untuk dilakukan.
1:07:29Itu murah.
1:07:31Ia hanya berada di situ dan tidak melakukan apa-apa.
1:07:33Ia memakan waktu CPU yang tidak ada.
1:07:35Hanya memori.
1:07:37Oke, itulah kenapa itu murah.
1:07:39Ya, proses itu sangat murah.
1:07:41Anda bisa mengembangkan lebih dari 1 juta proses pada masin Anda.
1:07:45Itu sangat murah.
1:07:471 juta proses itu sangat murah untuk dilakukan.
1:07:54Oke, jadi WebSocket itu tidak berjalan melalui Engine X.
1:07:59Tetapi melalui Beam.
1:08:03Itu yang membuat perbezaan dari WebSocket yang biasa.
1:08:07Saya tidak tahu apa yang Anda lakukan dengan WebSocket biasa.
1:08:11Anda hanya perlu menyiapkan protokolnya, bukan?
1:08:13Ya, mungkin.
1:08:15Mungkin seperti ini.
1:08:17Engine X bekerja dalam jalan pekerja.
1:08:19Ia memiliki jalan pekerja.
1:08:21Kalau kita menggunakan Engine X di server web 2 core,
1:08:28maksudnya kita memiliki 2 proses,
1:08:30tetapi kita bisa memiliki juta proses pekerja dari Engine X.
1:08:34Tergantung pada konfigurasi Anda.
1:08:36Tetapi ayo kita bilang juta proses pekerja.
1:08:38Maksudnya, jika 1 WebSocket datang,
1:08:41ia hanya menggunakan 1 proses pekerja dari Engine X.
1:08:45Oh, benar? 1 WebSocket menggunakan 1 proses pekerja?
1:08:48Ya, sehingga pekerja itu berhenti.
1:08:51Tapi 1 proses pekerja itu sebenarnya berhenti atau tidak?
1:08:541 proses pekerja itu sebenarnya berhenti, jika tidak salah.
1:09:01Oh, itu mengapa itu mahal.
1:09:03Menjaga pekerja itu menjaga hidup sehingga berhenti.
1:09:09Itulah kenapa itu mahal.
1:09:11Ya, sehingga itu mahal.
1:09:13Itulah kenapa jika kita memiliki banyak koneksi hidup,
1:09:17itu bisa berakhir pada proses pekerja dari Engine X.
1:09:22Itulah kenapa itu mahal.
1:09:25Ya.
1:09:27Itu dari Engine X.
1:09:29Tidak untuk mengatakan Apache juga memiliki masalah yang sama.
1:09:35Menjaga hidup atau koneksi streaming.
1:09:41Oke.
1:09:43Ya, maksud saya, tidak ada apa-apa yang perlu dibuat tentang Engine X.
1:09:45Karena biasanya saya memiliki Engine X di depan.
1:09:48Saya belum memiliki masalah, tapi saya tidak memiliki juta-juta orang yang menghubungi untuk servis saya.
1:09:52Seperti yang saya katakan, Anda juga bisa menggunakannya secara langsung.
1:09:55Anda tidak perlu memiliki load balancer secara langsung.
1:09:59Anda bisa menghubungi secara langsung.
1:10:01Seperti yang saya katakan sebelumnya, itu sekitar 1 kilobyte, maksud saya maksimal.
1:10:05Berapa besar page HTML?
1:10:075 kilobyte x 10 x 1000.
1:10:11Anda bisa memiliki banyak memori, tidak akan mengambil banyak.
1:10:14Dan Anda juga bisa mengembangkan ini.
1:10:16Jadi, hal lain yang kita tidak berbicara juga.
1:10:19Sekali lagi, mari kita bicarakan tentang bagian networking.
1:10:24Saya hanya memberi kalian sepeda-peda informasi di sini.
1:10:28Karena ada banyak yang perlu dilakukan.
1:10:32Ada networking yang dibuat dengan Erlang.
1:10:35Oleh itu, Elixir juga memiliki.
1:10:37Anda bisa menghubungi mereka.
1:10:39Jadi, jika Anda bisa memiliki 5 mesin.
1:10:41Anda bisa menghubungi horizontal, Anda bisa memiliki 5 mesin.
1:10:43Dan Anda bisa menghubungi mereka.
1:10:45Jadi, Anda bisa melihat semua orang terhubung.
1:10:51Jadi, jika Anda memiliki 5 server.
1:10:55Anda memiliki 10 orang di setiap server.
1:10:59Jika mereka berhubung bersama, Anda bisa melihat satu sama lain.
1:11:02Anda bisa memiliki informasi yang sama yang digunakan di antara mereka.
1:11:07Saya rasa saya tidak bisa menjelaskan ini dengan mudah.
1:11:13Saya pikir, VM ini sudah dihubungkan.
1:11:21Ia memiliki sistem, bukan?
1:11:24Ya.
1:11:25Kita berbicara tentang sistem itu, bukan?
1:11:27Ia memiliki sistem yang dihubungkan.
1:11:29Mereka bisa menghubungi satu sama lain.
1:11:33Anda bisa menghubungi 2 proses yang berfungsi di parallel.
1:11:41Dan mereka ingin berfungsi bersama.
1:11:44Mereka bisa menghubungi mesin ke depan dan ke depan.
1:11:48Jika Anda menghubungi mesin, Anda bisa menghubungi data dari satu mesin ke lain.
1:11:53Dan itu adalah metode yang sama.
1:11:57Satu masalah yang Anda perlukan adalah PID, proses ID.
1:12:05Jika Anda menghubungi proses ID, Anda bisa menghubungi PID.
1:12:09Jika saya menghubungi proses ID, saya bisa menghubungi mesin.
1:12:14Jika saya menghubungi PID, saya bisa menghubungi proses ID.
1:12:24Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:28Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:30Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:32Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:34Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:36Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:38Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:40Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:42Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:54Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:56Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:12:58Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:00Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:02Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:04Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:06Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:08Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:12Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:14Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:16Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:18Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:20Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:22Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:24Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:26Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:40Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:42Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:44Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:46Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:48Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:50Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:52Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:54Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:56Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:13:58Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:00Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:02Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:04Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:06Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:08Jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:14:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:15:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:16:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:17:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:18:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:19:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:20:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:21:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:22:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:28Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:30Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:32Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:34Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:36Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:38Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:23:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:10Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:12Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:14Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:16Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:18Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:20Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:22Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:24Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:26Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:40Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:42Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:44Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:46Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:48Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:50Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:52Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:54Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:56Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:24:58Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:25:00Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:25:02Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:25:04Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:25:06Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:25:08Dan jika saya menghubungi proses ID, saya bisa menghubungi proses ID.
1:25:10Can we use Rust or Zip or C in Elixir?
1:25:25Yes, so first they supported C, they meaning like the Erlang people, they built in something, so basically it's called a NIF, Native Implemented Function.
1:25:26So the very first thing they supported was C, and then they also allowed Java.
1:25:30And using J-interface, but nobody really uses that.
1:25:34They say you shouldn't use that.
1:25:37But yeah, nowadays you can definitely use Rust.
1:25:40As I said, I used Rust before, I used something called Rustler.
1:25:42A lot of people are using, what's the other one you call?
1:25:47Is it called JIF? Is that what it's called? Or Zig, sorry.
1:25:50Yeah, so there's something called Zigler, which is the same thing for, yeah, it's the same thing for Zig.
1:25:59Oh, this is Erlang Function, not Elixir.
1:26:05Yes, well no, Erlang NIFs are called Native Implemented Functions.
1:26:08So you see over here, NIF as a function is implemented in C instead of Erlang.
1:26:12Oh, okay.
1:26:14So Zig and Rust both will compile to C-like thing.
1:26:24So whether you use Rust or C or Zig, you're all compiling to a NIF basically.
1:26:31NIF.
1:26:38Thank you.
1:26:40Yeah, and now I just realized that Erlang using Hex Docs or documentation framework from Elixir.
1:26:50Yes, so Erlang has finally gone into the 21st century and started using, started using...
1:26:58What did it use previously?
1:27:01I think you can still find it if you go to, no, you have to be able to find the old ones.
1:27:06It was really ugly basically. I mean, it was usable, but it's not as good as the Elixir one.
1:27:12Oh, yeah. There is no, the old one, there is, I cannot find the old one because they changed it to the new one.
1:27:24Yeah, they may have gotten rid of it completely. I'm not too sure how they do the old docs.
1:27:29Way back time machine?
1:27:31Way back time machine. Good idea.
1:27:36It's like the first webpage built by Sun, the HTML, CSS and JavaScript with plain white and blue link.
1:27:52Yeah. All right. Any other question that I missed?
1:27:58Okay, let's wrap it up for now.
1:28:00Oh, please plug your YouTube channel.
1:28:04What is your YouTube channel?
1:28:06Oh, my YouTube channel is, I have a couple of them, but you can, if it's specifically about Elixir stuff, just look for Plangora.
1:28:16I'm not sure if I even have, yeah, I'm not sure if there's even a specific name for it or not.
1:28:24Yeah, there is.
1:28:26Is there a slash something? I don't even know.
1:28:28Maybe /c/plangora.
1:28:30Yeah, YouTube.
1:28:32This one.
1:28:34Yeah, so I plan to add more Elixir videos pretty soon because I used to create a lot of content, at least one to two a week.
1:28:43But it's been a while since I've posted something.
1:28:46Oh, nice. So, yeah, just hit subscribe and if you want to connect with you.
1:29:03Where should they go?
1:29:05Oh, Riza, you know that already because you were following me today.
1:29:10Yes, on X or Twitter, yeah.
1:29:14Yeah, yeah, I don't post a lot, but if you go to x.com/AlanWyma, A-L-L-E-N-W-Y-M-A, you'll find me there.
1:29:23Okay, great.
1:29:26Okay, that's it for tonight. Thank you very much, Alan, for the time, for the explanation.
1:29:33Thank you for all the information.
1:29:38Yeah, information overload, right?
1:29:40Information overload.
1:29:42Can the gears in our head are turning?
1:29:45Yeah, hopefully we can do part two with a lot more audience.
1:29:58And if people want to know more about Elixir and Erlang, maybe you can join the Erlang-Elixir Asia Meetup, right?
1:30:15In the meetup.com, yeah.
1:30:18Okay, that's it, maybe.
1:30:21When?
1:30:23When is the next one?
1:30:25You definitely follow the group and you'll find out, because I'm not too sure.
1:30:29Now, hopefully this month we'll try to see what we can do.
1:30:34Okay, okay.
1:30:36So, yeah, if you are interested in Elixir and Erlang, please do follow the meetup group and maybe see you next week.
1:30:51That's it from us.
1:30:53Bye-bye everybody.
1:30:55Thank you, bye.
Suka episode ini?
Langganan untuk update episode terbaru setiap Selasa malam!
Episode Terkait
4 Jun 2025
Ngobrolin Astro - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Malam ini kita kembali akan membahas Astro, fokusnya di sisi server. Masih b...
27 Feb 2024
Ngobrolin Fungsional JS - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...
17 Jun 2025
Ngobrolin Database - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Malam ini kita akan membedah berbagai cara scaling database. Masih bersama p...