Elixir Wizards

Elixir Wizards

By SmartLogic LLCTechnologyEducationHow To
Download on the App Store

Elixir Wizards episodes

  • Meryl Dakin on Token Alchemist – Elixir Internals

    Today on the show we continue our series on the inner workings of several different Elixir libraries and are happy to be joined by Meryl Dakin, Software Engineer at the Flatiron School and author of Token Alchemist. In this episode, we discover how Meryl got started with Elixir and what the process was like for her transitioning from Ruby to Elixir. We learn more about the internal functions of Token Alchemist within the school context and discuss the unique opportunities Meryl has discovered in Elixir, as well as the trickier language features that programmers are likely to experience in their learning process. Meryl also shares the challenges that Token Alchemist attempts to overcome – delving deeper into LTI, the Learn.co platform, OAuth and JSON. For all this and more, be sure to click play!

    Key Points From This Episode:

    • Discover why Meryl first got started with Elixir.
    • Learn more about the Flatiron Bootcamp for coders.
    • Meryl’s experience in transitioning from Ruby to Elixir.
    • The opportunities for concurrency and fault tolerance in Elixir.
    • Discover the top three tricky language features in Elixir.
    • The benefits of going back to the basics of Elixir.
    • Find out the problems that Token Alchemist attempts to solve.
    • Meryl explains LTI and the Learn.co platform for students.
    • Learn more about custom parameters in Token Alchemist.
    • The process of learning OAuth in Token Alchemist.
    • What to consider when using LTI in Elixir.
    • The benefits of resource link history ID’s in the LTI spec.
    • Opportunities for you with Token Alchemist.
    • And much more!
    • Links Mentioned in Today’s Episode:

      We Work — https://www.wework.com/

      Flatiron School — https://flatironschool.com/
      Elixir — https://elixir-lang.org/
      Ruby — https://www.ruby-lang.org/en/
      Learn.co — https://learn.co/
      Meryl on LinkedIn — https://www.linkedin.com/in/meryldakin/
      Meryl on Twitter — https://twitter.com/meryldakin
      Meryl on GitHub — https://github.com/meryldakin
      Token Alchemist on GitHub — https://github.com/meryldakin/token_alchemist

      Learn more about how SmartLogic uses Phoenix and Elixir.

      Special Guest: Meryl Dakin.

      28 min
    • Paul Schoenfelder on Distillery – Elixir Internals

      Welcome back to show everyone and today in our exploration of Elixir libraries we are talking to Paul Schoenfelder! He is here to unpack Distillery, his own creation from the world of Elixir and tell us about how it works. We also discuss how Paul made the transition from bigger corporations into the startup world, his early experiences of different coding languages and the initial steps he took in writing Distillery. Paul is very honest about the unclear future of the library and he shares his hopes for it for the short term as well as clarifying its key concepts and functions. He gives great advice and directions for learning more about the resource and how you can help him and his projects out if you use them. For all this and then some, be sure to join us today for the show!

      Key Points From This Episode:

      • Paul's work background, language history and the last few years working Elixir.
      • The first library that Paul contributed to and created on his own!
      • What brought about the creation of Distillery.
      • Clarifying releases, compiling, generating, deployment and more.
      • Where to learn more and find out details about the library.
      • The first steps Paul took when writing this latest version of the Distillery.
      • Looking to the future of Distillery and its current best use cases.
      • Hot upgrades and who they can be useful to when it comes to Elixir.
      • Let Paul know if you are using or want to contribute to a project of his!
      • And much more!
      • Links Mentioned in Today’s Episode:

        Smartlogic — https://www.smartlogic.io/
        Paul Schoenfelder — https://github.com/bitwalker
        Bitwalker — http://bitwalker.org/
        Distillery — https://hex.pm/packages/distillery
        DockYard — https://dockyard.com/
        Erlang — https://www.erlang.org/
        Phoenix — https://phoenixframework.org/

        Learn more about how SmartLogic uses Phoenix and Elixir.

        Special Guest: Paul Schoenfelder.

        30 min
      • Bryan Joseph on ElixirScript – Elixir Internals

        Today on the show we continue our series on the inner workings and various libraries of Elixir and are very happy to welcome Bryan Joseph of Revelry to talk about his very own ElixirScript. ElixirScript is essentially an Elixir to JavaScript compiler, allowing users to run Elixir online more easily. We ask Bryan what inspired this project and about some of the major challenges that have faced it. We also talk about the role of his company, Revelry in his career and work in open source. Bryan tells us about his very own conference, The Big Elixir and why you should be traveling to New Orleans to check it out! Other topics covered include the architecture of ElixirScript, binary pattern matching, Bryan's other experiences of libraries and his hopes for ElixirScript's future. For all this and then some, be sure to listen in today!

        Key Points From This Episode:

        • Some background on Bryan, his work and how he got started with Elixir.
        • What is ElixirScript? What does it do? How Brian got the idea!
        • ElixirScript's architecture; the inner workings of the compiler.
        • The major problems and challenges that face this task with JavaScript.
        • Step one in the process; the conversion of concepts.
        • Binary pattern matching and the implementation of strings.
        • The things Bryan would do differently looking back on the product.
        • Bryan's other experiences of libraries, contributions and fixes.
        • Marketing, posting and getting the word out on ElixirScript.
        • The current state of the project and hopes for the future.
        • A little bit about The Big Elixir and what sets it apart from other conferences.
        • And much more!
        • Links Mentioned in Today’s Episode:

          Smartlogic — https://www.smartlogic.io/

          ElixirScript — https://elixirscript.github.io/
          Bryan Joseph — https://github.com/bryanjos
          Revelry — https://revelry.co/
          The Big Elixir— https://www.thebigelixir.com/
          Metaprogramming Elixir — https://www.amazon.com/Metaprogramming-Elixir-Write-Less-Code/dp/1680500414
          Chris McCord — http://chrismccord.com/
          Erlang — https://www.erlang.org/
          ElixirCon — https://www.elixirlabs.net/events/elixircon-2018
          Lonestar Elixir — https://www.lonestarelixir.com/
          Operation Spark — https://operationspark.org/
          Flatiron — https://flatironschool.com/

          Learn more about how SmartLogic uses Phoenix and Elixir.

          Special Guest: Bryan Joseph.

          24 min
        • Brooklyn Zelenka on Witchcraft - Elixir Internals

          Hey everybody and welcome back to Season 2 of the podcast! This season we will be talking about Elixir internals, libraries and the inner workings of the language. In our first episode we are very happy to be joined by Brooklyn Zelenka to start off our journey on the subject with an exploration of her very own Witchcraft.

          In this episode we talk to Brooklyn about her history with Elixir, how she got started and what attracts her to it. Brooklyn explains the influence that open source philosophy has had on her career in developing and from there she gives a pretty comprehensive introduction to what Witchcraft is, expanding its key concepts. Although this is quite a high level discussion about Elixir and Witchcraft, we are confident that with Brooklyn's expert help even our most uninitiated listener can get some benefit from our conversation. We also talk about type systems, property-based checking and Dialyzer, so for all of this and more make sure to join us as we kick things off for Season 2!

          Key Points From This Episode:

          • A quick introduction to Brooklyn, where she works and how she got started with Elixir.
          • The influence of open source and library contributions on Brooklyn's development.
          • Getting to grips with Witchcraft; defining monads and functors.
          • Why some of these scary terms do not need to frighten you.
          • A few little things that differentiate Witchcraft and some surprising elements.
          • The convenient guarantees that Witchcraft provides around your data structure.
          • Why there is no type system baked into Elixir; overheads, inputs and outputs.
          • Property-based checking and compile times in Witchcraft.
          • Merging of Elixir and Dialyzer; benefits and problems.
          • Getting in touch with Brooklyn and getting involved with Witchcraft and Elixir.
          • And much more!
          • Links Mentioned in Today’s Episode:

            Smartlogic — https://www.smartlogic.io/

            Brooklyn Zelenka — https://github.com/expede
            Brooklyn Zelenka on Twitter — https://twitter.com/expede
            Brooklyn Zelenka Email — [email protected]
            Elixir — https://elixir-lang.org/
            Witchcraft — https://hex.pm/packages/witchcraft
            Dialyzer — https://github.com/jeremyjh/dialyxir

            Learn more about how SmartLogic uses Phoenix and Elixir.

            Special Guest: Brooklyn Zelenka.

            31 min
          • Season 2 Trailer

            We’re excited to announce our season two topic, Elixir Internals. In this season we talk with developers behind some of the most popular Elixir libraries, including Witchcraft, ElixirScript, Distillery, Ecto, and more!

            2 min
          • Elixir in Production Recap

            With this season over, we bring Dan Ivovich back to talk about what we learned.

            Dan Ivovich - Director of Development Operations @ SmartLogic

            00:43 - Why are you using Elixir in production?

            01:20 - Advantages / disadvantages of Elixir
            02:38 - How do you deploy?
            03:48 - Zero downtime deploys
            05:40 - Clustering
            06:56 - Elixir App performance
            09:00 - Background task processing
            10:36 - Common Libraries
            14:40 - 3rd Party Services
            16:16 - Do you have a story where Elixir saved the day in production?
            17:56 - OTP features
            18:31 - Tip to developers

            Learn more about how SmartLogic uses Phoenix and Elixir.

            Special Guest: Dan Ivovich.

            21 min
          • Jeffrey Matthias from Community - Elixir in Production

            We talk with Jeffrey Matthias from Community about their current and past Elixir projects and how they are deployed.

            Jeffrey Matthias - Community

            Find Jeffrey elsewhere online:

            http://github.com/idlehands
            https://twitter.com/idlehands

            0:47 - Give us a quick overview of the Elixir projects you have in production.

            3:29 - Why are you using Elixir in production?

            6:04 - What are some of the high level advantages / disadvantages of Elixir, from your perspective?

            10:14 - What do you use to host your Elixir app?

            • Linode, AWS, DO
            • Heroku
            • Enmesos
            • mesos
            • How do you deploy your application?

              • Ansible
              • Deploy scripts
              • Distillery
              • 14:19 - Are you able to get zero downtime deploys?

                • If so, how?
                • 17:06 - Do you cluster the application?

                  • If so, how?
                  • 22:53 - How does your Elixir App perform compared to others in your environment?

                    • Response time
                    • Throughput
                    • Jobs/hr
                    • 25:01 - How are you solving background task processing?

                      29:17 - What libraries are you using?

                      • Phoenix
                      • 33:53 - Third party apps

                        37:28 - Do you have a story where Elixir saved the day in production?

                        40:42 - If you could give one tip to developers out there who are or may soon be running Elixir in production, what would it be?

                        Learn more about how SmartLogic uses Phoenix and Elixir.

                        Special Guest: Jeffrey Matthias.

                        Links:

                        • Enbala
                      • Weedmaps
                      • Docker: Up & Running
                      • Async API
                      • RabbitMQ
                      • AMQP Elixir Client
                      • erlcass
                      • Erlang in Anger
                      • 44 min
                      • Jay Ashe from Cava - Elixir in Production

                        We talk with Jay Ashe from Cava about their current and past Elixir projects and how they are deployed.

                        Jay Ashe - Cava

                        Find Jay elsewhere online:

                        https://twitter.com/jgashe

                        0:40 - Give us a quick overview of the Elixir projects you have in production.

                        CAVA is a fast-casual mediterranean restaurant chain with 75 stores across the US. Elixir and phoenix power CAVA’s online ordering platform (order.cava.com and the CAVA app). We’ve got a REST (and websockets) api sitting behind react and our mobile apps, and we use phoenix templates for some of our back of house systems.

                        1:11 - Why are you using Elixir in production?

                        We have from the start! The application was originally implemented by Chris Bell and his team at madebymany. Chris, by the way, has a fantastic talk from ElixirConf 2016 that goes into our architecture and how we use elixir and OTP constructs to model our business logic. Chris will occasionally talk about the CAVA project on his Elixir podcast, ElixirTalk.

                        Chris’ Talk - https://www.youtube.com/watch?v=fkDhU-2NWJ8

                        1:58 - What are some of the high level advantages / disadvantages of Elixir, from your perspective?

                        Advantages: Elixir and Phoenix gives you rails-esque productivity/developer experience that scales. I think phoenix channels are a great example of this. Build a channel with complex real-time functionality and let it scale effortlessly.

                        Disadvantages:

                        • Hiring and onboarding, depending on your mindset, can be difficult. If you’re used to hiring for experience in  your stack, its just going to be more difficult. Lately we’ve started doing one-hour weekly knowledge shares that cover elixir basics and are closely tied to our usage of them. So, here’s a test case, and here are all of the test helpers that we have set up that will help you write that test. We also just sent a new Elixir dev to lonestar elixir
                        • 3:59 - What do you use to host your Elixir app?

                          • Heroku

                          • How do you deploy your application?

                            • Heroku-buildpack-elixir https://github.com/HashNuke/heroku-buildpack-elixir
                            • 4:44 - Are you able to get zero downtime deploys?

                              • As close as possible! We get that out of the box with heroku. When we deploy, heroku won’t point traffic to the new dyno until the app is healthy. We make extensive use of Phoenix channels over websockets, and our clients will reconnect automatically and transparently.
                              • 5:10 - Do you cluster the application?

                                • Nope.
                                • 5:52 - How does your Elixir App perform compared to others in your environment?

                                  • I can’t really talk about numbers here, but Elixir is not at all our bottleneck. We don’t have other production applications
                                  • 6:25 - How are you solving background task processing?

                                    • Quantum for cron jobs, genservers for everything else. We’re running a single elixir application that handles all synchronous and async processing
                                    • 7:07 - What libraries are you using?

                                      • Phoenix
                                      • Phoenix_swagger for API documentation that integrates with controller tests https://github.com/xerions/phoenix_swagger
                                      • Ex_rated for rate limiting calls to our integrations https://github.com/grempe/ex_rated
                                      • Timex and calendar for datetime support with timezones https://github.com/bitwalker/timex
                                      • A combination of httpotion and httpoison for HTTP clients, but im interested in trying Mint https://github.com/ericmj/minthttps://github.com/appcues/mojito
                                      • Bamboo for transactional emails, like order confirmations etc https://github.com/thoughtbot/bamboo
                                      • 8:59 - 3rd Party Services (i.e. Email, Payment Processing, etc)

                                        • Sendgrid for email, Google for geocoding, slack for some internal alerting of application health, LevelUp for payments. https://www.thelevelup.com/
                                        • 10:07 - Do you have a story where Elixir saved the day in production?

                                          • Yes and no. So I could tell this story by explaining the issue we saw and the underlying cause at the same time, but I think it would be more fun to tell it like our team experienced it.
                                          • One day at lunch our application started going down. Lots of 500 errors. Red lights flashing. Panic ensuing. Lunch is our busiest time of day, so 1) we thought it was load related and 2) we really needed to fix it
                                          • None of our traditional resources (database, cpu, memory) were constrained and our integrations that were synchronous were fine.
                                          • Our logs were littered with errors from an analytics integration that ran asynchronously on genservers, but it didn’t seem related because we could see the error logs at times when our application was otherwise healthy. The team that used the analytics didn’t have a pressing need for them, and we deprioritized fixing the issue because the bug we were working on was so much more important (that’s foreshadowing).
                                          • I spent a little time looking at websockets, but I was easily able to match the load of the websocket portion of our application on my local machine with no degradations in performance (thanks, phoenix), so that was out.
                                          • At this point the issue was going on every day at lunch and I was getting annoyed at seeing the logs from the analytics integration when debugging, so I spent like 15 minutes finding and fixing the issue (a bad API key, basically)
                                          • Voila, issue gone. Time to grab some lunch.
                                          • We spent a while coming up with an explanation for this. Eventually we learned about max_restarts on a supervisor. By default, if a process crashes 3 times in 5 seconds, the process won’t be restarted again. So if another process (like the one handling a web request) tries to call that process that wasn’t restarted, the caller would crash, and we’d start to get 500 errors, customers couldn’t log in, mass confusion.
                                          • So there are a few takeaways from this story: For a while, elixir saved the day in production.
                                          • - A supervision tree prevented failures from the analytics process from affecting customers, until the scale of our failures exceeded the max_restart level.
                                            - Our supervision tree needed some love though, clearly.
                                            - Monitor your resources. CPU is a resource, but calls to another API are also a resource and can get unhealthy too.

                                            15:00 - Are you using any cool OTP features?

                                            • GenServers, definitely. There’s lots we can do asynchronously especially in terms of our integrations. One process per store is a cool model that scales well and keeps issues isolated to a single store.
                                            • 15:50 - If you could give one tip to developers out there who are or may soon be running Elixir in production, what would it be?

                                              • If you’re on a small team, Heroku or a similar provider might give you a lot of value in terms of infrastructure you can set up and forget.
                                              • Learn more about how SmartLogic uses Phoenix and Elixir.

                                                Special Guest: Jay Ashe.

                                                Links:

                                                • ElixirConf 2016 - Selling Food With Elixir by Chris Bell
                                              • Heroku-buildpack-elixir
                                              • Phoenix Swagger
                                              • Ex_rated
                                              • Timex
                                              • Mint
                                              • Mojito
                                              • LevelUp
                                              • 18 min
                                              • Frank Hunleth - Elixir in Production

                                                We talk with Frank Hunleth from the Nerves core team about their current and past Elixir projects and how they are deployed.

                                                Frank Hunleth - Nerves

                                                Find Frank elsewhere online:

                                                https://twitter.com/fhunleth
                                                https://github.com/fhunleth

                                                0:53 Frank intro

                                                2:02 Give us a quick overview of the Elixir projects you have in production.
                                                4:25 Why are you using Elixir in production?
                                                8:00 What are some of the high level advantages / disadvantages of Elixir, from your perspective?
                                                9:25 What hardware do you deploy to?
                                                12:05 How do you get code to hardware after deployment?
                                                13:47 How do you secure the code?
                                                18:12 Do you cluster?
                                                If so, how?
                                                How does your Elixir App perform compared to others in your environment?
                                                22:45 How does Elixir compare to other languages?
                                                26:15 More information about Nerves

                                                Learn more about how SmartLogic uses Phoenix and Elixir.

                                                Special Guest: Frank Hunleth.

                                                Links:

                                                • Grisp
                                              • Grisp GitHub
                                              • 29 min
                                              • Mark Ericksen - Elixir in Production

                                                We talk with Mark Ericksen from Elixir Mix about their current and past Elixir projects and how they are deployed.

                                                Mark Ericksen - Elixir Mix

                                                Find Mark elsewhere online:

                                                https://twitter.com/brainlid
                                                https://brainlid.org/

                                                00:32 Intro

                                                0:58 Mark intro
                                                Developing a long time. C#, then Rails. Webforms were terrible. Rails is “Wow, this is how web development should be… I moved across the country to work with this technology”
                                                The Rails Community is strong. Dave Thomas got Mark into Elixir

                                                2:48 What Elixir projects do you have in production?

                                                A Rails app and a number of Elixir Micro-liths

                                                4:29 Why do you use Elixir

                                                6:45 Trends in moving from Ruby and Rails to Elixir

                                                Ruby Syntax
                                                Pattern Matching
                                                Concurrency primitives
                                                Fault Tolerance and a functional paradigm
                                                Erlang/OTP

                                                6:48 Comparing Elixir community to Ruby community to C# community

                                                8:27 Any disadvantages to using Elixir?

                                                Building releases. Configuring releases.
                                                mix.release

                                                10:13 Where are you hosting these bad boys?

                                                AWS
                                                Kubernetes in Production. So Fresh.
                                                Docker and Distillery 2.0 Releases
                                                Yaml files and Bash Scripts
                                                Makefiles

                                                10:53 What else are you using besides docker

                                                12:36 Helm and Ksonnet.

                                                13:55 Deploys

                                                14:39 Clustering

                                                17:50 How do your Elixir apps compare to the Ruby apps?

                                                Big Elixir Apps

                                                20:00 How Mark handles background jobs

                                                Easy to write yourself with BEAM primitives

                                                21:27 Libraries - Quantum, Bamboo, ex_machina, prometheus_ex via Eric’s influence

                                                23:29 Third party integrations. Major ones were easy. Banks were bad.

                                                Literally had to FTP files. Had to use java to write xml spreadsheets. The horror.

                                                25:26 Has Elixir ever saved the day for you in Production?

                                                29:42: Cool OTP features

                                                30:57 Tips to developers
                                                35:36 Where to find Mark

                                                Learn more about how SmartLogic uses Phoenix and Elixir.

                                                Special Guest: Mark Ericksen.

                                                Links:

                                                • libcluster
                                              • Exq
                                              • absinthe
                                              • dataloader
                                              • 37 min

                                              About Elixir Wizards

                                              From the publisher's feed

                                              Elixir Wizards is an interview-style podcast from SmartLogic featuring conversations with developers, engineers, and industry leaders about the Elixir programming language and the broader software…