
Elixir Mix
Join our weekly discussion of the popular functional language built on top of the Erlang virtual machine. Each week, we discuss the world of Elxiir, Phoenix, OTP, and then BEAM.Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.
Latest episodes

Dec 4, 2018 • 43min
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 https://twitter.com/devoncestes?lang=en 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 https://elixir-lang.org, testing, and much more! Check it out! Show Topics: 0:00 – https://devchat.tv/get-a-coder-job/ 0:49 – Chuck: I am starting a new show called http://thedevrev.com. Check it out http://thedevrev.com Our special guest today is Devon Estes. https://devchat.tv/elixir-mix/emx-018-devon-estes-all-in-on-elixir/ is a past episode you’ve been on – check it out https://devchat.tv/elixir-mix/emx-018-devon-estes-all-in-on-elixir/ 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 https://elixir-lang.org 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 inhttps://elixir-lang.org 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? https://github.com/topics/mutation-testing 19:03 – Guest answers the question. 19:38 – Guest: I don’t know if https://elixir-lang.org 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 https://www.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 https://elixir-lang.org The guest mentions https://wallabyjs.com 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 – https://www.freshbooks.com 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. (https://devchat.tv/elixir-mix/emx-018-devon-estes-all-in-on-elixir/) 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 mentionshttps://elixir-lang.org/getting-started/mix-otp/genserver.html, 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: https://github.com/mox-project/. 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 – https://github.com/devonestes 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 – https://www.lootcrate.com END – https://www.cachefly.com Links: - https://www.ruby-lang.org/en/- https://elixir-lang.org- https://elixir-lang.org/getting-started/mix-otp/genserver.html- https://elm-lang.org- https://www.javascript.com- https://code.visualstudio.com- https://reactjs.org- https://wallabyjs.com- https://www.cypress.io- https://github.com/topics/mutation-testing- https://github.com/mox-project/- https://devchat.tv/ruby-rogues/my-ruby-story-devon-c-estes/- https://devchat.tv/ruby-rogues/rr-295-the-european-ruby-community-with-devon-c-estes/- https://devchat.tv/ruby-rogues/rr-330-functions-vs-methods-devon-estes/- https://devchat.tv/elixir-mix/emx-018-devon-estes-all-in-on-elixir/- https://github.com/devonestes- https://twitter.com/devoncestes?lang=en Sponsors: - https://www.lootcrate.com- https://devchat.tv/get-a-coder-job/- https://www.freshbooks.com- https://www.cachefly.com Picks: Mark - https://brainlid.org/dev/2018/11/13/git-aliases.html- Blog - Mox Josh - https://gitpitch.com- Slide Deck by Josh Charles - Values-Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Nov 27, 2018 • 44min
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 https://twitter.com/sm_debenedetto?lang=en 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 – https://devchat.tv/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 https://flatironschool.com 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: https://github.com/joken-elixir/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 https://github.com/joken-elixir/joken The Guest goes into detail about this topic. Sophie mentions Rails, https://github.com/joken-elixir/joken, https://github.com/ueberauth/guardian, Phoenix, and https://github.com/potatosalad/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 https://en.wikipedia.org/wiki/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 https://devchat.tv/elixir-mix/emx-022-adopting-elixir-at-flatiron-school-and-pattern-matching-with-kate-travers/ 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 – https://www.freshbooks.com/?adgroupid=51893696397&campaignid=717543354&crid=284659279616&dv=c&gclid=EAIaIQobChMIqISmqeLh3gIVizRpCh28EQ75EAAYASAAEgJYmPD_BwE&gclsrc=aw.ds&ntwk=g&ref=ppc-fb&source=GOOGLE&targetid=kwd-298507762065 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 https://github.com/rabbitmq 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 – https://www.lootcrate.com END – https://www.cachefly.com Links: - https://www.ruby-lang.org/en/- https://elixir-lang.org- https://elm-lang.org- https://atom.io- https://flutter.io- https://www.javascript.com- https://code.visualstudio.com- https://reactjs.org- https://github.com/ueberauth/guardian- https://github.com/joken-elixir/joken- https://github.com/potatosalad/erlang-jose- https://flatironschool.com- https://flatironschool.com/blog/- https://medium.com/flatiron-labs- https://github.com/elixirschool/elixirschool- https://elixirschool.com/en/- https://devchat.tv/elixir-mix/emx-020-phoenix-and-liveview-with-chris-mccord/- https://www.youtube.com/watch?v=FR_zkBeV1SU-Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Nov 20, 2018 • 46min
EMx 028: Elixir, Node, and Bitcoin with Pete Corey
Panel: - Mark Ericksen- Josh Adams Special Guest: https://twitter.com/petecorey In this episode of Elixir Mix, the panel talks with https://twitter.com/petecorey 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 – https://devchat.tv/get-a-coder-job/ 0:50 – Mark: Welcome! Our panel is Josh Adams and our guest is https://twitter.com/petecorey! Pete, can you tell people about yourself? 1:12 – https://twitter.com/petecorey 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 https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388 before and I bought Mastering https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388. 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 http://erlang.org/doc/man/gen_tcp.html, 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 http://erlang.org/doc/man/gen_tcp.html 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 – https://www.freshbooks.com/?adgroupid=51893696397&campaignid=717543354&crid=284659279616&dv=c&gclid=EAIaIQobChMIqISmqeLh3gIVizRpCh28EQ75EAAYASAAEgJYmPD_BwE&gclsrc=aw.ds&ntwk=g&ref=ppc-fb&source=GOOGLE&targetid=kwd-298507762065 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 – https://www.lootcrate.com Links: - https://www.ruby-lang.org/en/- https://elixir-lang.org- https://elm-lang.org- https://atom.io- https://flutter.io- https://www.javascript.com- https://code.visualstudio.com- https://reactjs.org- https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388- http://erlang.org/doc/man/gen_tcp.html- https://github.com/whatyouhide/stream_data- http://www.petecorey.com/blog/tags/#bitcoin- http://erlang.org/doc/man/yecc.html- http://erlang.org/doc/man/leex.html- http://www.petecorey.com/blog/tags/#music- https://github.com/hansihe/rustler- https://elixirweekly.net- https://jsonnet.org- https://ksonnet.io- http://www.petecorey.com/blog/- https://twitter.com/petecorey- http://www.petecorey.com/blog/2018/01/15/secure-meteor/- https://github.com/grafana/grafonnet-lib- https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus/jsonnet/kube-prometheus- https://www.amazon.com/Sparrow-Mary-Doria-Russell/dp/1501247069 Sponsors: -Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Nov 13, 2018 • 55min
EMx 027: ExVenture with Eric Oestrich
Panel: Mark EricksenJosh AdamsNate HopkinsCharles 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 sameBecome a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Nov 6, 2018 • 54min
EMx 026: Higher Level Functions GenState Deployments with Bill Peregoy
Panel: Mark EricksenJosh AdamsCharles 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 thoughtBecome a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Oct 30, 2018 • 1h 5min
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 https://www.theerlangelist.com! The panel talks about his https://www.manning.com/books/elixir-in-action-second-edition past and current projects, in addition to configurations, and Elixir. Show Topics: 0:00 – https://devchat.tv/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 https://docs.docker.com/engine/reference/commandline/config/ 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 – https://www.lootcrate.com 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 https://www.json.org 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 https://elixir-lang.org directly. 37:47 – Panel: I have been using https://twitter.com/kubernetesio?ref_src=twsrc%255Egoogle%257Ctwcamp%255Eserp%257Ctwgr%255Eauthor. 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 https://rubyonrails.org 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 https://elixir-lang.org thing I have seen it in https://www.erlang.org, 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 https://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html 53:00 – Panel. 53:15 – Guest. 54:00 – (Guest mentions à la Carte – check it out https://libraryh3lp.blogspot.com/2013/06/library-la-carte-resurrected-open.html It’s just a factory.) 55:38 – Chuck: Let’s do picks! 55:46 – https://www.freshbooks.com Links: - https://www.ruby-lang.org/en/- https://elixir-lang.org-Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Oct 23, 2018 • 54min
EMx 024: “Sagas” with Andrew Dryga from Hammer Corporation
Panel: Mark EricksenEric BerryJosh AdamsNathan 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 chaBecome a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Oct 16, 2018 • 48min
EMx 023: “Bubblescript – Beyond the DSL” with Arjan Scherpenisse
Panel: - https://github.com/brainlid- Eric Berry Special Guest: https://www.linkedin.com/in/scherpenisse In this episode of Elixir Mix, the panel talks with https://www.linkedin.com/in/scherpenisse who is the technical co-founder at https://www.botsquad.com 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 https://www.botsquad.com/2018/04/14/beyond-the-dsl/ 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 https://www.botsquad.com 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 https://www.meetup.com 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... https://hexdocs.pm/elixir/GenServer.html 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 – https://www.lootcrate.com – 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! https://www.botsquad.com/pricing/ 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 http://erlang.org/pipermail/erlang-questions/2013-January/071434.html? 31:56 – Arjan: I didn’t know that was HIS analogy. 32:10 – Panelist talks about the https://en.wikipedia.org/wiki/Joe_Armstrong_(programmer) 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 https://codesync.global/conferences/cbl-amsterdam-2018/ 39:46 – Picks! 39:50 – https://www.freshbooks.com/?adgroupid=51893696557&ag=r%252F+%257Efreshbooks&camp=US%2528SEM%2529Branded%257CEXM&campaignid=717543354&crid=284685866057&dclid=CP7VqMmdh94CFcW-wAodpeoN9Q&dv=c&gclid=EAIaIQobChMI7u77x52H3gIVkLfACh0pQgTEEAAYASAAEgJ_-PD_BwE&gclsrc=aw.ds&kw=freshbooks&kwid=kwd-298507762065&ntwk=g&ref=ppc-na-fb&source=GOOGLE Links: - https://www.ruby-lang.org/en/- https://elixir-lang.org- https://www.javascript.com-Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Oct 9, 2018 • 51min
EMx 022: “Adopting Elixir at Flatiron School and Pattern Matching” with Kate Travers
Panel: Charles Max WoodMark EricksenJosh 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 thaBecome a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.

Oct 2, 2018 • 54min
EMx 021: “Dialyzer Pretty Printing” with Andrew Summers
Panel: - Charles Max Wood- Mark Eriksen- Eric Berry Special Guest: https://twitter.com/chris_mccord?lang=en 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 = http://erlang.org/doc/man/leex.html and http://erlang.org/doc/man/yecc.html. If you have 2 files in your source directory... 22:56 – Advertisement – https://www.digitalocean.com/ 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... https://github.com/rrrene/credo 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: https://github.com/asummers/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: https://hexdocs.pm/elixir/typespecs.html. 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 – http://codebadge.org/ Links: - https://twitter.com/_asummers- https://github.com/rrrene/credo- http://erlang.org/doc/man/code.html- https://github.com/jeremyjh/dialyxir- http://erlang.org/doc/man/leex.html- http://erlang.org/doc/man/yecc.html- https://github.com/rrrene/credo- https://github.com/asummers/erlex- https://hexdocs.pm/elixir/typespecs.html- https://www.dailynow.co- https://github.com/jonasschmidt/ex_json_schema- https://github.com/mozilla-services/react-jsonschema-form- https://dockyard.com/blog/2018/08/23/announcing-distillery-2-0?utm_campaign=featured&utm_medium=email&utm_source=elixirdigest- https://hexdocs.pm/distillery/home.html- https://www.mkdocs.org- https://github.com/jonasschmidt/ex_json_schemaBecome a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.