EMx 033: Databases and Elixir with Kamil Lelonek
- Mark Ericksen
- Charles Max Wood
Special Guest: Kamil Lelonek
In this episode of Elixir Mix, the panel talks with Kamil Lelonek who is a full-stack developer and programmer. Chuck, Mark, and Kamil talk about Elixir, Postgrex, databases, and so much more! Check it out!
1:23 – Guest.
1:43 – Chuck: Today, we are talking about databases.
1:55 – Guest.
3:10 – Mark: We have your blog that you wrote in our show notes. Talk about your experience with exploring these features?
3:39 – Chuck.
3:46 – Mark: I didn’t know those features are in Postgrex. Can you talk about your experience and your journey?
4:10 – Guest.
6:17 – Mark: I am curious, what problem were you trying to solve?
6:31 – Guest.
8:12 – Mark: I like you saying: rather than modifying the application code itself, you created a separate application. I think Elixir is a good fit for that – what’s your experience with this?
8:40 – Guest: I agree with this, but let’s think about it in the other way.
9:48 – Mark: Yeah I can see that. It’s good to be aware of the upsides and downsides. It’s an interesting idea.
10:40 – Guest.
11:38 – Chuck: My experience is mostly in Rails. The other way I have solved this problem is “pulling” but this way is more elegant. Before we have talked with Chris McCord about LiveVue. Is there a way to hook this handler up to LiveVue to stream the changes all the way up to the frontend of web application with Phoenix?
12:20 – Guest.
12:55 – Mark talks about Elixir and GenServer.
13:29 – Guest.
13:49 – Mark: Please go and read Kamil’s blog post because it’s simple and it’s written well!
Mark: I think Elixir is a great usage for GenServers.
14:28 – Guest.
14:35 – Chuck: You setup a store procedure, which I don’t see a lot of people doing within the communities. How necessary is that store procedure that you’ve created there?
15:00 – Guest.
16:16 – Chuck: What if you want to do targeted notifications?
16:28 – Guest.
17:33 – Mark: I am curious if you have experimented with the practical limitations of this? Like at one point does it start to break down?
18:00 – Guest.
20:00 – Chuck: I will be honest I am kind of lazy. Outside of the general use I don’t go looking for these, but when I hear about them I say: wow!
20:09 – Guest.
20:57 – Chuck.
21:15 – Guest talks about solutions that he’s found.
22:08 – FreshBooks!
23:17 – Mark: What other kind of databases have you had experience with for comparison reasons?
23:40 – Guest.
24:56 – Mark: You talked about defaults and I want to come back to this topic.
25:08 – Mark asks Chuck a question.
25:12 – Chuck: I don’t know.
25:23 – Mark talks about the databases that his work utilizes.
26:45 – Mark and Chuck go back-and-forth.
27:49 – Guest mentions a solution to the before-mentioned problem that Mark gave.
28:47 – Mark: It can get messy. I don’t repose this as a permanent solution, but it allows you do a staged-migration.
29:15 – Chuck: Do you run into problems with Postgrex? Most technologies if you don’t run into problems you aren’t pushing it enough (at least that’s my experience).
29:29 – Guest answers the question.
30:26 – Mark talks about active, active, active.
31:14 – Guest.
33:25 – Mark: In Elixir, we talk about the things that are in the box and one thing that comes up is “mnesia.” Can you talk about this please?
33:47 – Guest talks about mnesia.
35:17 – Mark talks about mnesia some more.
Mark: It is an available option (mnesia), but I don’t know if it’s something that people want when they are looking for something more traditional.
37:04 – Guest.
37:30 – Mark: Yeah something people should be aware of. If you are encountering problems it’s good to know the different tools that are out there and available.
38:42 – Mark: One question: What are some of your favorite features of Postgrex?
38:57 – Guest.
41:08 – Mark talks about Postgrex’s features.
42:14 – Guest.
43:10 – Mark: I had a case where Elixir and Erlang and you can convert term to binary and binary to term. I took some data structure and converted it to a binary and using Ecto and tell it: serialize this and when it loads back out it is a native Elixir type. It’s not always the right solution, but in my cases it actually worked.
43:59 – Guest talks about a library that he wrote back-in-the-day.
44:40 – Chuck: Anything else? Nope? Okay – Picks!
44:52 – Ad: Lootcrate.com
END – CacheFly!
- Elixir: GenServer
- Visual Studio Code
- “How to use LISTEN and NOTIFY PostgreSQL commands in Elixir?" By Kamil Lelonek
- Guest’s Medium Blog
- Event Store
- Erlang: mnesia
- GitHub: cachex
- GitHub: meh / amnesia
- When to use Ecto, when to use Mnesia
- GitHub: Exnumerator
- YouTube: Entreprogrammers
- Kamil’s Twitter
- Being professionally proactive!