
Elixir Mix is a weekly show focused on the Elixir programming community. Our panel discusses topics around functional programming, the Elixir ecosystem, and building real world apps with Elixir based tools and frameworks.
Similar Podcasts

The Rabbit Hole: The Definitive Developer's Podcast
Welcome to The Rabbit Hole, the definitive developers podcast. If you are a software developer or technology leader looking to stay on top of the latest news in the software development world, or just want to learn actionable tactics to improve your day-to-day job performance, this podcast is for you.

The Cynical Developer
A UK based Technology and Software Developer Podcast that helps you to improve your development knowledge and career,
through explaining the latest and greatest in development technology and providing you with what you need to succeed as a developer.

Flutter 101 Podcast
Weekly podcast focusing on software development with Flutter and Dart. Hosted by Vince Varga.
Episode 33: EMx 033: Databases and Elixir with Kamil Lelonek
Panel: 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! Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:48 – Chuck: Hello! Our panel today is Mark and myself. Friendly reminder to listeners: check out my show the DevRev. Our guest today is Kamil Lelonek! 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! Links: Ruby Elixir Elixir: GenServer GenServers Elm JavaScript Visual Studio Code React “How to use LISTEN and NOTIFY PostgreSQL commands in Elixir?" By Kamil Lelonek Guest’s Medium Blog Postgrex.Notifications Redis.io Event Store PostgreSQL MongoDB Erlang: mnesia GitHub: cachex GitHub: meh / amnesia PostGIS When to use Ecto, when to use Mnesia PostgreSQL Ecto.Type GitHub: Exnumerator YouTube: Entreprogrammers Kamil’s Twitter Sponsors: Loot Crate Get a Coder Job! Fresh Books CacheFly Picks: Mark Being professionally proactive! Chuck Get A Coder Job eBook Challenge: Pomodoro Technique Kamil Book: Thinking, Fast and Slow by Daniel Kahneman My Blog My Site
Episode 32: EMx 032: Using Ecto with Edgar Pino
Panel: Mark Ericksen Josh Adams Special Guest: Edgar Pino In this episode of Elixir Mix, the panel talks with Edgar Pino who talks with the panel about the latest version of Ecto! They discuss Ecto’s new features and how easy of a transition it was to go from the previous to the newest version. Edgar Pino is a software engineer who currently resides in Utah! Check out today’s episode! Show Topics: 0:00 – Advertisement: Get A Coder Job! 1:04 – Mark: Hello! Please give us your background? 1:16 – Guest: I have been in Elixir for the past year or two and I have been living in Utah. 1:48 – Mark: I love the nature and state parks. Winter is coming, so I hope you are ready! 1:58 – Guest: Winter...hopefully it will be great! 2:20 – Panelists and guest go back-and-forth. 2:30 – Mark: Let’s talk about your blog posts about Ecto. What are your new announcements? 2:52 – Guest: Our new version was released a few weeks ago. 3:32 – Panel. 3:38 – The guest talks about the old and new versions of Ecto. 4:03 – Panel: What is new and how is this going to affect me (the new version)? 4:11 – Panel: The transition was pretty painless for me. The only change was the breaking-up of the adapter ad also the timestamp bit. That was it. 4:34 – Panel: Yeah that micro-timestamp surprised me for a second, but it wasn’t that bad after all. 4:52 – Guest: Yeah it was painless for me, too. 5:19 – Panel: Edgar can you talk about the change and what they did with the timestamps? 5:32 – The guest answers the question. 5:54 – Panel: Elm opted to use the micro-millisecond, too. Time zones aren’t a thing. 6:24 – Mark. 7:08 – Panel: My tests are the only reason why I care about the millisecond. 7:21 – Mark: With the upgrade don’t do what I did. Mark talks about how he updated and the issues he had. 8:47 – Guest: Pattern matching? 8:53 – Mark: Yep that sort of stuff. I didn’t need to do it and it was a learning experience. Edgar, please give us an introduction to the blog posts? Why did you want to document it? 9:18 – Guest: I always used Ecto with Phoenix but started learning Ecto by itself. I jotted down notes that I thought was interesting. That’s how it started. 10:17 – Mark: See links in the show notes. Using a gen to use the repo – this is one thing that I didn’t know was an option. 10:46 – Guest. 11:01 – Mark asks a question. 11:10 – Guest: Not really PHP applications but listening to web messages and hot topics but you are doing the database and serving data... 11:40 – Guest talks about Ecto and the different versions and features. 12:09 – Mark chimes-in. 12:23 – Panel: Yep – it’s under the hood and it’s for business logic and doesn’t have a web piece. Stop writing tings for the web – it’s a fad. 12:50 – Mark: It’s an umbrella and saw this through the Phoenix generators. 13:54 – Guest talks about web applications. 14:06 – Mark: Let’s talk about schema and databases? 14:23 – Panelist chimes-in. 14:51 – Panelists and guest talk about schemas, apps, and more. Check it out here. 16:13 – Guest: You will get the data and pass it in as a structure and... 16:23 – Mark: Here is a map of what I’d like you to do on my behalf. It goes to a chain set and I will turn it into a string and this is why it’s failed. 17:25 – Panel. 17:31 – Mark: It’s not hard and it’s pretty easy. Let’s talk about blog posts. 18:10 – Panel. 18:22 – Mark: I use Absinthe in the library in Elixir to support GraphQL. 18:50 – Panel. 19:06 – Guest: The total number of results and only once did I need a more complicated thing. 19:34 – Mark: I haven’t had a need for those. 20:01 – Panelists and guests talk about the hypothetical situations where and how they would use certain features for said situations. 20:23 – Guest: You don’t have to understand right out-of-the-box. 20:40 – Panel: Have you used stored functions as meta-columns in an Ecto schema? 20:48 – Panelist explains. 21:24 – Guest: I have used them in the past and now I don’t. For me it was hard to debug – maybe it’s just me. 21:43 – Panel: I was introduced to them through a colleague of mine. 21:53 – Mark chimes-in and talks about him being a DOT NET developer. 22:18 – Panelist chime-in, too! 22:50 – Mark. 23:16 – Panel: It was an awful time and not a good idea. 70 pages! Debugging it was hard. 23:35 – Mark: That experience was apart of that burn that I had before. I wanted to stay far away from it as far as I could. 24:00 – Panel: When I was doing it in DOT NET we didn’t have migrations. 24:12 – Panelist continues. 24:32 – Guest: I wonder if... 24:37 – Panel: It’s just a sequel – it’s not just an Ecto specific feature. 24:48 – Guest. 24:53 – FreshBooks! 26:01 – Mark: Edgar you were interested also in HOW Ecto was built. What experience did you have? 26:21 – Guest answers the question. 28:22 – Panel: No you typed REPO there. 28:30 – Guest: Whenever you save or make an update it’s a method. Unlike Ecto you have to all it something else. 28:47 – Panel: Hey let me get those article posted and someone did it in Loop and that is a lot of queries. 29:03 – Guest: Yeah that’s a good point. 29:45 – Mark: Something I’ve noticed is that they talk about performance improvements and better memory usage. Go read about it- it’s great. They talk about HOW Ecto is working and what is behind the scenes. 31:15 – Mark: Another feature that I have seen is UPSERTS. 31:50 – Guest talks about UPSERTS, too. 32:34 – Mark: Say I have a system that has 3 servers and it’s rolling updates (it will take down one and put up the new code, etc. and it will cycle) one thing they added was a lock on the migration table. I don’t know if you’ve had this – once it hits production data it is slow. Mark continues. 33:20 – Panel: I think it was just luck of the draw. 33:30 – Mark continues. 33:57 – The guest talks about his experience with the above-mentioned scenario. 34:20 – Mark: I like that you both have had goo experiences with your upgrades. I want people to be excited and know that there are great features out there. 34:49 – Guest: Yes, I have found that the blog post is helpful. It’s good to get adapted to the new changes. 35:17 – Panel: Yeah I normally don’t have teasers up to the actual upgrade. 35:28 – Panel: The community is nice and people made a good effort to communicate and help people. They did a GOOD job of helping people to feel comfortable within the transition from one version to the next! 41:37 – Ad: Lootcrate.com END – CacheFly! Links: Ruby Elixir Elixir: GenServer GenServers Elm JavaScript Visual Studio Code React Edgar Pino A sneak peek at Ecto 3 Ecto Active Record Pattern Repository Sponsors: Loot Crate Get a Coder Job! Fresh Books CacheFly Picks: Mark Plex Josh This Erlang Life Guest Ecto Documentation! Edgar Pino – My blog!
Episode 31: EMx 031: Lessons from a Decade of Erlang with Brujo Benavides
Panel: Charles Max Wood Mark Ericksen Special Guest: Brujo Benavides In this episode of Elixir Mix, the panel talks with Brujo Benavides (Argentina) who is a software engineer and uses a mix of Elixir, Erlang, and GO. They talk about the similarities and differences between Erlang and Elixir. Brujo talks about conferences that he organizes. You can find the guest through GitHub, Twitter, and About Me. Check it out! Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:58 – Chuck: Our special guest is Brujo B.! Let’s talk about the topic today, which is: Lessons from a decade of Erlang! We really haven’t talked about Erlang in the past. 1:47 – Mark: Can you give us your introduction, please? 1:55 – Guest: I started programming at 10 years old. I translated a guest to Spanish. Then after school I started working with other languages, until I did my thesis at the university. I got hired and then while there they taught me Erlang. After 2 years the company went away and died. When that happened I had my honeymoon plan to go to Europe. I went to Poland and found a company that interviewed me, I passed the test, and got hired. The best solution I could ever make. I moved from developer to another position, to director and then to CEO. 6:16 – Chuck: You have been doing Erlang for a while. My brain said 10 years of Elixir and that’s not possible – my bad. When Erlang came onto the scene how did that affect you? 6:40 – Guest answers Chuck’s question. 9:06 – Chuck: See show note links, please. It’s cool to see that you took cautious approaches to the language. What’s the balance between Erlang and Elixir? 9:33 – Guest: It’s about 45/45, because I also do GO. I don’t really like GO, but it’s whatever. 9:59 – Chuck: What has changed in the last 10 years? 10:09 – Guest: It’s my personal view on this and what I see at conferences. I saw a change from beginning Elixir as much acceptance and the community is more open. The people are already so developed already. 11:53 – Mark: I know there is an effort to make the beam languages more compatible. I know using a colon in the name and there’s a lot of communication there. At the last conference, they were talking about this. I think it’s neat that the community is not fighting this. In the early days it seems that the Erlang community were fighting it – what’s that transfer been like? 13:00 – Guest: There were other languages outside of Elixir with the beam. They failed and didn’t catch-on. 15:00 – Panel: How have you liked/disliked coding in Elixir vs. Erlang? 15:14 – Guest: I like many things that Elixir and Erlang can offer. Elixir is a mature and young language. There are many things that they corrected from day one. One thing I don’t like about Amber is that... 17:36 – Mark: I also use it b/c it does give that consistency. It normalizes all the different ways you can code. When I review people’s code I will take the code formatter and get it to be normalized. I am happy with it and I will take it. 18:17 – Guest: Everybody understands everybody’s code. 18:48 – Guest mentions Elvis. See links below. 19:00 – Chuck: It’s interesting. It comes down to community and in some ways it’s not that Erlang community isn’t a good one, but sounds like... 19:17 – Guest: The other thing that happened with the Erlang community is the topic of building websites. In 2015 it was in the Elixir Conference in San Francisco – I think – this is what happened... 20:47 – Mark: I think it’s a credit to both communities. I’ve watched those talks before. I was watching these Erlang Conferences and there have been Elixir speakers there. Good collaboration and I’m happy for that. 21:19 – Chuck: Will these 2 technologies grow together? 21:30 – Guest: Great mix of talks from Erlang and Elixir and talking about how to build systems. 22:49 – Mark: This blog post that you wrote – see show note links before. Can you mention the main topics that you wrote within this blog post? General lessons you’ve learned? 23:23 – Guest: The most important is how we start building stuff over common abstractions. 26:07 – FreshBooks! 27:11 – Mark: You mentioned the behaviors and the abstraction that is available through OTP is through the genserver. Those are and yes it’s true to educate people you will start with a spawn to see how simple things are. Yes, you don’t build a system on that. 27:55 – Guest: I recommend the talk to Spanish speakers. See links below. I asked for a translation but he said no. 29:10 – Mark: You talked also about test-driven development. How has testing in the Erlang community from the past and how has it been influenced by Elixir if at all? 29:53 – Guest: I am not sure. 32:34 – Mark: I don’t know how to spawn another node and have a disconnect in a testing framework? There might be other ways to do it? I would like to borrow that between the two. I’ve built some code that is cluster aware. Yeah I would love to have integration tests. Maybe that is available through Elixir- thanks for talking about that! 33:27 – Chuck: Anything else? Let’s talk about the Sawn Fest! 33:40 – Guest: It started in 2011 and started with a contest that anybody could participate. Judicators judged it and then awards were given. 34:38 – Chuck. 34:44 – Guest: The next year in 2012 the sponsors gave prizes. We were eagerly waiting but there was no contest that year. 37:47 – Chuck and guest go back-and-forth. 37:57 – Guest: There is a team of four now. If you go to the website it actually looks amazing unlike last year!! 39:19 – Mark: People will not hear about this, though, at the time it broadcasts b/c your episode is coming out after Nov. 24th - 25th. Can you do the game/contest remotely? 39:54 – Guest: Yes, people are playing from around the world from India, Denmark, Romania, Africa, and China! So yes you can do it from your house. 40:18 – Mark: What can people do or see or read about the winners? And after-the-fact? 40:32 – Guest: Yes when judges are judging we make the depositories public!! 42:05 – Chuck: My Sunday’s are usually pretty full. 42:19 – Guest: Yes that happened to me. As an organizer I cannot quit b/c I still have to be there. Time with my wife and kid is important, but yes it’s fun! 42:43 – Mark: Yes that shows how passionate they are about the community and the language. 42:56 – Chuck: Mind-blown! 43:10 – Chuck: You organize some conferences right? 43:17 – Guest: Yes. 44:25 – Chuck: Anything else? 44:30 – Mark: Dialyzer and curious about you organizing a Meetup? I have organized an Elixir Meetup. With Meetups how can you tell us how to make it successful? Are you doing both Erlang and Elixir? How are you running it? 45:10 – Guest answers the question. 51:53 – Chuck: How can people find you? 52:00 – Guest: GitHub! Twitter! About Me! (See links below.) 52:19 – Chuck: Picks! 52:20 – Ad: Lootcrate.com END – CacheFly! Links: Ruby Elixir Elixir: GenServer GenServers Elm JavaScript Visual Studio Code React Erlang Solutions Inaka Inaka Credo_Server Erlang Solutions Elvis 114 RR Elixir Show 048 RR Show 10 Lessons from Decade with Erlang YouTube Video in Spanish Erlang: Common_Test ExUnit Smalltalk SpawnFest 2018 SpawnFest Zoom Brujo’s Twitter Brujo’s Website Credo Sponsors: Loot Crate Get a Coder Job! Fresh Books CacheFly Picks: Mark Zoom Meeting Charles Mastodon Brujo Katana Test
Episode 30: EMx 030: Writing Great Unit Tests with Devon Estes
Panel: Josh Adams Charles Max Wood Mark Ericksen Special Guest: Devon Estes In this episode of Elixir Mix, the panel talks with Devon Estes who is a software developer who uses Elixir. He currently resides in Berlin, Germany and has been working there for the past four years. The panelists and the guest talk about Elixir, testing, and much more! Check it out! Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:49 – Chuck: I am starting a new show called The DevRev. Check it out here! Our special guest today is Devon Estes. Episode 18 is a past episode you’ve been on – check it out here! 1:26 – Devon: I am American but live in Berlin, Germany for about 4 years now. I was a freelancer, but now I am at a “real” job now where I am a software developer using Elixir. 1:50 – Chuck: Cool! 2:05 – Guest: Something to always talk about testing – it’s evergreen! 2:15 – Chuck: What are the benefits you get from testing and what is your approach? 2:24 – The guest answers the question. 3:53 – Panelist chimes in. 4:18 – Panel: I like playing around and I know when something is terrible. I have to poke around to figure out if I like it or not. I am an exploratory developer. I write a test and it looks great at first but the implementation is terrible or something. 5:54 – Mark comments on developers and how they interact with their code. 7:15 – Mark: How do you approach that? I heard you talking about tests, spikes and other things. 7:22 – Guest: If it is something that is small I will write the test first. If it’s larger I will usually do 2-3 spikes to figure out what is going on. The guest continues with this topic. 8:54 – Panel: I found that over the years I couldn’t do that. 9:21 – Guest: With the topic of testing in Elixir I have these “rules” but I break them all the time. Sometimes you get better, cleaner tests out of it if you were to break the rule(s.). Tests are only there for 90% of the time, in my own opinion. Sometimes you have to play around to see what’s going on. 10:36 – Panel: I agree a lot, especially with integrations. 10:49 – Guest. 12:18 – Panel: You have these guidelines or rules and you know when to break those rules. You talked about these specific rules and I thought it was interesting. I was reading through these and I have the same rules but you codified them with examples. Can you walk us through your guidelines? 13:00 – Guest: To be super clear I am talking about unit tests. When I think of testing there is this testing pyramid. 13:52 – Panel. 14:57 – Guest: Like I said, these rules are meant to be broken, if appropriate. 16:39 – Guest continues with unit testing and other types of testing. He talks about easier to more difficult kinds of tests. 17:42 – Guest (continues): Sometimes the tests are accurately true, and sometimes not. It can be easy to get into those traps. Hopefully they will tell you what is expected. 18:25 – Panel: In Ruby, there is a test that would modify your code and remove stuff? Was it Mutant? Mutant testing. 19:03 – Guest answers the question. 19:38 – Guest: I don’t know if Elixir has anything like that, yet, but it would be pretty cool. It would be a good idea for someone to take on! 20:00 – Chuck: I have had conversations with a colleague – they both pushed back and talked more about Cypress.io and integrated tests. 21:04 – Chuck: I think it’s interesting to see the different approaches! 21:14 – Guest: We are lucky to have great tooling in Elixir!! The guest mentions Wallaby.js! 24:39 – The guest talks about unit levels. Check it out here! 26:35 – Panel. 26:48 – Chuck: How does it affect my workflow? I like end-to-end tests. The efficiency, if it’s repeating stuff – I don’t care – as long as it’s fast enough. If it ruins my workflow then it’s a problem. 27:22 – Panel. 28:12 – The topic “test coverage” is mentioned by Chuck. 28:25 – Panel. 29:02 – FreshBooks! 30:10 – Guest talks about Wallaby.js. 32:24 – Panel: We’ve had you on before, and the idea is that you are all into Elixir and its path. (EMx 018 – Episode with Devon Estes) 32:57 – Guest: I think testing in Elixir is simpler. 34:04 – Panel. 34:07 – Guest: You have commands and you have queries. The guest gives a hypothetical example! The guest also mentions GenServers, too. 35:42 – Guest: There are two ways that you can interact with the process: command & queries. 37:00 – Guest talks about different libraries such as: MoX. 37:41 – Panel: Any tips on testing the servers; just any GenServer? 38:25 – Panelist shares his approach with this. 39:54 – Guest: I don’t test name servers b/c they are by definition global state. The guest goes into great detail about testing – check it out! 46:29 – Panel. 47:01 – Guest: I kind of hate the term dependency interjection in the functional context. 47:17 – Panel: I think it’s helpful, because... 47:28 – Guest. 47:49 – Panelists go back-and-forth! 48:20 – Panel: Sending a message to the testing process – this was something that was stated by Devon earlier. I find this really helpful. 49:00 – Chuck: Picks! 49:05 – Ad: Lootcrate.com END – CacheFly! Links: Ruby Elixir GenServers Elm JavaScript Visual Studio Code React Wallaby Cypress.io Mutation Testing – GitHub MoX MRS 003 – Episode with Devon Estes RR 295 – Episode with Devon Estes RR 330 – Episode with Devon Estes EMx 018 – Episode with Devon Estes Devon’s GitHub Devon’s Twitter Sponsors: Loot Crate Get a Coder Job! Fresh Books CacheFly Picks: Mark Get Alias Blog - Mox Josh GitPitch.com Slide Deck by Josh Charles Values Extreme Ownership Sit down with your team Discord server for DevChat Recommendation Page for Elixir Devon Dell Laptop XPS 13 Play Station Mini Test - devonestes@gmail.com
Episode 29: EMx 029: JWT Auth in Phoenix with Joken with Sophie DeBenedetto
Panel: Mark Ericksen Nathan (Nate) Hopkins Charles Max Wood Special Guest: Sophie DeBenedetto In this episode of Elixir Mix, the panel talks with Sophie DeBenedetto who is a teacher at the Flatiron School, a software engineer, and creator of Break In. The panelists and Sophie talk about her blog, the Flatiron School, and her background. Check it out! Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:50 – Chuck: Welcome! Our panel is Mark, Nate, and myself. Our special guest, today, is Sophie! Please introduce yourself! 1:32 – Guest: Hi! I am Sophie and I am an engineer who works at the Flatiron School. We are growing and fast and offer a lot of different courses. We are an international school working with Elixir and Phoenix. 2:10 – Chuck: You gave us multiple topics: Joken and Elixir Packages. Give us please some background there. 2:33 – Guest: I will talk about the problems we were trying to resolve with Joken. The Guest goes into detail about this topic. Sophie mentions Rails, Joken, Guardian, Phoenix, and Erlang-Jose. 4:41 – Guest: We found this nice little library that we needed and that was Joken. Initially, we were trying to hit the nail with a racket and all we needed was a hammer. 6:48 – Guest: I am telling the whole Internet our problem we had, and how we resolved it. That’s why I am here today, because you all found my blog. 9:04 – Panel: There is a lot there! Some terms that you mentioned: JWT is referred to as a JOT – for those listeners who don’t know. Panelist asks question. 9:43 – Guest answers the question. 10:52 – Panel: When I used Joken before I did use it with the HMAC algorithm. You are on the fringe of what is mainstream and you can come across those rough spots. You are doing this service of saying yes I found this problem and I will try to help you with this problem. 11:25 – Guest: It’s an interesting feeling to say we solved this problem and then realizing we were wrong about it. I’m glad that happened because it’s real. As a teacher I saw students being reluctant to blog b/c they didn’t want to be wrong, but that’s how you grow! 12:22 – Chuck: We talked about the JWT and the dots. How is this different than Ruby gems and other things? 12:44 – Guest: I think anyone would have thoughts on this. There’s not a lot of resources, and look into the Ruby community. From the Flatiron School our focus has been Ruby, and we ask our students to contribute. We want to find an answer to any problem we are facing through Ruby and Rails. More or less you will find a solution from somebody through the Internet. Elixir is definitely different from this because it’s a newer framework. 14:26 – Panelist asks about the curriculum through the Flatiron School. 14:48 – Guest answers the question. 16:08 – Panel: We have had Kate Travers from Flatiron Schools on our podcast before. What has your path been? 16:30 – Guest: We graduated at the same time and I went to the educational-side, which I did for a year to about a year and a half. I thought I needed to get my hands dirty, though, to be a better teacher. I went to this company...and I recently rejoined the Flatiron School’s faculty. 17:40 – Panel: That’s great. I was with a company for 3 years, left for 2 years, and then I came back. It’s a testament to not burning bridges. There is value to leaving and going to get new and different experiences. You grow in the process, and that’s what happened for me. I like your path and thanks for sharing your story! 18:50 – Fresh Books! 20:00 – Chuck: Do you have any policies on how students (at Flatiron School) need to contribute? 20:06 – Guest: Not so much HOW but we encourage it. The guest goes into detail and mentions Elixir School (see links below). 21:33 – Panel: That is a good suggestion if a newbie wants to contribute and they are afraid to contribute. You can get involved and your suggestion will be reviewed. 22:10 – Guest: Yes! There is a team member, Matt, and he contributed to the code base. He was new to the Elixir community, and showed his thought-process. Contributing to open source is great because it helps the community, and opens a pathway for great feedback and conversation. 23:30 – Panel: I think that’s a healthy way to look at pole requests. I have worked with folks that don’t view it that way, though. They hold their code a little close to their chest and that’s it. I like the dialogue. 24:00 – Chuck: This stuff isn’t staying still b/c the Elixir community is constantly growing. I cannot recommend highly enough to learn something new. It can be just 20-30 minutes a day. If you aren’t doing that then you will fall behind. 24:57 – Panel: Question for Sophie. How did you get involved with Elixir School? 25:18 – Guest: I am definitely not an expert. It’s a group of people who thought that Elixir should be more accessible. I like it because it’s beginner-friendly. Find something to contribute to b/c there are tons of different levels to find what’s good for you. 27:09 – Panel: Has it be re-skinned/re-themed? 27:15 – Guest: Yeah, I think so. Along with the theme-related they have been putting high priority into different languages. 27:38 – Panelist comments about natural languages and translations. 27:52 – Chuck: Was this a project through the school or something else? 28:06 – Guest: It’s not through the school. 28:36 – Chuck: Any other projects through the school? 28:46 – Guest: Yes, the school has a lab and it’s neat to see it grow! 29:38 – Panel: Have you tried those other technologies before (and they didn’t work) or did you just anticipate it was a problem that you couldn’t solve without the Beam. 30:02 – Guest answers. 32:33 – Panel: That makes sense. You were reaching for Erlang when you were on the Ruby Stack. 32:49 – Guest refers to tooling and Rabbit. 33:00 – Chuck: You mentioned Rabbit – what does your typical stack look like? Are you running Phoenix? Or here is a job so here is Elixir? What is your process like? 33:23 – Guest: A Ruby on Rails app it has all the ups-and-downs and it’s kind of old. As we are growing and partnering with new companies/schools we are updating and seeing a need to grow even more. 34:49 – Panel. 34:54 – Guest: The video that Chris McCord put out! 35:03 – Chuck: Check the show notes’ links! 35:15 – Chuck: Picks! 35:23 – Ad: Lootcrate.com END – CacheFly! Links: Ruby Elixir Elm Atom.io Flutter.io JavaScript Visual Studio Code React Guardian Joken Erlang-Jose Flatiron School Flatiron School's Blog Flatiron Labs Elixir School Elixir School EMx 020 Episode Utah Elixir Meetup Blog: How We Built the Learn IDE in Browser Break_In The Great Code Adventure Rabbit Sophie’s Website Sophie’s Twitter Sponsors: Loot Crate Get a Coder Job! Fresh Books CacheFly Picks: Mark Utah Elixir Meetup Nate Racquetball Getting out and doing something Charles repurpose.io Sling TV Fox Sports Sophie Elixir School Learn IDE Blog
Episode 28: EMx 028: Elixir, Node, and Bitcoin with Pete Corey
Panel: Mark Ericksen Josh Adams Special Guest: Pete Corey In this episode of Elixir Mix, the panel talks with Pete Corey who is a software developer who resides in Denver, CO (USA). He uses Node, React, and Elixir and currently is working on two big projects. Listen to today’s episode to hear the panelists and Pete talk about Elixir, Node, Bitcoin, and Gen_TCP. Check it out! Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:50 – Mark: Welcome! Our panel is Josh Adams and our guest is Pete Corey! Pete, can you tell people about yourself? 1:12 – Guest: I am a software developer and I run a web development consultancy company. I use Node and React, and I use Elixir in my free time, and I blog about that and various projects. 1:38 – Mark: How did you get into Elixir? 1:40 – Guest: Node has its limitations. I found myself not understanding concurrency at all. I saw Elixir and I came around to it when it was around its 1.0 era. I have been hooked ever since. 2:43 – Josh asks a question. 3:00 – Guest. 3:42 – Josh: Yeah it felt like I was putting a s 4:03 – Mark: Letting the mantra of letting it fail or let it crash. How do I recover? You are mentioning about your Node situation that you have these complex situations and how do I get back to a good running state. That’s what I like about Elixir. I’m more concerned: how do I get back to a good running state. It’s a mental shift and I really appreciate it. Instead of worrying about this half, I am focusing more on how do I use it to make it run smoothly? 5:20 – Guest: I totally agree. Learning Elixir has really flipped my mind about developing. I know failure happens – figure it how it fails and then anticipating HOW they might fail to make things easier. In terms of bigger projects... The guest talks about the BIG project he is working on now! Listen here! 7:40 – Panel: That sounds cool! Are you building this by yourself or with other people? 7:54 – Guest: It’s a solo project and I want to keep it that way. I was into Bitcoin before and I bought Mastering Bitcoin. Started working through that – how to go through private keys and things like that. 8:40 – Panel: I think that it’s great that you are SHARING through the process. I think that’s awesome and you are showing what you are learning and the pitfalls and the gains. 9:11 – Guest: It’s been a learning process with pattern matching. 10:20 – Panel. 10:30 – Guest talks about bytes. 10:59 – Panel: One of the first things I did in Elixir was... 11:27 – Guest: ...moving bytes around and moving integers and things like that. Elixir is much nicer! 11:40 – Panel: Can you talk about Gen TCP, please? 11:55 – Guest: A goal of my project tis to dig into the underlining Erlang properties. I think it’s a shame that people don’t explore this. The guest talks about what Gen TCP is! 13:38 – Panel: I like using Gen TCP. 13:54 – Guest: Every problem that I had boiled down to my lack of knowledge. 14:29 – Panel: What do you mean: it worked out better? 14:35 – Guest: My Gen TCP connection would pass to the...the issue is that Gen TCP is a streaming protocol. It might contain multiple packets or 1½ packets, etc. Every time I received some data I would impend it to a buffer and I would look for head eliminators. After that would be the packet length and I would split that number of bytes from the original buffer. That’s hard to explain, but... The guest talks about a solution!! 16:21 – Panel: I think there are a few great points there. One, Erlang has a lot of rich history. What are available through Erlang already? Join the Elixir Slack Channel! 17:34 – Panel: Sounds like you are using property testing? I think that’s cool – I want to spend more time digging into this! What is it? 18:00 – Guest: It is pretty cool and new to me. The guest talks about unit testing and then property testing. 20:20 – Panel: What kind of experience have you had? 20:40 – Fresh Books! 21:48 – Guest: The one place where I am using property testing is... 23:41 – Panel: That’s awesome. I want to get into it more. 23:50 – Guest: Once I get going it falls together pretty easily. It’s hard to come up with the properties that I want to test. 24:11 – Guest: It’s far more eye opening than unit testing. When you have to think about these fundamental properties you see in a different light. 24:33 – Panel: I am dropping in a link to your blog articles that you tagged. Is there anything else you want to say about your project? 24:55 – Guest: It’s an ongoing project. I haven’t actually implemented the meat of the project, yet. Please stay tuned! 25:25 – Panel: Is it your website: petecorey.com? 25:35 – Guest: Yes www.petecorey/blog.com and my newsletter! 25:47 – Panel. 25:55 – Guest asks a question. 26:05 – Panel. 26:12 – Panel: What else to talk about? 26:40 – Guest: There is another project to talk about and it’s about guitar chords and things like that; if you want? 26:57 – Panel: Yeah, generating music with Elixir is simple. I know you did the distance between chords thing? What else is super cool about it? 27:27 – Guest: It programmatically generates these guitar chords. The coolest piece is the algorithm all of guitar fingers for a guitar chord and fret this fret, etc. Then I can take the chord with a specific fingering and measure the distance. 28:30 – Panel: Have you seen Google Wave Net? It’s fairly recent. 28:39 – Guest: Is it related to Google Labs? 28:47 – Panel: I doubt it. 29:18 – Guest: Very cool, but I don’t have the AI chops. 29:26 – Panel. 29:29 – Guest: Yeah it works my brain a bit. 29:40 – Guest: Yeah I play too much guitar. I had enough money to buy my own guitar and amp. 29:54 – Panel: Talk about the chord charts. I was looking for the word: tablature! END – Ad: Lootcrate.com Links: Ruby Elixir Elm Atom.io Flutter.io JavaScript Visual Studio Code React Bitcoin Gen_TCP Stream Data Bitcoin YECC LEEX Music Rustler ElixirWeekly Jsonnet Ksonnet Pete Corey’s Blog Pete Corey’s Twitter Secure Meteor Grafonnet-lib Prometheus-operator The Sparrow Sponsors: Loot Crate Get a Coder Job! Fresh Books Cache Fly Picks: Josh JSonnet KSonnet Grafonnet Prometheus Operator Mark HSTR Pete The Sarrow
Episode 27: EMx 027: ExVenture with Eric Oestrich
Panel: Mark Ericksen Josh Adams Nate Hopkins Charles Max Wood Special Guest: Eric Oestrich In this episode of Elixir Mix, the panel talks with Eric Oestrich who is a web developer who resides in Indianapolis, Indiana. He and the panel talk about ExVenture, Gossip, Cowboy, Raisin, Grapevine, and much more! Listen to today’s episode to hear all about it! Finally, check out Eric’s ElixirConf talk and his blog, too! Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:51 – Charles introduces the panel. 1:14 – Nate talks about his background. 1:27 – Chuck: My first programming job I worked with Nate. Nate also works now with Eric Berry. We have a special guest and that is Eric Oestrich. Tell us who you are, please! 1:55 – Eric: I work for Smart Logic, LLC. We are a consultancy who has moved to Elixir for the last 2 years. 2:14 – Chuck: Tell us what ExVenture is? 2:46 – Eric: Late 80’s to mid-90’s it’s like a MUD tech space game. Eric goes into detail of what ExVenture is. 3:28 – Panel: Familiar with MUDS. 3:36 – Panel: Audience can’t tell that Eric isn’t an old guy. Eric – you aren’t an old gentleman – how did you get into it?! 4:02 – Eric: The concept has fascinated me. It’s pure game mechanics. In school I wrote things in Python and try to make it threaded. Never got it going. After that I wanted to do a MUD but not good enough in C and couldn’t get it working in Ruby neither. But one faithful day (a year ago) I got an echo and chat server and now we have a MUD. 5:02 – Panel: Why should you be interested? I will tell you why. ExVenture is an open source... I encourage everyone to dig into and play with it! It is a game (so that makes it more fun) but you are dealing with game mechanics. I am also curious where you wanted this to go? What made you say: I want to create this and make it open source? 6:37 – Eric: I like it and work has mostly played for it. It’s MIT because of that. Early in the project (between client work) it was a common thread and that’s why it’s open source. 7:27 – Panel: I ran into you at the conference and you were showing me... Talk about getting metrics out of your system, please? 8:20 – Eric answers the question. 9:09 – Panel: When people are trying to get metrics out of their system – what EVEN makes a good metric? 9:21- Eric: I am trying to figure that out myself, actually. I want to know how long it takes for someone to login? Is that someone trying to hack into my system? If you speak at a global channel or something else... Eric goes into more detail. Eric also mentions Prometheus. 10:31 – Panel: You mentioned: What would you want to see on a dashboard? 11:01 – Eric answers the question and mentions Prometheus EX. 12:19 – Panel: As you starting building this you were pulling libraries out of it and making them separate libraries. Are you pretty proud of GOSSIP? 12:37 – Eric: Yes! Gossip is based on web sockets and it’s a cowboy socket. Eric talks about Gossip. 13:10 – Panel: What other clients are you trying to support? 13:15 – Eric: There is a JavaScript client and Node-based game called... There is a bundle system for that. There is also a Python option. The one thing we haven’t done yet is a C client. That is important b/c most of the games that you could connect to are 25-30 years old. 14:26 – Panel asks a question. 14:34 – Eric: That is the C client we are waiting for. 14:43 – Panel: You talked at the conference (see the show notes) you talked about things you learned along the way. Can you talk about your process? What kind of bottlenecks and how did you resolve those issues? 15:10 – Eric answers the question. 16:44 – Panel: Did you run out of processes? 16:47 – Eric: The VM shut-off – it was just done. That was the first go-around. 19:27 – Eric: After the ElixirConf, I wanted to see how far I could push it. Eric continues. 19:51 – Panel: I want to identify some of these principles you just talked about. First, the major block was the gen server is a single process. 20:21 – Panel. 20:24 – Panel: I think that is a common mistake when people come to Elixir in the beginning stages. How did you solve it? 20:50 – Panelist answers the above question. 21:30 – Panel: That’s one of the big things. It’s an architectural issue. Second, you mentioned really LARGE messages. You were sending around really large messages. 22:20 – Eric: For every 100 players was a gigabyte of ram – it was a lot. And that was mostly b/c every copy...when a new character enters the room then that message gets sent out then it gets copied again, and... 23:08 – Panel. 23:24 – Panel: The third one you mentioned was around data base blocking or...? Can you talk about this one a little more, please? 23:33 – Eric answers the question. 24:02 – Panel. 24:30 – Eric: It was always saving...I tricked Echo into saving...There is a lot of things that could be better to save specifically faster. 24:52 – Panel: I think people would hit those 3 points eventually – there is a lot of value to that. 25:09 –Eric: Yes that was near the end of my ElixirConf talk and my blog. 25:23 – Panel. 25:33 – Eric: It came out in May and I figured out that I needed to learn how to cluster in Elixir. That’s what the ElixirConf was a bout from single node to multiple nodes. Eric continues. 28:38 – Panel: When you have a cluster – and I join – when I transfer from one room to another room, I could be passed off to another server or node? 29:01 – Eric: Whatever you mean by “being passed off.” Whatever server you land on that’s the one you will be on. The magic is that... 30:08 – Advertisement: Fresh Books! 31:15 – Panel: I am going through the code base now and I am excited. It’s going to help me get better at Elixir. 31:32 – Eric: That’s the point of ExVenture. 31:48 – Panel: You host a server so people can see what it’s about – and that’s Mid Mud, right? 32:09 – Eric: Yep, the first hour of you playing. There is a town crier, you request, and then combat monsters. Also, it is plugged into Gossip and you can talk to them. 32:44 – Eric: Yep, there you go: player logged-in! 32:55 – Panel: Maybe not b/c it will turn into a new podcast soon. 33:07 – Panel: What if I want to use Gossip, what is involved there? 33:16 – Eric: Gossip.Haus/docs – Go there! Set it up and start sending and receiving events. 34:40 – Panel: When I was trying to understand the Prometheus metrics it helped. And then in downloading it (as a tip), for me, it was easy to use the DOCKER instructions. 35:32 – Eric: Yep, that was done by a community member. 35:40 – Panel: Are you looking for people to contribute? 35:50 – Eric: Yep, I have a public Trello board. There are 2 tags. 36:12 – Panel: Sounds like you have people involved? 36:22 – Eric: Bunch of people came on after the ElixirConf. 36:33 – Panel: If people download it (another tip) in the SEEDS file you will find out the admin username and password. I guess that’s something you can add. Login: ADMIN and Password: PASSWORD. What I thought was fun (playing with it) in the admin screen I got a sense that it’s generic enough that I could create a space game. Like playing with sectors of space. Does that make sense? 37:42 – Eric: I don’t want it to be tied JUST to fantasy b/c that’s what MUD is. Everything should be good for historical/ fantasy/ etc. any genre that you want to do! 38:13 – Panel: I could see a HackFest and the company could create one for their business. You could have a lot of fun with it. 38:38 – Panel. 38:44 – Panel: Hidden things on their websites. 38:50 – Eric: Search TEXT ADVENTURE in Google Search. See show notes below. 39:24 – Panel: There is a whole subculture that people are interested in and I didn’t know that these people existed. I think that is interesting. 39:45 – Eric: There are tons of games out there that are 20+ years old! 39:55 – Panel: What is your favorite old school MUD game? 40:02 – Eric lists his favorite old school games! One of them is Achaea! 40:51 – Panel: I like the status bars are really cool. If you haven’t played it you have a health bar. Also you have these expiring times and it’s very cool – modern MUD. 41:22 – Eric. 42:00 – Panel: You came from a Ruby background – what was your transition to Elixir like for you? How did you come to Elixir? What was that like for you? 42:15 – Eric: Yeah some of my friends were into Elixir from a functional standpoint about 2 years ago. They were reading about Phoenix and such. They wanted to see how it was going to go. 43:06 – Panel: Try by fire. Coming from Ruby to Elixir – what some advice would you give the same person? 43:37 – Eric: It was less of a culture shock b/c Phoenix was still kind of “Railsy.” 44:35 – Panel: When I was first learning ERLANG, and telling them that it was a standard library. 44:59 – Eric: It’s using Cowboys Ranch. 45:19 – Eric: There are a number of people out there that they want people to run to SSH b/c it’s more secure. 45:46 – Eric: I guess if we are on this topic about secure... 46:40 – Chuck. 46:51 – Panel: I think there is a lot of value, Eric, and the lessons you’ve learned and the path you’ve gone down. If you are new to Elixir going to ExVenture is a great way to start. 47:20 – Eric. 47:35 – Panel: Just run the format and we can do it that way. I encourage people to download it and see what it’s like as a user, and play with it as an admin. We have a Meetup coming up this Thursday. Eric is coming in virtually into our Meetup group. 48:29 – Eric: Gossip is open source. Grapevine and Raisin – check these out, too, b/c they are open source, too. 48:58 – Panel: Where can people contact you? 49:05 – Eric: Twitter! GitHub! Mudcoders.com. 49:39 – Picks! 49:44 – Ad: Lootcrate.com Links: Ruby Elixir Elm Atom.io Flutter.io JavaScript Visual Studio Code React Erlang ExVenture Ex_Venture ExVenture’s Trello Board Prometheus Prometheus EX Gossip GitHub: Gossip 2018 – Conference Talk @ Elixir Conf with Eric Oestrich Eric’s Blog Libcluster Raft – GitHub.io – The Raft Consensus Algorithm pg2 MidMUD Gossip/Haus/Docs ExVenture: Docker Environment Google: Text Adventure Achaea Cowboy SSH Grapevine Raisin ASDF Plugins Eric’s GitHub Eric’s Twitter Brooklyn Nine-Nine Elm Packages MetaBase Sponsors: Loot Crate Get a Coder Job! Fresh Books Cache Fly Picks: Eric MUD Coders Elixir LS Mark ASDF Library Josh Brooklyn Nine-Nine Elm UI Nate Mentoring and Paired Programming Metabase Charles Monster Hunters International
Episode 26: EMx 026: Higher Level Functions GenState Deployments with Bill Peregoy
Panel: Mark Ericksen Josh Adams Charles Max Wood Special Guest: Bill Peregoy In this episode of Elixir Mix, the panel talks with Bill Peregoy who is a software engineer who uses Elixir and loves Graph QL. The panel talks with Bill about his Elixir background, in addition to past and current projects. Check out today’s episode to hear the panel talk about Elixir, Graph QL, code reviews, and much more! Show Topics: 0:00 – Advertisement: Get A Coder Job! 1:07 – Chuck: Tell us who you are and why you are famous? 1:16 – Guest: Here it goes...I have a diverse background. I have a background in hardware and went into software and it got me into Ruby. From there I moved to the software world and in constant contact with a Ruby project. Then I found an Elixir book and thought it was really cool. About a year ago I started working with a consulting company that uses Elixir. They have a cool entrepreneur group. Then about 3 months ago I transferred to another project. 2:41 – Panel: The MBTA? 2:49 – Guest: You thought I was using old crust technology, but they are using new technologies. 3:06 – Panel: You have this hardware background have you looked at NERVES? 3:17 – Guest: I have an interest in it. 3:34 – Let’s talk about deploying Elixir apps. Getting into Elixir might be interesting to talk about? Let’s talk about how you got into Elixir, please. 3:55 – Guest: I had an easy slide into it. The guest talks about how to structure code and how he learned about Elixir. 4:34 – Chuck: Where would have gotten into trouble if you didn’t have that? 4:39 – Guest: ...how do you organize code? It’s a bunch of modules with functions in them. 5:19 – Panel: You mentioned code reviews – and to me that’s how you learn something fast. 5:30 – Guest: I was lucky to have worked with a person who is really picky about code reviews. They were detailed and I learned a lot from him. 5:53 – Panel: I give code reviews, too. What makes a good code review from the receiving end? 6:12 – Guest answers the question. Guest: Don’t write the code for me, but...here is a general direction. 6:37 – Panel: I give the person a wrong review so they have to learn it. 7:00 – Chuck: Would have it been easier if it was a smaller project? 7:10 – Guest: I think it helped that it was a larger project. 7:29 – Chuck: We have talked about deployment and other tools that you’ve used. What I am curious about – you were using AWS and ECS can you talk about that, please? 8:00 – Guest: It was a wild ride for me. We knew we’d have to get there eventually and went for it. We never had deployed an Elixir app before. I had little knowledge with AWS, so there were thousands of new things I was learning in one week. I learned a lot from this guy and he said let’s get the app running, then let’s take it to an RDS, then let’s make sure this and that work. There is a lot going on there, but breaking it down you could figure it out when they came up. It was a lifesaver having his work b/c it would have taken me weeks instead of a few days. 9:28 – Chuck: My wife and I watched The Martian a few days ago. The character said: you solve one problem at a time. 9:47 – Guest: Yes. 10:00 – Guest: The article, “Guide to Deploy a...” 10:20 – Guest: I understood the pieces very well. 10:30 – Panel: Setting up an umbrella project. Is that how you have yours set-up? 10:48 – Guest: Single Phoenix application for me. 11:15 – Panel: Sounds like you were learning a lot of different technologies – any big “AH HA” moments? 11:30 – Guest answers the question. 12:15 – Panel: I like how the Distillery 2.0 Guide and the docker file... 12:30 – Chuck: Walk us through your structure of your talk? 12:39 – Guest: Yes, higher order functions - that’s what I was talking about. Where in the Elixir world you want to pass around functions. I had this idea that I had one task that was very similar but you had to do it multiple times. To do that I defined one piece of code that... It was a way to reuse a lot of code and... 13:51 – Panel: That is a pattern I enjoy using. Instead of using a mocking library I like a function that can direct it. The thing I enjoyed about it was that I could have a test data and a test interface in a production environment. I could create a customer... 15:06 – Guest. 15:44 – Guest: Gen state is pretty awesome. It’s not in Elixir Proper, yet. 16:55 – Chuck: I can see how that is helpful. You have to manage the pipeline on your own. 17:18 – Guest: You can upload a certain number of permits. That can be handled behind the scenes. 17:45 – Panel: Yeah the first state was manage the Q and then... 18:48 – Guest: That is what I am doing right now – one at a time right now. If I need more processing on this one node, I can... 19:20 – Panel: That’s when Elixir feels very powerful. 19:26 – Guest: That’s a talk I have a lot. Ruby is great, but when you dive into OPT in Elixir then it’s amazing. 19:54 – Chuck: We are starting to get there with Elixir. I don’t miss as much stuff with Ruby as I did before. 20:10 – Guest: What libraries I don’t need and I haven’t come across that just yet. 20:44 – Panel asks a question. 20:50 – Guest: I wasn’t directly involved. They are working with predictions for bust lines. And they grab data form many different sources. They are trying to combine all that data and it has been a good solution for them. 21:25 – Panel: Since you have a Ruby background and hardware – what is the Elixir system like for you? 21:41 – Guest: I haven’t come across too many problems. Elixir’s language tends to be smaller – which I like. I think people from JavaScript like having NEW things all of the time. Elixir is done and we are just adding small things here and there. 22:13 – Panel: Yeah, I agree. Elixir is a mature platform right now. 22:45 – Guest: Elixir is very mature – I agree. 23:10 – Panel: I think it being built with care is nice. 23:34 – Guest: I love diving into Elixir and source code. I know exactly what I need. In some Ruby libraries they are so heavily dependent on... 24:05 – Loot Crate! 25:13 – Chuck. 25:40 – Guest. 25:50 – Panel: Being explicit and concise at the same time I don’t feel so bad. 26:00- Chuck: ...I want to know that those are there. If it was – you have to go through all of this ceremony – that’s boilerplate that I feel doesn’t’ add a lot. 26:36 – Panel: Getting out a functional language...being able to see a module and it has every sort of path that I can run is nice. 27:00 – Guest. 27:37 – Panel: I did that a bit for my Rail code. People didn’t like that it wasn’t “normal.” 27:52 – Guest. 28:09 – Panel: Coming into this project where one of the developers likes using MACROS. It’s been a challenge b/c MACROS still let’s you create magic. We talked with Sasha and he queued me to this document and it’s the library guidelines. In the anti-patterns it says: avoid macros. 29:32 – Guest: ...but you should think twice before you dive into macros. 29:50 – Panel: I used macros once to enforce... 30:01 – Panel: What are your feelings on dialyzer – what do you think? 30:15 – Guest: I think it’s the way of the future - I love it. 30:58 – Panel: I am trying VS code and it does incremental dialyzer compilation. 31:27 – Guest: Of course the problem with dialyzer are the error messages. It can be frustrating. 31:40 – Panel. 31:43 – Guest: ...eventually I would figure it out. I went dialyzer front to back on my current project. A month into the project I wasn’t writing new specs, and then I realized I hadn’t done it in awhile, and of course I have a 500 error on the server. Turns out I was... 33:00 – Panel: Yes. I encourage people to... 33:07 – Guest: The way it captures things is that... 33:29 – Panel. 33:42 – Panel: We talked about that on the previous episode. It’s an RC right now, but it’s been helpful. There is a explained option. It will give me an example, I didn’t know how to fix it but... 34:14 – Guest: It can help you write simpler code. 34:47 – Panel. 34:52 – Guest: With an Elm background I think it helped me. 35:13 – Panel. 35:45 – Guest: My dream world would be... 35:55 – Panel: Josh, how does it do it? 36:03 – Panel: What is Elixir LS? 36:09 – Panel answers the question. 36:50 – Panel: I have used ATOM as an editor...how do you like visual studio code? 37:01 – Panel answers the question. 37:38 – Panel: I have used FLUTTER. 37:44 – Chuck: I like it. 38:20 – Chuck talks about Flutter and the advantages of it. 38:34 – Guest: What editors do you like, Bill? 38:36 – Guest answers the question. 38:54 – Panel. 39:00 – Guest says that it is something worth trying. 39:07 – Chuck: Try it you will like it – there is an ATOM plugin, too. 39:36 – Panel: I hate the name visual studio code. 39:43 – Panel. 40:02 – Panel: I know you have some feelings of Graph QL? 40:12 – Guest: It is love in every sense. One day in vacation... 41:14 – Panel: I like it, too. 42:01 – Guest: I haven’t much experience there. I played years ago with Graph QL and it looked encouraging and thought it was hard to build one of those things. To help debug as you are writing them is out of this world! 42:30 – Panel: I can look at the schema in Graph QL, here are the mutations I have available. 42:50 – Panel: The docs are right they can’t be wrong. 43:03 – Guest. 43:38 – Chuck: What are you working on now and what are you struggling with? 43:48 – Guest: None of them are super, super hard but today I am trying to learn how to send... 44:14 – Guest: There are a lot of new things for me like AWS, new technologies and a tight schedule. Trying to get new things done. 44:33 – Chuck: What do I learn next – that is a question that I hear a lot. 44:43 – Guest: Yeah, learning when I need them but the exception is Graph QL for me. Learn things as we go – nothing is too scary b/c there are proof of concepts out there. 45:32 – Chuck: People will ask this when they are trying to work on a project. 45:44 – Guest: I try to learn things on these side projects. I usually bail out before the really hard stuff. 46:00 – Chuck: Picks! 46:14 – Fresh Books! Links: Ruby Elixir Elm Atom.io Flutter.io JavaScript Visual Studio Code React Erlang Guide to Deploy a... YouTube Video – Bill Peregoy GenStage DockYard Article Library Guidelines Avoid Macros VS CODE Elixir LS VS CODIUM Graph QL Absinthe DIRENV HEX DOCS Bill’s GitHub Sponsors: Loot Crate Get a Coder Job! Fresh Books Cache Fly Picks: Mark Direnv Josh Flutter Bill Distillery Doc Charles Extreme Ownership
Episode 25: EMx 025: Rethinking App Env and more with Saša Jurić
Panel: Mark Ericksen Josh Adams Charles Max Wood Special Guest: Sasa Juric In this episode of Elixir Mix, the panel talks with Sasa Juric who is the author of Elixir in Action (2nd edition) and uses Elixir, Erlang, and OTP. He is from Zagreb, Croatia and you can check out his blog here! The panel talks about his book, past and current projects, in addition to configurations, and Elixir. Show Topics: 0:00 – Advertisement: Get A Coder Job! 0:50 – Chuck: Panel. Our guest is Sasa Juric. Introduce yourself to us please. 1:12 – Guest: I am known for writing my book and my blogs. I am president to the Elixir forum and helping people out. I have been using Elixir for 5 years; in the past I have used C++ and others. 1:46 – Chuck: App env and configuration and sounds like we could talk about more. Let’s start there, though. 1:59 – Guest. 2:03 – Panel: A little background with configuration b/c it’s been a topic in the community. There is a lot of discussion around it. What is the right way? And there is a change in how we deploy software. We have more docker containers and multiple stages of deployment and tons of configurations through environment settings. Anything you can talk about that? 2:51 – (Guest answers those questions. He discusses in detail about docker configurations. Also, the guest talks about the various settings per the different environments.) 7:25 – Panel: That was a thorough summary. 7:29 – Guest: I can talk more. 7:35 – Panel: So we have background on configuration is setup and the goals we have. What are some of the ways that a person with Elixir – how do they start? Tips / advice? They have their app and trying to go to production? 8:22 – (Guest answers the question.) Guest: 90% of the time, this is what you want to do. This is what you do...build it and put it in the folder structure, and you are good to go. Why is this good? You don’t have to have a bunch of... If you are using Phoenix than you need Node.js and you don’t want to have that on your production. You can easily run side-by-side different versions of Erlang and Phoenix. 11:40 – Panel: You can do that in a single docker file? 11:47 – Guest. 11:51 – Panel: You just copy the files... 11:56 – Panel: I learned I could do that by the distiller 2.0...I hadn’t encountered that before. 12:11 – Guest: Look into the distillery. I want to give compliments to Paul and the team is great. Go to Distillery and see the tutorials. 12:37 – Panel: People think I don’t want to use docker there is an option.... 13:01 – Guest. 13:04 – Chuck: Different types of configuration? 13:13 – Guest: Right this discussion too which is probably talking about my blog post, and I have this wild thought about configurations. We can discuss the issues and different solutions. We have these configurations files and they contain these time various configurations and... There is usually more than 1 configuration file. 17:53 – Panel: You only get agreement. I have had that problem, too, saying what is this configuration? What are THE Settings that are present and yeah that is a problem? You identify these problems in your blog, where it’s not checked in and the code will not... I have had to work around that in my projects. We are going to create a sample project and it will have defaults. So we can improve the situation. 18:45 – Panel: Class based configurations – I get angry. 19:05 – Guest: I try to challenge this status quo. Some people agree and others disagree. Some say this blanket statement. 19:54 – Loot Crate! 20:47 – Guest: Another thing to note is that configurations are free form key values. Remember, my point is that it boils down to some function being involved with these values. (Guest continues...) 23:36 – What is your direction that you are proposing? 23:40 – Guest: We are going to discuss other issues. 23:49 – Panel: As background, as apart of that whole configuration in those distillery docs... 24:41 – What is the next step in the discussion? 24:48 – Guest: Let’s take a step back. (Guest talks about Distillery 2.0.) 27:09 – Guest continues... 29:50 – Panel: That makes sense and flexible. 29:58 – Guest: The other complaint is that the Phoenix generator is pushing the community in the wrong direction by forcing a lot of things by default. When you generate your project with... My team we have used the configuration b/c it seems the right way to do, but what constitutes this? Should this go here and what is a configuration? 30:52 – Panel: I don’t have a synced answer – I don’t have a boundary to say what does or doesn’t’ go in there. 31:13 – Guest: Like the operator might decide to change the HPP port or maybe you want to...? You have to make the decision – what will those things be? 31:32 – Panel: React to a configuration change, it’s very clear to... 31:57 – Guest: It is very arbitrary by its nature. One of the main things (in the blog post) my coworker said it felt like a configuration. What does that mean? Should we have some sort of rules? What is a configuration and what isn’t? 32:33 – Panel comments. 32:55 – Guest: Now I am swinging in a new extreme. You started with parameters nothing more and there is nothing more than functions and parameters. 34:41 – Chuck: You keep bringing up JSON is there a reason why? 34:55 – Guest: I am not a super fan of JSON for various reasons but we decided on JSON b/c it’s fairly easy. Most of our clients and admin can add it. 35:18 – Chuck: Asks a question. 35:30 – Guest: Getting a configuration... 36:35 – Panel. 36:39 – Guest: With Distillery 2.0... 36:47 – Chuck: What formats do you like if you don’t like JSON? 36:58 – Guest: I am not sure. I would like to run everything in Elixir directly. 37:47 – Panel: I have been using Kubernetes. I like that I can have comments. 38:00 – Panel. 38:10 – Panel. 38:17 – JSON is terrible but you can use it and everyone can, too. 38:27 – Guest: I would probably pick JSON between those two. It’s the lesser of 2 evils. 38:40 – Panel. 39:03 – Guest: The key is to clean up this configuration in the first place. My impression is... 39:30 – Panel: I wrote a library, and there was configuration but it doesn’t belong – it’s not a configuration setting nor...so where should those kinds of settings be? I know they are just parameters, but...so we can pull out our configuration files? 40:11 – Guest: It should be grouped by scope. Take Phoenix application... 41:54 – Panel: That’s your exposed configuration – conceivably – but it should be hard coded. 42:04 – Guest: It won’t be hard coded, and the server will be different in production than your machine. 42:17 – Panel. 42:30 – Guest: Precisely. You have to ask: is this a configured parameter or not? 42:43 – Chuck: Can you talk about how to encrypt and/or protect these secrets? 42:56 – Guest: There are these secrets that are broad secrets via...and it depends on you how you’re going to protect them. Use some encryption scheme. 43:20 – Panel. 43:28 – Guest: Right. 43:31 – Chuck: In Rails it has a secret file, too and you have to provide the key to the app. Then your KEY is a secret. It feels like this circular problem. 43:53 – Guest. 44:54 – Panel: When you are dealing with that sort of thing...library will absolutely assume...and it limits flexibility. 45:17 – Guest: It’s not just an Elixir thing I have seen it in Erlang, too. 47:32 – Chuck: Any stories of people getting this wrong or right? I guess people don’t talk about that; any good stories? 47:54 – Guest: A lot of stories, actually! 49:52 – Panel: Being that Elixir is a more functional language, how do I put in a configuration that will be available at runtime and available very early. I think that is why we stick things up there by putting it in there. 50:35 – Panel. 50:43 – Panel: If it is a library and passes it to a configuration - where does it put it? 50:53 – Panel: A library and not an application... 51:05 – Guest. 51:45 – Panel: Where do I put it? 52:03 – Guest: There are some libraries that have to be configured before we start. The only case that needs some setting before we start is LOGGER. 53:00 – Panel. 53:15 – Guest. 54:00 – (Guest mentions à la Carte – check it out here! It’s just a factory.) 55:38 – Chuck: Let’s do picks! 55:46 – Fresh Books! Links: Ruby Elixir JavaScript React Erlang Kubernetes JSON Logger Docker Config Rethinking App Env Distillery Documentation Elixir in Action Elixir in Action – Book – 2nd edition Elixir – Library Guidelines Elixir Forum The 12-Factor App Distillery’s Documentation GitHub: Toml-Elixir GitHub: Riak_Ensemble GitHub: Elm – Beam GitHub: CodeC-Beam Library Guidelines – Elixir Configuring Elixir Libraries Handling Configurations Etcher Tweet Mashup Sasa’s YouTube Video Sasa’s Twitter Sasa’s GitHub Sasa’s Information at Elixir Conf Sasa’s LinkedIn Josh Adams’ Email: josh@smoothterminal.com Sponsors: Loot Crate Fresh Books Cache Fly Get a Coder Job! Picks: Sasa Run-time Library Guidelines Elixir in Action – Book – 2nd edition The Erlangelist Solid Ground Chuck Tweet Mashup My JavaScript Story Channel Shush App Mark Etcher.io Josh Elm Beam
Episode 24: EMx 024: “Sagas” with Andrew Dryga from Hammer Corporation
Panel: Mark Ericksen Eric Berry Josh Adams Nathan Hopkins Special Guest: Andrew Dryga In this episode of Elixir Mix, the panel talks with Andrew Dryga who is a software engineer (full-stack), entrepreneur, blockchain architect, and consultant. He currently works for Hammer and previous employers include Contractbook, Nebo #15, BEST Money Transfers among others. He studied at the National Technical University of Ukraine. Check out today’s episode where the panel and guest talk about Sagas and Sage. Show Topics: 1:52 – Our guest today is Andrew Dryga. Why are you into Elixir? 2:04 – Andrew: I have worked in Elixir for a few years. I worked on one of the biggest opensource projects for a while now. 2:42 – Let’s talk about Sage! 2:49 – Andrew: I felt like I was doing the same thing over, and over again. Andrew talks about how he was on a mission to solve a problem that he was having. 3:48 – Panelist: I have run into this problem before, and I am looking forward We have distribution systems and anything that is external for us (Stripe), and one of the solutions was to create a multi. Let’s create a user, register theses different pieces, and then... Then we realized that this request was taking too long. Our transaction is timing out. The other connection went to the other server. We had database records removed from the other side. People aren’t aware that they have these distribution problems. I think Stripe is a good example of that. I started with my multi... 5:24 – Andrew: I am trying to be very programmatic. I don’t want to do that, so write now the project is multi. It’s doable if you know what you are doing. If you are dealing with just one it’s simple. But if you can monitor them (Sage Read Me)... 56:16 – Let’s talk about Sagas! 6:19 – Andrew talks about what Sagas are. 8:20 – You are right it is a new mental model. That’s why I love the Sage library because it is simple. It gives structure to that mental model. The idea that I will take step one and create a user, step two another entry, step three now an external entry. It can fail for any reason. Then these compensating functions are saying: what is the undo for this? It could be just delete this specific entry. But do I have that right? 9:53 – Andrew gives his comments on those comments. 10:26 – Andrew continues his ideas. 11:09 – When you start with a new team, you don’t bring Sage right off the back? What is your strategy to figure out that pain? 11:32 – Andrew: I don’t have a plan – how do I feel about THAT coder. After about 2 services and 1 call it’s time to use Sage or it will be too complex. Integration is the case. So if you try to integrate substitution then... 12:29 – Question to Andrew. 12:35 – Andrew: Figure it out by judgment and it varies by situation. I enjoy working with them but I’m not like them. I use my best judgment. 12:59 – You talked at Code Beam and talked about Sagas and Sage. I think that’s a good resource to defend you case. To talk about the sequence of events, something goes wrong, and then rollback the changes. What feedback have you received? 13:46 – Andrew: Yes, good feedback. There some people will say that there are problems, but I know there are companies that are actively using it. People say that it simplifies their projects. I think the presentation slides can definitely help. 14:39 – Yes, check out the show notes links. 14:45 – Are you a consultant or are you fulltime? 14:53 – Andrew: I used to be fulltime and do large projects for companies. Andrew talks about those projects in detail. Andrew: Those projects we used Elixir (see above). I do a lot of opensource, too. Last time I check it was... 16:04 – That’s a good number. 16:08 – Andrew: I am trying to participate in conversations, but if I had more times I would work more in Sage and opensource; to have a persistent nature behind Sage. I think it can be done a much better way. 16:55 – How do you envision doing that? Configuring it to a repo or something else? 17:07 – Andrew: I want to solve the problem of... 17:56 – That’s cool. 18:03 – Andrew: Yeah, everything I find a new application built in. 18:17 – Andrew and panelist go back-and-forth. 18:32 – Andrew continues talking about Sage and models. 18:43 – Proxy channel – I think I want to do a Mud. Anyway... 18:59 – Question. 19:11 – There is a WX library that is built into Erlang which was talked about at the conference. That one looked interesting. How they built the debugger and the widgets. It looked that there was more there than I thought. 19:47 – Great to have out of the box. 19:56 – Andrew comments. Andrew: I saw the talk from Canada and... 20:08 – It’s early to work with. Someone tweeted about it and now I’m rambling. 20:08 – Andrew: Someone made the keyboard while on the plane. 21:04 – I hope we are going that route eventually. 21:12 – Panel and Andrew go back-and-forth. 21:39 – What other applications have you found that Saga would work for? 21:50 – Stripe. 21:56 – Panelist: When I make an authorization request, capture the funds. Even when I am dealing with one of their services there are multi-interactions. 22:03 – Andrew comments. 23:32 – I have an app that I would prefer using Saga because of the... 23:44 – Loot Crate! Check out their deal! 24:37 – Andrew talks about the core team, Elixir and Sage. 26:03 – Panelist: To solve a problem with SAGA let’s talk about the pros and cons. I had an umbrella application and one of the applications was supposed to be the interface to that service. It could be like a payment service and other payment gateways. I am going to make my request to this app, and it’s going to track the app. The main thing continues and talks to the bank and/or Stripe. Depending on the problems but you still have THAT problem because maybe the account wasn’t set up properly. Now we’ve talked to the bank, medium intervention, and let’s run this. I like SAGE and SAGAS because I don’t’ have to go to that level to break out the proxies. I just need to talk with the sales force or something. I need a reliable system when it can recover when something goes wrong. It might be over engineered but I don’t know. 28:17 – Andrew comments about that particular example (see above). 29:03 – With Sagas you can loose them... 29:09 – I haven’t played with Rabbit, yet. The one that is built into AWS? There’s Simple Q and there is something else. Rabbit is built with Erlang. What’s that like for you? 29:40 – Andrew: It’s pretty painful. Andrew mentions MPP. 30:37 – Interesting; I haven’t gotten that far, yet. 30:45 – My first Elixir application had...behind it. That was the worst part. I feel those pains. 31:00 – Andrew: That’s the case. 31:51 – The other service I was thinking of was... 31:56 – Question for Andrew. 31:59 – Andrew answers. 32:39 – That is the problem we are having at work because of older code. How can we resend them out? That probably will be a good fit for us. 33:18 – Andrew. 34:31 – Andrew: Once you’ve found the bug... 35:16 – When you are coming to a new language, it could be React or...the first few things will be pretty awful. What has this path been like for you, Nathan? 35:40 – Nathan: Yeah I am very early days. Yesterday, I had a set of code that I was creating to try just to function and it was really ugly. But I was okay with that because I was just trying to solve the issue. 36:05 – You have to be okay with that. The idea that: You are trying to just make it work. When you come to Elixir and being fresh and thinking I don’t even know what to do. 36:32 – I have a buddy with that now saying: How do I even start with this?! 36:40 – Andrew: It takes time to break your head and a different way to rethink the code. Once I have the basic concepts then it makes me feel super efficient. 37:24 – I am curious what languages have you had experience with? 37:38 – Andrew: I started commercial projects in my teenage years. I built websites for them. I have some JavaScript knowledge and that was good going to Elixir. 39:04 – I favor that side, too. It’s not hard to build solutions with the things that are in the box (Erlang). I don’t like to bring in all of these libraries that people are creating. It’s great but, at the same time, I have been burned by Rails and JavaScript where you bring in all of these different libraries, and it becomes really nasty. I could have solved it more natively. 39:55 – Andrew: In Elixir you can... 40:28 – Oh, that’s all I needed – those 2 lines. 40:40 – Andrew. 40:46 – That’s an interesting dynamic. 41:09 – Andrew comments talks about Elixir and Hex. 41:23 – Andrew: I think it’s a good thing. I think there needs to be work in Hex because it’s underdeveloped. To name a few... 43:08 – Part of the keynote this year that it won’t be merged, or they aren’t promising to merge it. 43:29 – Andrew. 44:08 – I haven’t used 3, yet. 44:10 – Andrew. 44:55 – They are talking about the Read Me. I didn’t know there was an Ecto Mnesia? 45:20 – Andrew: Yeah I helped build it and the plan was... 45:50 – Yeah I can see the issue there, do I maintain it or...? 46:02 – Andrew comments and talks about the community and different codes. 46:36 – Andrew, anything else that you want to talk about? 46:48 – There are tons of notes in our chat, which the listeners can’t see. 46:58 – Advertisement – Fresh Books’ Advertisement! 30-Day Trial! Links: Ruby Elixir JavaScript React Erlang – Disk Log Erlang WX Railway Oriented Programming Nebo 15 GitHub – Scenic Kafka Rabbit MQ AWS AWS – Kinesis GitHub – Firenest XHTTP GitHub – Ecto GitHub – Ecto Mnesia Saga and Medium Introducing Sage Andrew Dryga’s Website Andrew Dryga’s Medium Andrew Dryga’s GitHub Andrew Dryga’s LinkedIn Andrew Dryga’s Twitter Andrew Dryga’s FB Andrew’s YouTube Channel Andrew’s Sagas of Elixir Video Sponsors: Loot Crate Fresh Books Cache Fly Picks: Mark Mark of the Ninja Josh A Sneak Peek at Ecto 3.0: Breaking Changes Nate Pragmatic Studio Eric Looking of Elixir Developers Metabase.com Polymail Andrew Tide of History
Episode 23: EMx 023: “Bubblescript – Beyond the DSL” with Arjan Scherpenisse
Panel: Mark Ericksen Eric Berry Special Guest: Arjan Scherpenisse In this episode of Elixir Mix, the panel talks with Arjan Scherpenisse who is the technical co-founder at BotSquad. Arjan lives in the Amsterdam area of the Netherlands. Also, he is currently working with Miracle Things. Check out today’s episode where the panel and Arjan talk about his article and his latest projects. Show Topics: 0:50 – Hello! 1:23 – Is that right – got to drink Heineken in Amsterdam? 1:30 – Arjan: It’s the Bud Light version here in Amsterdam. 1:47 – Panelist: I feel pretty stupid now. 1:58 – Eric: I actually just visited Amsterdam to visit a good friend. The canals were gorgeous! 2:25 – Arjan: I actually worked 7 years in the city center and I cycled to work over the tiny bridges. Now I live outside of Amsterdam. 2:47 – Panelist: You have this article on Bubblescript, which is a creation of yours. Can you tell what it is? 3:08 – Arjan: I have been a software developer for 8 years. I have been using Elixir more in the past 2 years. So at some point an agency asked if I could build something for their museum. I thought let’s do it, because that’s a nice project! I got to work with three historical figures, which has their own stories. 4:45 – Is it spoken? 4:51 – Arjan: Just text. It was really meant for a young audience. The creators wrote stories about these figures. Get the younger generation engaged. I thought, well, how could I build something like this? I don’t want to hardcode it because I am the one maintaining it and I don’t want to be a SMS person. I thought, I wanted them to maintain it, but CMS is limited. Then I thought, I will give them a Jason file – each instruction on one line. Those file formats are for... Then I thought why couldn’t I use Elixir...? I just wrote something that looped out and spit-out all of these messages through messenger with a timer. Then I made it very simple through UI. Then it would tell you that line the error is. Then in the background you are checking to see if your syntax is correct or broken. Then there is a run button on the side. That’s how it started. It was a lot of work for one project. I found the idea really fascinating, and then last year I showed them this to my friend. He, too, was in Elixir and loved the idea and so we started a company. 8:47 – Panelist: That’s where BotSquad came from? One of the questions I had been: Is it done through macros? 9:01 – Arjan: Yes, but there is... I don’t compile it to an Elixir code; I use it as a functional thing. “Hey! Give me the next message...” If that makes sense? 9:59 – Panelist: I see that you have an example through the article. If something is invalid then you can see that it’s on “line 2.” Never used string to coder – I think that’s a great application to that. 10:26 – Arjan: Yep! String to coder. 11:09 – Your path to Elixir went through Erlang first right (2009)? 11:22 – Arjan: Maybe earlier? I was working through an agency back then, and they were building a platform for projects. One of the co-founders left and he started to work (for a year) and worked on this language called Erlang. That was back in 2008/2009. He later went onto create... He was working on that and he convinced me to use Erlang. I like Erlang because it’s a logical language. 13:06 – What was the path to Elixir? Why would you use Erlang? 13:21 – Arjan: Good question. I haven’t left Erlang totally, yet. It was due to the community. I wasn’t interested the first few years into Elixir, because all of the concepts are the same just different skin. For me, the community was completely different! I think it’s the truth. There is no Erlang Meetup in Amsterdam! For me it was the difference in the communities. 15:22 – We are glad you are here! 15:28 – Arjan: We are trying to make it Open Source. People ask me this all the time. For us we still have to find the right form for it, and it will be a lot of work to maintain it and support it. 16:10 – Panelist: Your chat app – let’s talk about that. It’s a very staple process. You don’t want to keep repeating the story for the characters. Along the lines of... I am wondering how well they are being a solution for... GenServers are mentioned. 17:15 – Arjan: That’s exactly how it works. You could do it differently if you wanted to. The interpreter itself is purely functional – you put a message in and you get a message out. What I wrote around that... 19:20 – Panelist: What process registry are you using for that? 19:24 – Arjan answers the question. 20:18 – Panelist comments. 20:53 – Arjan: It is a nice piece of software. And while most of the things are done now it’s making sure that everything is ready for everybody. If you use Swarm then... 21:57 – Panelist: I think it’s fun that you have this GenServer intentionally built in delays? 22:18 – Arjan: Yes, exactly. 22:46 – Yeah it has to feel real – that’s fun. 22:53 – Arjan: Yes. It can actually help with a... 23:12 – Advertisement – Loot Crate – check out the code! 24:09 – DeState Struct – I love that pattern – Plus 1 to that and let listeners know. It’s a great way to test how a... 24:48 – It’s a great way to test because you don’t have to wait for anything! Arjan continues this conversation. 26:03 – Arjan: It’s fun to test one bot with another bot. 26:14 – Panelist: The bots don’t have to go through the messaging protocol. 26:33 – Arjan: Yep! 26:42 – Anything you want to talk about Bubblescript or BotSquad before another topic? 26:55 – Arjan: It’s not Elixir it looks like Elixir – but check it out! Trial account at BotSquad.com! 27:17 – You are also talking with Code Elixir in London and you are doing a boot camp series. You are running an actual boot camp – I would love to hear what you are doing there! 27:42 – Arjan: the form is 2 days – it’s meant for programmers who are already well knowledgeable. We have done it 2 years in a row. I teach it with a partner who is from Amsterdam. Two years ago we got together and there were always questions on whether a boot camp was available. So we thought we needed to put something together. There are about 20 students in each boot camp. 29:34 – What are some of the challenges? Where these people are coming from pure functional stuff? 29:51 – Arjan comments. We start teaching them at the beginning of the boot camp: recursion and better matching. Better matching, in other languages, isn’t there. Recursion can be hard to grasp. Those are the building blocks. Going from there: how can you expand... 31:39 – Panelist: I saw from your video how you showed the elevator experience? 31:56 – Arjan: I didn’t know that was HIS analogy. 32:10 – Panelist talks about the creator of Erlang. 33:01 – Arjan: Yes the elevator example is for... Arjan continues talking about the elevator example and how students need to implement to be successful with tests and more. 34:48 – Arjan: It’s good to see how people reason with state and to see your thought process. 35:49 – Arjan: The second morning we actually give them the solution. Second day is getting practical – how can you build something and deploy something with Elixir. 36:32 – Panelist: I think it’s great that you are introducing Elixir to more people. I would like to see more people doing that. I love teaching people and Elixir concepts and other things. I had a Ruby background. It was a head-trip to get that difference – and once you do then you feel powerful: Oh I get it! I get these beneficial properties... All of these problems I had before don’t exist over here. When I get to see the 37:48 – Arjan: Yes at those Meetups and those boot camps – you see those light bulb moments. Yes, that’s why I do the teaching because it’s very rewarding. 38:43 – Panelist: Anything else? 38:50 – Arjan: Yes, my company BotSquad is working on a one-day conference – check it out here! 39:46 – Picks! 39:50 – Fresh Books’ Advertisement! 30-Day Trial! Links: Ruby Elixir JavaScript Vue React GenServers Meetup Jekyll StaticGen BotSquad BotSquad: Bubblescript – Beyond the DSL Miracle Things Arjan through Code Sync Arjan’s LinkedIn Arjan’s Twitter Arjan’s GitHub Arjan’s Video: Bootcamp Stories Code Beam Lite Amsterdam 2018 Sponsors: Get a Coder Job Loot Crate Fresh Books Cache Fly Picks: Eric Jackal Mark To Be List Arjan Experimenting Elixir Parser
Episode 22: EMx 022: “Adopting Elixir at Flatiron School and Pattern Matching” with Kate Travers
Panel: Charles Max Wood Mark Ericksen Josh Adams Special Guest: Kate Travers In this episode of Elixir Mix, the panel talks to Kate Travers who was a student/apprentice with the Flatiron School and now is on staff as a software engineer. The panel and Kate talk about adopting Elixir at the Flatiron School and Pattern Matching. Watch Kate’s talks about the topic; links to these talks can be found below. Show Topics: 1:08– Hi from Kate Travers. 1:16 – Chuck: Background? 2:20 – Kate gives her background. 2:30 – Chuck: We had another Flatiron alum from an extra show. 2:44 – Kate: Yeah – she’s great! 2:48 – Chuck: Flatiron mostly focused on Ruby and JavaScript. Has that changed or? 3:02 – Kate: For the students we are teaching the Rails focus on the backend and React on the frontend. Times might be changing. What else is out there for functional curriculum? Our lead engineer is super motivated introducing some Elixir. Our engineering team might be the first to go in that arena. It would be absolutely fantastic to 4:02 – Chuck: Awesome! I would like to see the boot camps take on Elixir. 4:15 – Kate: Yeah, there are many benefits of doing that. 4:57 – Chuck: You see some Reactive, some... It is interesting to see how it comes together and 5:16 – Kate: Yeah we see this as a support – delivery of curriculum. When you start out you are writing in a functional style. You are essentially writing TLI scripts – functional manner. Now in the curriculum we are training people to think, and to get away from that script-way, and think in terms of objects. 6:11 – Panelist: I think that is interesting. Some of the difficulty of teaching Elixir is to UNLEARN some of their past education. Start teaching people FUNCTIONAL, might help. 7:04 – Chuck: I have been starting a new project... What is going on here? Oh yeah I have to think about it. 7:20 – Kate: Yes. We have spun up – we have one core Elixir project. We have been on that for a year. We have spun up some smaller projects. On these projects this is the first time these people have used Elixir. It is interesting to see the difficulties that they are seeing for the first time. 8:09 – Chuck: I want to talk to adoption for a bit. So as your school has made this transition, where are you seeing the (first of all) where is it easy to get buy in. How did Elixir get into Flatiron? 9:06 – Kate: It is not apart of the school’s curriculum. How we started using Elixir was because our technical lead he is super loud / elegant voice for this language. Elixir might solve some of the problems that we were facing. When we adopt new tech it’s because we have thought about it heavily. We don’t adopt new technologies “just because”. The perfect opportunity came up, so this lead into why and how Flatiron started using Elixir. Kate goes into more detail. 15:24 – Chuck: Learn.io – check out outside of the school? 15:35 – Kate: Yep! There is even some interview prep; also, intro to Ruby, intro to JavaScript, and someday intro to Elixir? 16:06 – Chuck: As you brining people into this how do you transfer them to Ruby to Elixir? Do you throw them into the deep end? 16:26 – Kate: Sure! If someone is interested we will. It is something our team tries to prioritize. Kate goes into more detail. 18:43 – Kate: We didn’t expect for these book clubs to keep going. We will do a little workshop as part of book club. 19:18 – Panelist: Question to Kate. 19:25 – Kate: Yes, so everyone has a NEW lead each week. Folks of ALL different experience levels. What is different about our team is that we have tons of people who LOVE to blog. If you check-it out as they are learning Elixir they are writing posts. 20:21 – Question. 20:29 – Kate answers the question. 20:49 – Chuck. 20:55 – Kate: Steven suggested a new way to cement the things you are learning. 21:28 – Chuck: Yeah – Flatiron labs. Now that I have been playing with Elixir with pattern matching. At first it’s scary stuff. 21:49 – Kate: It is a head-trip. 22:00 – Chuck: ...wait...wait... 22:10 – Kate: Multiple binding? 22:16 – Panelist: My first introduction to outer matching was seeing a... 22:39 – Kate: Great first introduction. Not the textbook example, you will get to see the real-world situation. Yeah that is a really, really good example. 23:05 – Panelist: Pattern matching for me became a superpower! It was my first real love of the language; before concurrency, and others. Pattern matching helped with a lot of the pains that I wouldn’t have to encounter. You are poking this big object to figure it out. Then it’s easier because if the shape matches, then it matches. Mental flip – and I get it! It felt like a superpower. I liked your talk, Kate, about pattern matching. 24:41 – Kate: Yeah, totally. Pattern matching. Like learning a musical instrument like a guitar. When you start learning something like this you have these high ambitions. You are learning to be a rock star and you want to be David Bowie. But when you start you couldn’t be further away from that goal. At the beginning you are learning chords and it’s so easy to think: “I am terrible, I suck...” you quit and never keep going. To prevent this you need a hook to keep you going. You just need to learn that really sick rift. Oh yeah, NOW I can start seeing my rock star abilities; same thing for Elixir. Pattern matching was my really sick rift. 27:38 – Panelist chimes-in. You have that excitement about the new language. But they get frustrated because they are a beginner. I do think that you nailed it there. If people can latch onto something fairly quickly, then it gives them a reason to keep coming back to learn more and more. 28:25 – Kate continues this conversation. 28:48 – Panelist. 28:54 – Advertisement – Code Badges! 29:32 – Chuck: Most important / interesting thing you’ve learned about pattern matching? 29:48 – Kate: It was the different things you can do with... 30:23 – Kate: The concept is that Elixir provides... 31:42 – Chuck: I didn’t know that you could do that! 31:56 – Kate: The benefit only comes from legibility. 32:13 – Panelist: Guard clauses and pattern matching. I think it would be a mess if I weren’t use Elixir. 32:31 – Kate: Yes, definitely. 33:10 – Panelist: Yes, my first project with Elixir... 34:47 – People should go and see your talk and it’s in the links. 35:00 – Kate: Thanks! Kate talks about dodging bullets and code. 36:04 – Chuck: have you seen other languages using/trying to use Pattern matching? 36:10 – Kate: Yeah, there are talks about Ruby and JavaScript for introducing proper pattern matching in BOTH languages. Ruby is interesting. I don’t know how much traction we have on these, but people seem really into program matching. 36:36 – Panelist: Yeah, I think people come to Elixir and see pattern matching and they get excited. 36:55 – Kate: Yeah, I would be interested to see if the proposals go through or not. There is a conference on my WATCH LIST and I want to see more about it. 37:26 – Panelist: It started off as a prologue that’s what you need. 37:37 – Kate: If it wasn’t designed that way in the beginning it will be a problem. If it’s not apart of the system in the beginning then it could be a problem. 38:14 – Chuck: Yeah, the flipside is... 38:34 – Panelists: I don’t know. 38:44 – Panelist: One of my concerns is object oriented programming. I imagine (nightmare) pattern matching in Ruby and all match onto this object – after it’s there – it’s inside my function – runs another thread – comes back to me – that object is modified and now it’s there, and not be completely invalid. It’s not RUBY anymore. 39:36 – Panelist: Pattern matching could bring them over and bring them over the gap. I am worried that if this is more widespread then we will hit a much worse. 40:06 – Kate and Panel: Yep! 40:12 – Chuck: Anything else about pattern matching and/or adopting Elixir? 40:18 – Kate: I don’t want to rush into this too quickly, but if we are on the topic of bringing people to Elixir. It came up at this conference. Ruby Rails coming over – RR refugees. The question that they post: People are hyped about Elixir about Phoenix. What is going to be the thing that brings people over? 41:15 – Panelist answers Kate’s question. 41:29 – You can’t do live Vue in other languages. If you are really experienced... 42:08 – Chuck: You have to learn 2 technologies. You can adopt a frontend and backend technology and you can get SOME of that. I know a lot of people are invested in the frontend technology or the backend. I think that is how you are going to convert. 42:43: Panelist chimes-in. Panelist’s friend asks: Is it an appropriate tool? 43:30 – Kate: Our team is super excited about it. Our team has mostly been working on the backend. We need to deliver on the frontend with updates. What if we had it – out of the box with Phoenix? Yeah people are over the moon. 44:06 – Chuck talks about what he is using. What if I didn’t have to do any of that garbage? 44:23 – Panelist: It is a NICE experience when you have to do it. 44:38 – Chuck: If you need a killer feature for React or Vue – why can’t you build a frontend... 45:00 – Panelist adds in his comments/thoughts. 45:30 – Chuck: Anything else? 45:38 – Picks! Links: Flatiron School Our Courses – Flatiron School How We Built the Learn IDE in Browser – Medium Flatiron Labs Elixir – Flatiron Labs Elixir – Guards Kate Travers Kate Travers’ “Pattern Matching in Elixir” (3/14/18) Kate Travers’ Dev.to Kate Travers’ Twitter Kate Travers’ Talk on YouTube: “Pattern Matching: The Gateway to Loving Elixir – Code Elixir LDN 2018” Kate Travers’ Code Sync Ruby Elixir JavaScript Vue React Sponsors: Get a Coder Job Digital Ocean Code Badges Cache Fly Picks: Mark Ericksen Value Teach something to someone else. It helps you grow. Book - Leadership and Self Deception Josh Adams Ethdenver Charles SCALE Brunch Kate breakinto.tech Kusama: Infinity
Episode 21: EMx 021: “Dialyzer Pretty Printing” with Andrew Summers
Panel: Charles Max Wood Mark Eriksen Eric Berry Special Guest: Andrew Summers In this episode of Elixir Mix, the panel talks to Andrew Summers who lives in Chicago, currently. Working on Elixir development, and here to talk about how he wrote the dialyzer pretty printer. He is a software engineer for Albert.io, makes cool stuff every day, loves punk music, and Philadelphia sports. The panel talks about the Dialyzer pretty printing, Elixir, code writing, and more! Show Topics: 1:07 – Why are you famous? 1:11 – Andrew: Answers the question. 1:34 – Chuck: Nice. Is the dialyzer printer complete pretty printing or is it more than that? 1:45 – Andrew talks. He mentions the background information on this specific printer, which was written a decade ago. 4:13 – Panel: One thing that is helpful is that it is a static code analysis. In the Elixir we are writing these spec statements. For nothing else than this type is coming out. Then this looks at the code, and your spec says you are returning this, but I can tell that you are also returning X, Y, or Z. So it is helping us see what we are declaring a code to do, and that’s really what the code is doing. 5:28 – Guest: Yes, exactly. To continue that topic here is what else it’s saying... 6:08 – Panel: Our panelist is not here, but he has had to fix code before with that problem. With Dialect Dialyzer – how do we say this library is out-of-date? The code is out-of-date. How do I get my stuff to pass – to clean up my site? 6:54 – Guest: Containing that warning. Guest goes into further detail how to problem-solve this issue. 8:02 – Panel: So you are saying that I can funnel. 8:20 – Panel & Guest go back-and-forth talking about this topic. 9:49 – Panel: I am still diving into the system. Haven’t really used the printer, yet. Panelist asks Guest a question. 10:04 – Guest: At the forefront there are some configurations to help with that. 11:16 – Panel: Why would someone not want to use this? What are the cons? 11:23 – Guest: It would have to do more with CI than anything (one con). 13:06 – Panel: Lots of people are coming to Elixir New. Great. What is the selling point? Why should someone invest his or her time in this project? 13:33 – Guest: I find looking for a type spec is one more piece of information that could help the reader that would tell them what the code should be doing. Any information from the original author to be passed down is great. Having the machine to check that, whenever you push code, it’s an imperfect check (as we were saying). If it can tell you that you did something wrong, then why not? It gives you that extra red flag. There are huge benefits to that. Same reason we write unit tests. 15:20 – Panel: You are learning Elixir right, Chuck? Panelist talks about tech specs, code writing, and learning projects. 16:25 – Panel: Here is a tip to learning. One thing that I did I came to an existing project and writing a sub-system ( as series of modules) Writing the tech specs. As they are interacting with each other, then writing Dial Elixir, and grab the output to the file path to where my code is. Within my own code find where I am inconsistent. Andrew – you could get pages of output, right? Any tips for users? 17:37 – Guest: Isolate portions of your code base. 19:27 – Chuck: I do like the idea of the umbrella. Phoenix app out into an umbrella. A sub apps and they are more centered, smaller sized. Then, yeah. Start with Dialyzer on just that project. Isolate it, and this app in the umbrella. The output is much smaller, and good success with that. Now, one of the new features you added was the language / the code that it reports is an ERLANG term. That is not familiar to most Elixir developers. Especially if you are new to it. If you are turning this into a friendly Elixir thing, then you had to learn other programs. How did you get into this path? 21:00 – Andrew: Whenever there was complicated “something” at work – I was the person to go to. As I started to do it more and more I saw patterns in the output. Things were kind of predictable, and how to format things. It synchronizes weird. What would I do to write this task? Researched. There are 2 tools = LEEX and YECC. If you have 2 files in your source directory... 22:56 – Advertisement – Digital Ocean 23:39 – Panel: It’s cool. 23:58 – Guest: It brought me back to some courses from school. I thought that was funny. They are pretty contained tools. 24:36 – Panel: Part of your motivation was from Jose. 24:49 – Guest: Yes, definitely. 25:39 – Did you have any questions for Jose? 26:35 – Panel: You added the feature of... CREDO is pretty well-known. 27:28 – Guest: Sure, I guess I did skip some of that. Andrew talked about different libraries, ERLANG modules, and so on. 28:38 – Panel: What else are you doing? 28:45 – Getting error messages fixed for version 1.0. Trying to close-up the residual things. 30:18 – Guest keeps talking about support and other bugs. Andrew: If you see something, say something. 31:00 - Panel: There are languages that run on the beam. Something to create something more standard so different languages can depend on. Is there anything like that? To help you with your tooling? 31:40 – Andrew: Good question! Some of the things that happen at the Dialyzer level, stuff just gets dropped. 33:47 – Guest: How this works all together... 35:15 – Chuck: How to contribute to Dialyxir? 35:30 – Guest: Around error messages – is the best place to look. If you have a good editor hand, good place for that. If you are further into the compiler land – might want to play with that. 36:29 – Guest: ERLEX 36:43 – Chuck: What did you learn about building these libraries? 36:55 – Guest: I learned a lot about the construction of Elixir. Guest dives into this more. 38:25 – Chuck: The principle that you cannot bind... 38:51 – Guest: ...this area of my code-base... it would be nice to turn off those features. When I really do need it – I need it, but not so if I don’t need it. 39:39 – Panel: I want to point someone to a resource: TypeSpecs. 39:54 – Guest: I used that so much! Wonderful resource, I learned so much stuff! I stole all the output from that. I didn’t know that language had that?! 40:20 – Panel chimes in about this resource some more. 41:02 – Guest: We really do have a simple language. There are some weird things, but not a lot of constructs under the hood. Only a few data structures. It could have been more complicated. I was worried about that – but that never happened, because... 41:41 – Panel: Thanks for adding that. Very true. 42:51 – Guest talks about other things that are very simple, too. 44:35 – Panel: Are you doing fulltime with Elixir for programming? 44:35 – Guest: Yes, we are using other Elixir and JS App. In another life I used... They all can teach you something. Sometimes the journey of going there and realizing WHY you don’t want to be there is sometimes worth the journey! 45:20 – Panel asks guest a question. 45:25 – Guest answers question. Andrew: We have enjoyed our time in Elixir. It’s nice. 46:27 – Panel: Anything else? 46:33 – Panel: Where can people find you online? 46:40 – Guest: Elixir Slack, Twitter, GitHub. 47:01 – Picks! 47:05 – Advertisement – Code Badges Links: Andrew Summers’ Twitter Credo Erlang Dialyxir LEEX YECC Credo ERLEX TypeSpecs Curated Dev News for Busy Developers EX_JSON_SCHEMA React – Jsonschema – form Announcing Distillery 2.0 Distillery’s documentation! MKDocs EX_Json_Schema Sponsors: Get a Coder Job Digital Ocean Code Badges Cache Fly Picks: Eric Chrome Extension for News Mark Announcing Distillery 2.0 MKdocs https://hexdocs.pm/distillery/home.html. Charles Launch by Jeff Walker Downcast Andrew Ex json Schema React json schema from
Episode 20: EMx 020: Phoenix and LiveView with Chris McCord
Panel: Charles Max Wood Mark Ericksen Josh Adams Eric Berry Special Guest: Chris McCord In this episode of Elixir Mix, the panel talks to Chris who created Phoenix and is an author, also. Chris McCord is a monumental developer within the community, and it’s exciting to see how LiveView is a great add-on to Phoenix, which is his baby. Finally, the panel talks about topics, such as Phoenix, LiveView, Elm, and Fire Nest. Show Topics: 1:21 – What are you famous for? 1:49 – Chuck: You created Phoenix. There is a new feature, LiveView, can you share with us what that is? 2:08 – Chris: Sure. What got me started with creating Phoenix is similar to how I got into LiveView. 3:13 – Panelist chimes in with his comments. Panel: Questions we are asking: How to give the audience a high-quality experience without a huge overhead. When I watch this video on LiveView, I was freaking out. Are you glad you did it? 5:01 – Chris: The response is really exciting and it really resonated with a lot of people. Often, I thought, working on past projects thoughts along these lines: “this was a huge waste of the day.” And I’m glad this was a good response. 6:08 – Panel: Explain what you can do right now. 6:18 – Chris dives into this topic. Chris: We wanted to offer a rich experience. A lot of things we can target out of the box, with rich UI. 8:20 – Panel: You announced this in your keynote in Washington D.C. The day before you hinted at it. And I thought: Is this even a good idea? Is this a misguided effort? If you have this first impression go, first, and see the video. You explain well your history and what you wanted with web development. Watch this video to maybe not be skeptical. 9:47 – Panel comments. 9:50 – Chuck: I haven’t seen the video, yet. I am used to doing this with JavaScript. How do you do without JavaScript? Frontend? 10:14 – There are pixies and sparkles, and Chris is bringing these sparkles! 10:31 – Chris: It’s nice because we are piggybacking off the channel level. There is no JavaScript that you have to write today. 11:16 – Panel: Question to Chris. 11:31 – Chris answers the question. 13:13 – Panel: Who else is doing this right now? 13:15 – Chris answers question. 14:51 – Panel: The original dream. Phoenix was just a stepping step to LiveView. 15:08 – Chris: Those who are casting judgment – please watch the video. For years I have had this idea that I want to stay in the server-land... 15:55 – Panel: It’s funny that your path unfolded the way that it did. 16:28 – Chris: It blows me away. 16:38 – Panel: I bet when you wake up your pants just attach themselves to your legs! 16:57 – Chris: I work remotely, so... 17:08 – Chuck: That got weird. 17:18 – Panel: You’ve got a lot going on. When can we expect to see this? I’m sure you get that asked a lot. Phoenix 1.4 has to come first, and you are working on your book. While that’s going on you have a project called Fire Nest. Sounds like you have a couple things you’re doing right now? How do you prioritize? 18:08 – Chris answers these questions. Chris: I do work full-time on Phoenix. Phoenix 1.0 is on my own time. This is at my own discretion. Whatever helps the community is good for them and for me. That’s how I do it without completing losing it. The book has been over a year delayed. It’s always a battle it’s a love/hate relationship. It’s hard when you when you want to work on exciting things like LiveView. The future, the things we want to build for. Some weeks it’s more writing, and some weeks its coding. 20:01 – Panel talks about Chris’ team. 20:25 – Panel: I got to ask you, I am more of a Ruby developer, and this thing that you’ve developed is making me lean towards Elixir. What’s your least favorite thing about Phoenix? 20:56 – Chris: Never have been asked this before. 21:06 – Chris: The thing that bothers me the most is maybe configuration? Lots of folks we did a lot of the configurations. I guess that has been a recent thing that’s come up. Even though, personally, I don’t have a lot of issues with it. 22:38 – Advertisement – Digital Ocean 23:13 – It’s hard to point out ugly features of your own baby. 23:26 – Panel: You’ve talked about your rel. with DockYard, Inc. What’s that responsibility like? 23:44 – Chris: I am a cheerleader for the company. I do work in a consulting role. This is good because I am solving real-world problems. I’d loose touch with that if I didn’t consult. The other time I try to help the team if needed. It’s a good mix for me. Writing Elixir code and not just framework code. 25:02 – Panel: Umbrella project. Your rel. with your clients – when you would suggest an umbrella project or not? 25:26 – Chris: It depends. It’s not so much code structure it’s mostly from an operational standpoint and not from a code structure standpoint. 26:51 – Chuck: Give us a short history of Phoenix. How does LiveView tie into your vision with Phoenix? 27:13 – Chris gives us his thoughts. Chris: In 2013 – I fell in love with Ruby. That’s to show that it wasn’t on my radar to do anything else professionally. Never thought I would develop something like Phoenix. My wife noticed that I came home unhappy when I worked with Ruby at some point. She noticed a difference. Chris continues to share the Genesis of Phoenix. It’s been a crazy ride. 32:32 – Chuck: So it was mostly about the scaling. I’ve played socket IO, do some harm, then come back. Action cables are a little less of a pain. Chuck continues his thoughts and asks a question. 33:10 – Chris answers Chuck’s question. 35:00 – Chuck. 35:14 – Chris. It’s interesting because you could have used a LiveView layer in the mid-2000s and nothing in town would have been able to compete. 35:56 – Panel: One great thing about Rails is the integration. There is a path to it. Is there anything like that for the docket to build that for Phoenix? There is webpacker for Rails but is there going to be that for Phoenix. 36:35 – Chris: No is the simple answer. It just works the way you would expect. 37:46 – Chuck: The other one is partial JS. IT’s interesting because I go back and forth, too. I like the approach with JavaScript. I play with everything. I’ve been playing with an app recently and figured out how to do it in Brunch, because that’s what’s there. Why solve it the Elixir way? As a backend developer I may not want to mess with it. 38:51 – Panel: Another question about LiveView. From the video, from what I understand, is that the data that’s pulled from reads and rights? 39:26 – Chris: I hope this doesn’t sounds like a cop out answer. My answer is that you will handle any system you are building it in Elixir. If you want to have durable state you would use existing tools that you have already. 40:17 – Panel: The facilities you built around the LiveView, is it valuable for someone to... 40:42 – Chris answers the question. 41:22 – Panel: Another question on how LiveView works. Is that dependent on there being a JavaScript connection? 41:49 – Chris: Answer to that is if you are... 42:50 – Chuck. 42:53 – Chris. 43:29 – Panel: How is Fire Nest coming along? 43:38 – Chris: I won’t say it’s steady progress, but it’s coming along. We are working on it. 44:53 – Panel: That was exactly what I wanted to hear. 45:00 – Advertisement. 45: 42 – Panel: The new developments are happening outside of the community of Phoenix, right? 46:07 – Chris: People think Phoenix is “heavy,” but it really isn’t. It’s really I want 80% and the teams and communities can build on top of that. Not in core. Not everyone needs X feature. No reason to shove it in core. It’s not about having it being “lighter.” I am developing resisting the urge to do it because someone says so. 47:40 – Panel: Phoenix for me feels like it’s baked. There really isn’t anything that is lacking. It’s extensible. It’s done. That’s exciting. These add-ons like LiveView are a great plugin. 48:23 – Chuck: How do people keep in touch with what you are doing and your projects? 48:51 – Panel: Anyone on the team working with Elm? 49:00 – Chris answers this question. Elm has been on my radar, but haven’t gotten into it, yet. Not in the foreseeable future either. 50:20 – Chuck: Picks! Links: Chris McCord’s Website Chris McCord’s Twitter Chris McCord’s GitHub Chris McCord’s YouTube Chris McCord’s LinkedIn Chris McCord’s Medium Chris McCord’s DockYard Posts Chris McCord’s Video Chris McCord’s Keynote Talk Elm GitHub – Morphdom GitHub – Drab Fire Nest Article on LiveView Sponsors: Get a Coder Job Digital Ocean Code Badges Cache Fly Picks: Charles Geeking-out about the space stuff. Self-fastening pants – Velcro Book: Soft Cover IO Docking station Mark The Talk Fire Nest Project Josh Website: SmoothTerminal.com Eric Earthrise – Apollo 8 – 1968 picture Earthrise Wikipedia Podcast – American Life Chris Phoenix 1.4 Book Phoenix Programming Book
Episode 19: EMx 019: Brooklyn Zelenka: Elixir I assume Witchcraft, Exceptional, and so on?
Panel: Charles Max Wood Mark Ericksen Josh Adams Eric Berry Special Guest: Brooklyn Zelenka In this episode of Elixir Mix, the panel talks to Brooklyn Zelenka who lives in Vancouver, Canada. Listen to the panel and the guest talk about various topics, such as: different Elixir libraries, Quark, Witchcraft, Exceptional, ConsenSys, Meetup, among others. Show Topics: 1:33 – Let’s talk about Exceptional for that library? 1:40 – Brooklyn: Sure, it helps with flow. 3:33 – You are making Exceptional more accessible? 3:35 – Brooklyn: Yes, more conceptual. 3:49 – Panelist: What’s the adaptation like? 4:09 – Brooklyn: People seem to like it. 4:33 – Panelist: What were you doing before that? 4:42 – Brooklyn: First language was JavaScript. There is a huge Ruby community. Tons of Ruby refugees looking for help. 5:27 – There seems to be a large migration from Ruby to Elixir. Have you played with Ruby at all? 5:40 – Brooklyn: Yes, I have used Ruby for a couple of years. There is such an interest in Elixir from the Ruby community. They are such different languages. The aesthetic is similar, and the way the languages are set-up is completely different. 6:41 – Panelist: So not having three or four different alien methods? I have been developing Elixr for a while now, but Ruby doesn’t solve modern-day problems. The fact that you have been working with Elixir since 2014 is amazing. 7:24 – Brooklyn: The first library I wrote was Quark. Then that led into Witchcraft. 10:49 – Panelist adds in his comments. 11:06 – Brooklyn: There are a lot of different things I would love to see in the libraries. At what point do we say that this is the default style in Elixir? My keynote was exactly about this at a conference this year. Elixir hits a nice spot in the program place. It’s very accessible. I’ve brought into these concepts because of Elixir. 12:37 – Let’s talk Exceptions. Will it become apart of core? 13:14 – Brooklyn: I wouldn’t mind that it would become apart of core. 15:10 – Any other questions around Exceptional or Exception or other libraries? 15:25 – Panelist: Let’s change topics. 15:30 – Brooklyn has her own company now. 15:52 – Panelist: Good job on Roberts Overload! 16:00 – Panelist: Where does block chain and Elixir meet? 16:08 – Brooklyn answers this question. 17:16 – Brooklyn: Not all block chains are... 19:02 – Brooklyn: Another good fit would be... 19:33 – Panelist: My company is apart of ConsenSys. I hear a lot about the block chain and others. How can Elixir help the block chain? (20:15) You mentioned earlier that Elixir could solve a lot of the issues that bock chain is having. Can you elaborate on this? 20:21 – Brooklyn answers this question – here – check it out! 21:21 – Brooklyn: By bringing in these concepts... 22:16 – Brooklyn makes a huge podcast announcement!! Breaking News! 22:37 – What does that mean – messages on a... 24:06 – Advertisement – Digital Ocean! 24:43 – The mail messages contents does that sit on the ledger or... 25:01 – Brooklyn talks about this topic in detail. 26:00 – Brooklyn: There is a distribution of control. I am going to have to run a program to check when a message comes in – I would like that to be hooked up to my UI, ideally. 26:35 – Panelist: You are a fascinating person! 26:45 – Chuck: You also do Elixir training for people? 26:56 – Yes! We help companies and go to conferences. This is for zero experience with Elixir. Over the course of a couple of days to give people confidence production in Elixir. It won’t give you all of the knowledge, but it helps. This also gives people access to me, and my business partner, to use us for questions and so on. 28:56 – You live in Vancouver. What is the Elixir community – through Meetup – what is the temperature like there for Elixir or Ruby, etc.? What are the trends looking like? 29:31 – Brooklyn: Yes, check us out at Meetup. 35:18 – Panelist: I think that is interesting on your opinions on GO with your background. 35:35 – Brooklyn continues her ideas on this topic. It’s not to say that GO is the worse language ever, but from what I have seen that it’s a nice experience in Elixir that things work. All the libraries integrate nicely. There is a style and flavor that is friendly. You get the friendliness with all of this power. You can scale up very nicely from a single node. 37:47 – Where can Elixir “should” go and could go? 38:21 – Brooklyn answers this question and others. 39:21 – Dialyxir / Elixir. 41:27 – Dialyxir overall is pretty nice and it gets the job done with what Elixir needs it to do. Type system. 42:09 – The pre-existing eco-system isn’t built for it. You don’t know if it’s safe to run? There is no way to know about this. The overhead for the programmer tends to be really high. Why don’t we add things like – adding property checks – to ensure that you know how this thing will behave when it run. Using some other techniques – not just in tests – but integrate it into the core workflow. This is really important 44:22 – Advertisement! 45:03 – Panelist chimes in. 45:21 – Brooklyn: Have you seen Alpaca? I am sure it’s 1.0 now. It runs on the beam. 46:15 – Panelist adds comments. 46:25 – Brooklyn: This is why I brought up RChain earlier in the conversation. 47:01 – Block Chain. 48:17 – Panelist talks. 48:53 – Brooklyn: At the application level – one of my projects is having a language that will run... 51:17 – Chuck: I am still learning Elixir. So this is way beyond from where I am at. Let’s do some picks! Links: Coder Job eBook by Charles Max Wood Elixir Rails GO Quark Witchcraft Type Class Algae Exceptional Phoenix Exceptional Robot Overload Raft Consensus Algorithm Ethereum Status Codes Dialyxir Expede Type Class Alpaca Kaizen Matt Diep House ConsenSys / Ethql Metabase TerraGenesis TerraGenesis – Space Colony Wabi-Sabi RChain Brooklyn’s Medium Brooklyn’s Meetup in Vancouver Brooklyn’s GitHub Brooklyn’s LinkedIn Brooklyn – Lambda Conference 2018 Sponsors: Get a Coder Job Digital Ocean Code Badges Cache Fly Picks: Charles Make some incremental step forward – adding onto Mark’s pick - Kaizen. TerraGenesis TerraGenesis – Space Colony Honest feedback! What can I change? Phoenix Mark Workspace Environment: Kaizen – Change for the Better = Improvement. Josh Article – Value-Oriented Programming Eric Library – ConsenSys / Ethql Metabase Brooklyn Wabi-Sabi – seeing the beauty in things that imperfect.