Elixir Wizards

Elixir Wizards

By SmartLogic LLCTechnologyEducationHow To
Download on the App Store

Elixir Wizards episodes

  • Mark Windholtz on Domain-Driven Design (DDD)

    Domain-driven design and extreme programming can help bridge the gap between development and business, and today we invite Mark Windholtz from Agile DNA to talk about how! Mark starts out by telling us about his early work in extreme programming before agile was a term and how he switched from Rails to Elixir after realizing its power for implementing domain-driven design. We take a deep dive with him into what these concepts mean, hearing him weigh in on how DDD can help architecture accommodate both development and business oriented complexities. For Mark, development and business teams must get a better understanding of each other’s jargon, and DDD is a way to accomplish this. The goal is to find a way of building a solid software core and to move away from features to systems thinking, whereby flexible software can make it more possible to do agile on the business side. We chat about some of the practices and principles that come into play when implementing DDD for Mark, and he details concepts like ubiquitous language, bounded contexts, and how to focus on the core domain by exploring models using tactical and strategic patterns. Along with this, Mark discusses users not being a domain concept, the challenges of getting new terms to stick in teams’ minds, and the task of refactoring code to reflect updated glossaries. Near the end of our conversation, Mark drills down on how DDD can optimize team efficiency. In closing, we get to know Chris Bell from ElixirTalk a little better in this week’s edition of Pattern Matching with Todd!

    Key Points From This Episode:

    • Thoughts on SpaceEx and their approach to engineering: system versus feature optimization.
    • Mark’s background in extreme programming, how he got started with AgileDNA, and the work they do there.
    • A definition of extreme programming that adds engineering practices to Scrum.
    • Elixir’s superior ability to do DDD compared to Rails and how Mark got started using it.
    • A brief introduction to domain-driven design, an approach to simplifying complex software.
    • How architecture needs to accommodate essential as well as accidental complexity.
    • Elixir’s ability to accommodate the building of domain models with well-separated code chunks.
    • Principles of ubiquitous language and bounded contexts that make up DDD for Mark.
    • Ubiquitous language helps devs and businesspeople understand each other.
    • Bounded contexts: ‘Within this space, this world means this thing.’
    • Shifting focus from trying to make not all software, but core software, good.
    • What patterns are applied to use principles of ubiquitous language and bounded contexts.
    • Finding and focusing on the core domain by exploring models and how to do this using tactical and strategic patterns.
    • The consequences of users not being a domain concept which demands having a clearer language.
    • Challenges of getting language and concepts to stick in business people’s minds.
    • Refactoring code to reflect updated glossaries: Technical challenges teams doing DDD face.
    • Switching paradigms from feature-based optimizations to building an amazing code core.
    • Approaches to modeling: the value of exploring multiple models.
    • How teams can become more efficient using DDD and extreme programming.
    • Final plugs from Mark and how Agile DNA can help use Elixir to implement DDD.
    • Pattern matching: Todd gets to know more about Chris Bell from ElixirTalk.
    • How Chris got into programming, what he’d do if not be a programmer, and more!
    • Why Chris loves history, dream pop, and what movie he’ll watch over and over.
    • What project Chris is most excited about next: Building Settlers of Catan using LiveView.
    • Links Mentioned in Today’s Episode:

      Elixir Wizards Listener Survey — https://smr.tl/podcastsurvey

      SmartLogic — https://smartlogic.io/

      Mark Windholtz on LinkedIn — https://www.linkedin.com/in/mwindholtz/
      Mark Windholtz on Twitter — https://twitter.com/windholtz
      Chris Bell on Twitter — https://twitter.com/cjbell_?lang=en
      ElixirTalk — http://elixirtalk.com/
      Chris Keathley — https://keathley.io/
      Elon Musk — https://www.forbes.com/profile/elon-musk/#5bbe73cc7999
      The Everyday Astronaut — https://www.youtube.com/channel/UC6uKrU_WqJ1R2HMTY3LIx5Q
      Rob Martin — https://www.linkedin.com/in/version2beta/
      Perhap — https://github.com/Perhap/perhap
      Andrew Hao — https://github.com/andrewhao
      Fred Brooks — http://www.cs.unc.edu/~brooks/
      The Mythical Man-Month — https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959
      Zach Thomas — https://github.com/zdcthomas?language=elixir&tab=stars
      1917 — https://www.imdb.com/title/tt8579674/
      Real Estate — https://www.realestatetheband.com/
      Galaxie 500 — https://pitchfork.com/artists/1673-galaxie-500/
      Star Trek: First Contact — https://www.imdb.com/title/tt0117731/
      Star Trek: The Wrath of Khan — https://www.imdb.com/title/tt0084726/
      LiveView — https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
      Lonestar Elixir — https://lonestarelixir.com/

      Special Guest: Mark Windholtz.

      59 min
    • Elixir Wizards Dojo: Nerves Part 2 with Connor Rigby and Todd Resudek

      Welcome to the second part of our special Elixir Wizards Dojo. A mashup made in partnership with ElixirConf Japan. In today’s episode, we talk to Nerves core team members Todd Resudek and Connor Rigby about all things Nerves. But first, Todd leads us into a delightful digression about his enjoyment of heavy metal music. From metal back to Nerves, Todd chats about how he uses Nerves to monitor his internet connection and to automatically restart his router when certain conditions are met. After talking about using Flutter and Dart to build GUIs, we ask Todd to share another of his Nerves projects; the future of sprinklers — the Drizzle 2000! We then explore Connor’s self-defined role in the Nerves team as the development head of networking libraries before discussing how easy it is to use Nerves if you are an Elixir user. Todd and Connor dive into their utopian visions for the future of Nerves and why no other IoT solutions can compete with the tooling that Nerves provides. We talk about FarmBot and the many features that its models have, including how they can pulverize weeds. This springboards the conversion into the increasing importance of IoT tech in the agriculture sector and how it’s likely to be the next billion-dollar industry. We round off the episode by giving our guests the space to plug themselves and they close with a request for listeners to Iron Maiden and Metallica’s first albums. A perfect compliment to the first installment of the Elixir Wizards Dojo, tune in to learn more about the Nerves Project.

      Key Points From This Episode:

      • Introducing our guests and this episode’s connection to ElixirConf Japan.
      • Connor and Todd lead a chat on the history and subgenres of heavy metal music.
      • Todd talks about using Nerves to monitor his internet connection and restart his router.
      • Building a user interface for Nerves’s projects using Flutter; Google’s UI toolkit.
      • Best practices for developing apps with a specific focus on GUI apps.
      • Hear about the Drizzle 2000! Todd’s sprinkler controller system that runs on Nerves.
      • Todd and Connor’s respective roles as a part of the Nerves core team.
      • The benefit of using Nerves; once it’s booted it’s a regular Elixir app.
      • What a kiosk terminal is and how you would go about internationalizing one.
      • Exploring the future of Nerves and hardware development.
      • Comparing Nerves to other IoT solutions; in conclusion, nothing can compete.
      • Different FarmBot system models that all use Nerves to grow food for you.
      • Using Nerves to encode and record video or to create a live stream.
      • Why integrating IoT into the agricultural sector will be the next billion-dollar industry.
      • Links Mentioned in Today’s Episode:

        SmartLogic — https://smartlogic.io/

        ElixirConf — https://elixirconf.com/2020
        Connor Rigby GitHub — https://github.com/ConnorRigby
        Todd Resudek Twitter — https://twitter.com/sprsmpl
        Todd Resudek GitHub — https://github.com/supersimple
        Simplebet — https://simplebet.io/
        Flutter — https://flutter.dev/
        Binary Noggin — https://binarynoggin.com/
        Nerves Project — https://www.nerves-project.org/
        Nerves Project GitHub — https://github.com/nerves-project/nerves_pack#erlang-distribution
        Nerves Vintage Net GitHub — https://github.com/nerves-networking/vintage_net
        Nerves Web Kiosk GitHub — https://github.com/nerves-web-kiosk/kiosk_system_rpi3
        Rhapsody of Fire — https://www.rhapsodyoffire.com/
        Ronnie James Dio — https://www.ronniejamesdio.com/
        DragonForce — https://dragonforce.com/
        Black Sabbath — https://www.blacksabbath.com/
        Deep Purple — https://deeppurple.com/
        Iron Maiden — https://ironmaiden.com
        Judas Priest — http://www.judaspriest.com/home/
        Sam Dunn — https://www.imdb.com/name/nm0242757/
        Ryan Holiday — https://ryanholiday.net/
        Arjen Lucassen — https://www.arjenlucassen.com
        Metallica — https://www.metallica.com/
        San Francisco Symphony — https://www.sfsymphony.org/
        Fping — https://fping.org/
        Dart — https://dart.dev/
        React Native — https://reactnative.dev/
        Scenic — https://kry10.com/
        Phoenix Framework — https://www.phoenixframework.org/
        Drizzler 2000 GitHub — https://github.com/supersimple/drizzle
        Ditch Witch — https://www.ditchwitch.com/
        Jon Carstens — https://twitter.com/joncarstens?lang=en
        Le Tote — https://letote.com/
        Electron — https://www.electronjs.org/
        Matthew Ludwigs — https://www.linkedin.com/in/mattludwigs/
        SmartRent — https://smartrent.com/
        Sophie Debenedetto — http://sophiedebenedetto.nyc/
        FarmBot — https://farm.bot/
        Membrane Framework — https://www.membraneframework.org/
        Greg Mefford — https://www.linkedin.com/in/ferggo/
        Omni-eye GitHub — https://github.com/GregMefford/omni_eye
        Bowery Farming — https://boweryfarming.com/
        John Deere — https://www.deere.com

        Show Notes - Japanese

        Elixir Wizards Dojo 第2部 Connor Rigby と Todd Resudek

        Episode S4E13b: 概要

        Elixir Wizards Dojo スペシャル番組の第二部にようこそ。ElixirConf JPとのパートナーシップによるマッシュアップです。今日のエピソードでは、NervesコアチームのメンバーであるTodd Resudek と Connor Rigby とNervesの全てについて話します。でも最初に、Toddは私たちをヘビーメタル音楽の彼の楽しみについての楽しい余談に導きます。メタルからNervesに戻って、ToddはNervesをインターネット接続のモニタリングと、特定の条件が満たされた時にルーターの自動で再起動する方法について話します。FlutterとDartを使ってGUIを構築する方法について話したあと、Toddに彼の作ったもう一つのNervesプロジェクト、スプリンクラーの未来,Drizzle 2000!についてシェアしてもらいます。そしてConnorがNervesチームにおける自ら定義した役割である、ネットワーキングライブラリの開発について探求し、もしElixirユーザーである場合にNervesを使うことがいかに簡単かについて議論します。ToddとConnorはNervesの未来の理想郷についての話題と、Nervesが提供するツールに敵うIoTソリューションが他に存在しない理由について飛び込みます。ファームボットについて話をして、雑草をやっつける機能を含む、ファームボットのモデルが持つたくさんの機能について話します。これは、農業分野でのIoT技術の重要性の高まりへの転換と、どのように次の10億ドル規模の産業になる可能性が高まってくるかについてを示しています。エピソードの締めくくりは、ゲストに自分自身とつながる方法について紹介してもらいながら、アイアンメイデン(Iron Maiden)とメタリカ(Metallica)のファーストアルバムをリスナーに紹介します。Elixir Wizards Dojoの初回への謝辞から、Nervesプロジェクトの詳細を学んでください。

        このエピソードのみどころ

        ゲストの紹介と、このエピソードとElixirConf JPとのコネクションについて

        Connor と Todd によるヘビーメタル音楽の歴史とサブジャンルへの案内
        ToddのNervesを使ったインターネット接続のモニタリングとルーターの再起動の
        Fultter というGoogleのUIツールキットを使ったNervesプロジェクトのユーザインタフェース構築
        GUIアプリに焦点を当てたときのアプリ開発のベストプラクティス
        Drizzle 2000について聴ける! Nervesで動くToddのスプリンクラーコントローラシステム
        ToddとConnorのNervesコアチームにおけるそれぞれの役割
        Nervesを使う利点: 一度起動すると通常のElixirアプリになる
        キオスク端末とは何か,どのようにキオスク端末を国際化するか
        Nervesとハードウェア開発の将来の探求
        Nervesと他のIoTソリューションの比較: 結論としては,Nervesに敵うものはない
        ファームボットシステムのモデルの違いについて: 全てにNervesが使われていて、食糧を育てる
        Nervesを使ってビデオをエンコードしたり録画したり,ライブストリーミングしたりする方法
        IoTを農業分野に統合することが次の10億ドル産業になる理由

        Special Guests: Connor Rigby and Todd Resudek.

        43 min
      • Elixir Wizards Dojo: Nerves Part 1 with Frank Hunleth and Justin Schneck

        Welcome to the first part of our extra special Elixir Wizards Dojo. A mashup made in partnership with ElixirConf Japan, in today’s episode, we pose questions asked by the Japanese Nerves community to Nerves core team members, Frank Hunleth and Justin Schneck. After introducing our guests, we talk about which companies make use of Nerve and explore its use cases by looking at FarmBot, an open source robotic farming tool. Justin and Frank take turns explaining the differences between soft and hard real-time — a springboard to show how Nerve excels within its ‘middle-ground of complexity’, production-orientated niche. From Halloween pranks to growing Sichuan chili peppers in the office, Justin and Frank share the projects that they’ve built using Nerves and emphasize its wide applicability. We discuss how Nerves has been both officially and unofficially ported to different devices, why people send Frank random pieces of hardware in the mail, and the differences between open-source and making your work publicly available. Justin and Frank commiserate over the challenge of working with Bluetooth and the beauty of the Nerves community in pushing innovation. We chat more about Nerves, including how you can extend the functionality of file systems, before Justin and Frank unpack their roadmap for Nerves’s future. Tune in to learn more about the Nerves Project, a system that can add a great deal of agility to any development cycle.

        Key Points From This Episode:

        • Introducing our guests and this episode’s focus on the Japanese Elixir community.
        • The double-edge of broadcasting your excitement about Elixir projects.
        • Looking at FarmBot as a practical use-case to show off what Nerve can do.
        • Differences between soft and hard real-time using FarmBot as an example.
        • What Nerves excels at; acting as a gateway for other processors.
        • Justin and Frank share the projects that they’ve built using Nerves.
        • A brief digression where Justin shares his love of Chinese Sichuan cooking.
        • What other markets are making use of Nerves in their product cycle.
        • The unique ‘middle-ground’ of complexity that Nerves is best suited to address.
        • Porting Nerves to different devices and what devices need to run Nerves.
        • Open-source versus making work public and how Justin took some of his Bluetooth work public.
        • The challenges of working with Bluetooth.
        • Hear how a group in the community is making a Nerves keyboard.
        • How you can extend the functionality of a file system on Nerves.
        • Nerves’s features that make it such an excellent tool within a production environment.
        • When deploying with Nerves Hub, learn how to configure Wi-Fi modules with different devices.
        • Starting with a facelift, Frank and Justin share their roadmap for Nerves’s future.
        • How companies Vary and SmartRent have contributed to the longevity of Nerves.
        • Links Mentioned in Today’s Episode:

          SmartLogic — https://smartlogic.io/

          ElixirConf — https://elixirconf.com/2020
          Frank Hunleth — https://www.linkedin.com/in/fhunleth/
          Justin Schneck — https://www.linkedin.com/in/justinschneck
          Susumu Yamazaki — https://twitter.com/zacky1972
          Nerves Project — https://www.nerves-project.org/
          Nerves Project Open Collective — https://opencollective.com/nerves-project
          Nerves Project GitHub — https://github.com/nerves-project/nerves_pack#erlang-distribution
          Nerves Kiosk System GitHub — https://github.com/nerves-web-kiosk/kiosk_system_rpi3
          FarmBot — https://farm.bot/
          Rose Point — https://www.rosepoint.com/
          The Food of Sichuan — https://www.amazon.com/Food-Sichuan-Fuchsia-Dunlop/dp/1324004835
          Lance Halvorsen — https://www.linkedin.com/in/lance-halvorsen-07a102/
          Atom VM GitHub — https://github.com/bettio/AtomVM
          Lichee Pi Zero — https://licheepizero.us/
          Pavlok — https://pavlok.com/
          Harald GitHub — https://github.com/verypossible-labs/harald
          Bluetooth with Nerves Notes GitHub — https://gist.github.com/fhunleth/fae46998609814ae4a8abd44f6f08188
          Fwup GitHub — https://github.com/fhunleth/fwup
          ‘Building a keyboard with Elixir’ — https://medium.com/swlh/building-a-keyboard-with-elixir-fc7bd3f60ec3
          Vintage Net Wizard GitHub — https://github.com/nerves-networking/vintage_net_wizard
          Grizzly GitHub — https://github.com/smartrent/grizzly
          SmartRent Careers — https://smartrent.com/careers/
          Very Possible Careers — https://www.verypossible.com/careers

          Show Notes - Japanese

          Elixir Wizards Dojo 第一部 Frank Hunleth と Justin Shneck

          Episode S4E13a: 概要

          Elixir Wizards Dojo スペシャル番組の第一部にようこそ。ElixirConf JPとのパートナーシップによるマッシュアップです。今日のエピソードでは、日本のNervesコミュニティからの質問をNervesコアチームのメンバーであるFrank Hunleth と Justin Schneck に尋ねます。ゲストの2人を紹介した後、Nervesを使用する会社のことや、ファームボット(オープンソースのロボティック農業ツール)に見る使用事例を探ります。JustinとFrankが交互にソフトリアルタイムとハードリアルタイムの違いを説明し、Nervesが「複雑さの中立的立場」、生産指向のニッチという点で優れていることを示します。ハロウィンのいたずらから、オフィスで育つ四川の唐辛子栽培まで、JustinとFrankはNervesを使用して構築したプロジェクトを紹介し、その幅広い応用性を強調します。Nervesが公式・非公式にさまざまなデバイスに移植された方法についてや、なぜみんながFrankにランダムなハードウェアを郵送するのか、オープンソースと単に作品を公開することの違いについて話し合います。JustinとFrankはBluetoothの機能開発の課題に同情し、イノベーションを推進する上でのNervesコミュニティの美点について語ります。さらにNervesについて話が進み、どのようにファイルシステムの機能性を拡張するのかや、JustinとFrankがNervesの将来のロードマップについて披露します。どのような開発サイクルにも「アジャイルに」できるシステムである、Nerves プロジェクトについてより詳しく知りたいという人は、是非聴いてください。

          このエピソードのみどころ

          ゲストの紹介と、日本のElixirコミュニティに対するこのエピソードの焦点

          Elixirプロジェクトについての興奮を広める上での「両刃」
          ファームボットに見るNervesが実現できる実事例
          ファームボットを例にした、ソフトリアルタイムとハードリアルタイムの違い
          Nervesの何が優れているのか: 他のプロセッサへのゲートウェイの役割
          JustinとFrankが共有する、Nervesで今まで構築してきたプロジェクトの数々
          Justinが愛する四川料理についての軽い脱線
          Nervesを製品サイクルに応用する他のマーケットや事例
          Nervesが扱うのに手ごろな複雑さの独特の「中間基盤」
          Nervesの異なるデバイスへの移植とNervesを実行させるのにどんなデバイスが必要
          オープンソースと作品を公開することの違いと、どのようにJustinがBluetoothでの仕事の一部を公開したか
          Bluetoothの開発作業のチャレンジ
          コミュニティのグループがどのようにNervesキーボードを作っているか
          どのようにNervesのファイルシステムの機能性を拡張するか
          本番環境で優れたツールとなる上でのNervesの機能

          Special Guests: Frank Hunleth and Justin Schneck.

          55 min
        • Greg Mefford on Nerves, Poncho vs Umbrella Apps, and Pre-Code Planning

          In today’s episode, we chat about system architecture, Ruby, Elixir, and everything in between with Greg Mefford, the senior back-end engineer for the Bleacher Report. We open the conversation by asking Greg about his start in coding, leading to a story about how Greg was that bored kid pressuring a math teacher to teach him QBasic. He shares how he fell in love with Ruby before discovering Elixir and Nerves. Having faced some challenges when learning Nerves, Greg talks about how he began documenting his pain points and writing documents to help onboard newcomers. We discuss Greg’s work with Nerves, his project aspirations, and his recommended resources for anyone looking to get into Nerves or Elixir. After providing his hot take on the latest Code BEAM V conference, we ask Greg what system architecture means to him. From there we get super meta about the meaning of architecture and what it means to translate design into practice. We touch on the struggle of understanding domain-driven design and Greg’s approach to pre-code planning before delving into how the Bleacher Report is set up. As Greg goes into details, you’ll hear why their servers now run on Elixir and not Ruby. Near the end of the episode, we talk about Poncho versus Umbrella apps, and Greg shares his passion for multi-user dungeons (MUDs). Tune in to learn more about Greg and his role in the Elixir and Nerves landscape.

          Key Points From This Episode:

          • Greg’s start in coding and his transition from electronics design into IT.
          • Why Greg loves Ruby and how he discovered the magic of Elixir.
          • Greg’s contribution to the Elixir and Nerves community by helping onboard newcomers.
          • What Greg’s job as a senior engineer for Bleacher Report looks like.
          • Greg recommends resources for beginners getting into Nerves and Elixir.
          • Creating a kid’s game using Nerves and Greg’s Blinkchain library.
          • Greg’s take on the Code BEAM V conference and hating on the Whova app.
          • What architecture means to Greg. This one gets deep.
          • How translating designs into software has changed over the years.
          • Why Greg struggles with the idea of domain-driven design.
          • The state of Extreme Programming practices and how they synergize together.
          • How Greg views pre-code planning; something that’s become his specialty within his latest job.
          • The many elements that contribute to how the Bleacher Report’s IT is set up.
          • Ruby servers versus Elixir servers and why the Bleacher Report uses Elixir.
          • Why the Poncho system was designed to fix Nerves issues not covered by Umbrella apps.
          • Greg’s history creating multi-user dungeons (MUDs) and playing DragonRealm.
          • Links Mentioned in Today’s Episode:

            Greg Mefford LinkedIn — https://www.linkedin.com/in/ferggo/

            SmartLogic — https://smartlogic.io/
            SmartLogic Jobs — https://apply.workable.com/smartlogic/
            ElixirConf — https://elixirconf.com/2020
            Blinkchain GitHub — https://github.com/GregMefford/blinkchain
            Justin Schneck GitHub — https://github.com/mobileoverlord
            Le Tote — https://www.letote.com/
            James Smith — https://twitter.com/st23am
            Garth Hitchens, ElixirCof 2015 — https://www.youtube.com/watch?v=kpzQrFC55q4
            Nerves Project — https://www.nerves-project.org/documentation
            Bleacher Report — https://bleacherreport.com/
            Programming Elixir — https://www.amazon.com/Programming-Elixir-1-6-Functional-Concurrent/dp/1680502999
            Elixir in Action — https://www.amazon.com/Elixir-Action-Sa%C5%A1a-Juri-cacute/dp/1617295027
            Chris Keathley — https://codesync.global/speaker/chris-keathley/
            Code BEAM V Conference — https://codesync.global/conferences/code-beam-sto/
            Whova App — https://whova.com/
            Amos King — https://twitter.com/adkron?lang=en
            Christopher Keele — https://github.com/christhekeele
            Steve Bussey Episode — https://smartlogic.io/podcast/elixir-wizards/s4e3-bussey/
            Mark Windholtz — https://github.com/mwindholtz
            Extreme Programming — http://www.extremeprogramming.org/
            Adopting Elixir: From Concept to Production — https://www.amazon.com/Adopting-Elixir-Production-Ben-Marx/dp/1680502522
            Live Elixir Wizards - Betweenisode — https://www.youtube.com/watch?v=kEwxhGYEGts
            Twirp GitHub — https://github.com/twitchtv/twirp
            Frank Hunleth — https://github.com/fhunleth
            Elixir Supervisor Behavior — https://hexdocs.pm/elixir/Supervisor.html
            Elixir Poncho Projects — https://embedded-elixir.com/post/2017-05-19-poncho-projects/
            Titans of Text — https://www.titansoftext.com/
            Miriani — https://www.toastsoft.net/
            DragonRealms — https://www.play.net/dr/
            Justus Eapen Twitter — https://twitter.com/justuseapen
            Eric Oestrich — https://twitter.com/EricOestrich

            Special Guest: Greg Mefford.

            42 min
          • Johanna Larsson on Hex Diff, Domain Driven Design, Umbrella apps, and more

            Johanna Larsson is a community-minded software engineer whose project, Hex Diff, generates highlighted git diffs, right in your browser. In this episode, we talk to Johanna about how Hex Diff can benefit Elixir users, the differences between code architecture and code design, and the debatably under-appreciated role of Elixir umbrella apps. We start the conversation by chatting with Johanna about her recent move to London and her work for Duffel; a startup helping travel agencies book trips. After talking about how she got into software development, we dive into Hex Diff versus GitHub, with Joanna detailing how Hex Diff offers greater security for your code. We ask Johanna about the origins of the Hex Diff project and she explores its aims and her experiences working on the project. In line with this month’s theme, we discuss what architecture means to Joanna and the need for domain-driven design. We quiz Joanna on her approaches to problem-solving and she explains how her coding process emphasizes building an early prototype and constantly iterating on it. Despite hearing that umbrella apps are bad news, Joanna makes a case for their value while acknowledging how that they need greater tooling. We round off our conversation by asking Joanna how she tries to grow her skillset and what her favorite Elixir resource is. Following our discussion with Johanna, we open with another edition of Pattern Matching with Todd. This week, friend of the podcast Todd Resudek asks five questions of Elixir community member Bruce Williams. They talk about Bruce’s work as an Arabic cryptologic linguist for the US Airforce, his software career, and the therapeutic uses of playing Animal Crossing during a pandemic.

            Key Points From This Episode:

            • We introduce Johanna Larsson and she shares how she is doing in London.
            • How Johanna developed a love for software and how Elixir brought her to London.
            • Details about Johanna’s job at Duffel; a startup that helps travel companies book trips.
            • How Hex Diff is solving problems that arise when using code from GitHub.
            • Johanna’s experience working on Hex Diff and the problems that they aim to solve.
            • Hex Diff’s caching system and what Hex Diff does to counter malicious software uploads.
            • The disconnect between system architecture and implementation.
            • Johanna’s view on the differences between code design and code architecture.
            • Why domain-driven design increases usefulness to the end-user.
            • How Johanna approaches a problem and her steps when building code.
            • Hear what key lesson Johanna learned from her latest big project.
            • Johanna’s experience with umbrella apps and why they need tooling functions.
            • How working in a strong team can motivate you and help grow your skill set.
            • Why the Elixir Slack group is Johanna’s favorite tool.
            • Why you should check out Hex Diff; it’s a great introduction to Elixir.
            • This edition of Pattern Matching with Todd; Todd Resudek interviews Bruce Williams.
            • Links Mentioned in Today’s Episode:

              Johanna Larsson — https://blog.jola.dev/

              Johanna Larsson LinkedIn — https://www.linkedin.com/in/joladev/
              Johanna Larsson Twitter — https://twitter.com/joladev
              SmartLogic — https://smartlogic.io/
              ElixirConf — https://elixirconf.com/2020
              SharePoint — https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration
              Duffel — https://duffel.com/
              Stripe — https://stripe.com/
              Hex Diff — https://diff.hex.pm/
              Hex Diff GitHub — https://github.com/hexpm/diff
              Maciej Mensfeld — https://mensfeld.pl/
              Diffend — https://my.diffend.io/
              Wojtek Mach — https://twitter.com/wojtekmach
              Eric Meadows-Jönsson — https://twitter.com/emjii
              Todd Resudek — https://twitter.com/sprsmpl
              Announcing Hex Diff — https://hex.pm/blog/announcing-hex-diff
              Hex Core GitHub — https://github.com/hexpm/hex_core
              Hex Diff Phoenix — https://diff.hex.pm/diff/phoenix/1.5.2..1.5.3
              The Design of Everyday Things — https://www.amazon.com/Design-Everyday-Things-Revised-Expanded/dp/0465050654
              Brooklyn Zelenka LinkedIn— https://www.linkedin.com/in/brooklynzelenka/
              Unified Modeling Language — https://en.wikipedia.org/wiki/Unified_Modeling_Language
              Elixir v. 1.10.4 Mix CMD — https://hexdocs.pm/mix/Mix.Tasks.Cmd.html
              Elixir v1.11 Forum Post — https://elixirforum.com/t/elixir-v1-11-will-be-released-in-october-2020/31535
              Rustler GitHub — https://github.com/rusterlium/rustler
              Live View —https://blog.codepen.io/documentation/live-view/
              Bruce Williams — https://www.linkedin.com/in/wbruce/
              Absinthe — https://absinthe-graphql.org/
              Untitled Goose Game — https://goose.game/
              Stardew Valley — https://www.stardewvalley.net/
              Myst — https://cyan.com/games/myst/
              Blanco White — https://www.blancowhite.info/
              Groundhog Day — https://www.imdb.com/title/tt0107048/
              Animal Crossing — https://www.animal-crossing.com/

              Special Guest: Johanna Larsson.

              50 min
            • Lau Taarnskov on the Trouble with Time Zones

              Handling date and time is a challenge in any language, but Lau Taarnskov is determined to solve that problem in Elixir. Lau is today’s guest on Elixir Wizards, and this episode is all about his contributions to Elixir. Lau has been involved with web development and e-commerce for decades. He started contributing to Elixir open source in 2014 and created the Calendar and tzdata libraries. Calendar is a datetime library for Elixir, that provides explicit types for datetimes, dates, and times, and full time zone support is provided via its sister package, tzdata. When it comes to the subject of date, time, and time zones, besides talking about it and writing software for it, Lau also writes about it on his blog, Creative Deletion.

              This episode explores how Lau got started in programming, and what led him to creating Calendar and tzdata. Lau shares the resources that he found helpful when he started using Elixir, and why he was drawn to Elixir in the first place. We hear Lau’s opinions on time zones and daylight savings and whether or not they’re necessary, and he shares some advice for anyone working with time in Elixir.

              Then it’s time for another edition of Pattern Matching with Todd, in which Todd Resudek asks Brooklyn Zekanka five questions to help us get to know her better. Brooklyn talks about everything from she has lived, what jobs she did before becoming a programmer, and her education in classical music, to her favorite bands, movies, and TV shows, as well as some of the projects she is working on. For all this, and more, don’t miss today’s episode!

              Key Points From This Episode:

              • Lau explains what TLAs are and why they aren’t always helpful for explicit communication.
              • Lau introduces himself and shares how he got into programming and computer science.
              • The resources Lau found most useful when he started using Elixir, including books he read.
              • What it means that Elixir’s source code is written in Elixir, and why that was helpful for Lau.
              • Lu talks about Calendar, a datetime library that Lau created for Elixir, and Tzdata, a parser and library he created for the tz database, and why he created them.
              • How Lau deconstructed the time zone problems and how his ideas have changed over time.
              • Lau’s opinions on time zones and daylight savings and whether or not they’re necessary.
              • Advice from Lau for anyone working with time in Elixir.
              • Another edition of Pattern Matching with Todd – today’s guest is Brooklyn Zelenka.
              • Where Brooklyn was born, where she has lived, and the jobs she did before programming.
              • Brooklyn talks about her musical background and how it’s similar to programming.
              • Brooklyn shares a pro tip about slides and reflects on her highlights as a speaker.
              • What Brooklyn would be doing if she weren’t a programmer and the genre of music she likes.
              • Brooklyn’s favorite TV shows and movies, including Amadeus and Mad Men.
              • Brooklyn shares what she’s working on currently and the next project she’s excited about.
              • Links Mentioned in Today’s Episode:

                Lau Taarnskov on Twitter – https://twitter.com/laut

                Creative Deletion Blog – http://www.creativedeletion.com/
                Lau Taarnskov on GitHub – https://github.com/lau
                Calendar on GitHub – https://github.com/lau/calendar
                Tzdata on GitHub – https://github.com/lau/tzdata
                Elixir in Action – https://www.amazon.com/Elixir-Action
                Programming Elixir – https://www.amazon.com/Programming-Elixir-1-6-Functional-Concurrent/
                Brooklyn Zelenka on LinkedIn – https://www.linkedin.com/in/brooklynzelenka/ Brooklyn Zelenka on
                Twitter – https://twitter.com/expede
                Brooklyn Zelenka on GitHub – https://github.com/expede
                FISSIONcodes Website – https://fission.codes/
                SmartLogic — https://smartlogic.io/
                Amadeus — https://www.rottentomatoes.com/m/amadeus
                Mad Men — https://www.rottentomatoes.com/tv/mad-men

                Special Guest: Lau Taarnskov.

                38 min
              • Council of Wizards Part 2 with Chris Bell, Desmond Bowe, Emily Maxie, Dan Lindeman, and Alan Voss

                For part 2 of our Council of Wizards panel discussion, we are joined by Chris Bell, Desmond Bowe, Emily Maxie, Dan Lindeman, and Alan Voss! Chris and Desmond run the ElixirTalk Podcast and we get in-depth on the intersection of the language and talking about it. They share the lessons they have learned in the podcasting space, making some pit stops to chat about aliens, Elixir beef, and marble flooring! We discuss the community during the pandemic and what the Elixir world might look like for the next year or two. Emily and Dan then step in to give us all the information about Very and their very functional remote work model. They talk us through the full departure that the company made from a physical hub and both share what they love and hate about working from home, before and during the COVID crisis. Dan and Emily talk about onboarding and team spirit in remote teams and the strategies that have best served Very in this regard. Lastly, we have a bonus section with Alan Voss, to discuss his game night competitions and more. He unpacks the games he has already hosted and some of the candidates for future events before we hear about his experiences in the pandemic, specifically as an extrovert and a father. For all of this make sure to join us on the show!

                Key Points From This Episode:

                • The exciting possibility of starting beef in the Elixir community!
                • Books and podcasts we have been reading and listening to.
                • Marble flooring, glass blowing, aliens, conspiracy theories, and impersonations!
                • Tips, tricks, and lessons for the podcast space from Chris and Desmond.
                • Thoughts on the future of the Elixir community during and after the pandemic.
                • The array of projects that keep Chris and Desmond busy; startups, meetups, conferences!
                • Very's fully remote-work setup and the decision to move away from a physical office.
                • Challenges and lessons in the work-from-home model; making do with less in-person interaction.
                • Positive sides to a home workspace; making a mess and closing the door.
                • Employee socialization and familiarization at a remote company.
                • The applicability of Elixir across different projects and libraries.
                • The infinite amount of puns that are available when talking about Very!
                • Programming Connect Four and the future of bot competitions according to Alan.
                • Strategy snobs and taking this to its logical conclusion with chess and Go.
                • The effect that the pandemic has had on extroverts and the adjustments that Alan has made.
                • The possibility of ElixirConf this year and the forms it could take.
                • Work that has gone into Alan's game-night side project over the last months.
                • The growth of Postmates and their current need for new employees!
                • Links Mentioned in Today’s Episode:

                  SmartLogic — https://smartlogic.io/

                  Elixir Ecosystem Survey — https://elixirsurvey.typeform.com/to/yYmJv1
                  ElixirConf — https://elixirconf.com/2020
                  Github Repo for Transcript Corrections — https://github.com/smartlogic/smartlogic.io/tree/master/podcast/elixir-wizards/transcripts
                  Chris Bell — https://cjbell.co/
                  Chris Bell on Twitter — https://twitter.com/cjbell
                  Desmond Bowe on Twitter — https://twitter.com/desmondmonster
                  ElixirTalk — http://elixirtalk.com/
                  Emily Maxie on Twitter — https://twitter.com/emilymaxie
                  Dan Lindeman on Twitter— https://twitter.com/lindemda
                  Very — http://verypossible.com/
                  Chris McCord — http://chrismccord.com/
                  Alan Voss — http://www.alanvoss.org/
                  Alan Voss on Twitter — https://twitter.com/alanvoss
                  Lonestar Elixir— https://lonestarelixir.com/
                  MPex — https://mpex.com/
                  Payitoff — https://www.payitoff.io/
                  Meetup — https://www.meetup.com/
                  OpenAI — https://openai.com/
                  Risk — https://www.amazon.com/Hasbro-B7404-Risk-Game/dp/B01ALHAIWG
                  Strange Loop — https://www.thestrangeloop.com/
                  Postmates — https://postmates.com/

                  Special Guests: Alan Voss, Chris Bell, Dan Lindeman, Desmond Bowe, and Emily Maxie.

                  56 min
                • Council of Wizards Part 1 with Andrea Leopardi and René Föhring

                  The Elixir community continues to flourish and evolve in these uncertain times and in honor of this we have put together a live show with a number of special guests! In part one today, we are joined by Andrea Leopardi and René Föhring, who we are so happy to welcome back. We get the lowdown from each of them in turn, discussing personal preferences, tips and tricks, and recommendations for Elixir and beyond. Andrea gets into some of his pet peeves and comments on the trend of slow interfaces. We then look at future possibilities for Elixir including the outside chance of it being run on mobile and for crypto-mining! Andrea also updates us on the book he is currently working on so keep an eye out for that in the future! René then steps in to talk about his work on Credo, his hopes for it in the future, and some suggestions for listeners using it. We do some comparisons between Elixir and Ruby before René offers some thoughts on Electron and functional programming concepts. So for all this and a whole lot more, make sure to tune in today and stay tuned for part 2!

                  Key Points From This Episode:

                  • A reintroduction to Andrea and his current work in the Elixir space.
                  • Andrea's tool recommendations and what he uses most at the moment.
                  • Updates, the short term future of the world of Elixir and Andrea's current focus.
                  • RSpec versus xUnit: Andrea's personal preferences.
                  • Andrea's limited experience of LiveView and early reactions.
                  • Feelings about computers and phones with slow interfaces!
                  • The very slim chances of seeing Elixir run on mobile.
                  • Cryptocurrency and Andrea's lack of experience and ambition in the space.
                  • Some exciting information about Andrea's upcoming book to keep an eye out for.
                  • René's current projects; Credo, Elixir weekly newsletter, and more!
                  • The future of Elixir — will it be the next Ruby?
                  • Elixir on a phone; René's thoughts on this possibility and its validity.
                  • Updates for Credo — all the exciting news since our last conversation with René.
                  • Improving work that you are proud of and René's own feelings about Credo.
                  • The objectives and vision for Credo and improving upon certain pain points.
                  • Writing and running in Electron and how to have fun while doing it!
                  • The application of functional programming concepts in René's work in Electron.
                  • René's suggestion for Credo — using the Credo master after it being reworked.
                  • Links Mentioned in Today’s Episode:

                    SmartLogic — https://smartlogic.io/

                    Elixir Ecosystem Survey — https://elixirsurvey.typeform.com/to/yYmJv1
                    ElixirConf — https://elixirconf.com/2020
                    Github Repo for Transcripts Corrections - https://github.com/smartlogic/smartlogic.io/tree/master/podcast/elixir-wizards/transcripts
                    Andrea Leopardi — https://andrealeopardi.com/
                    Andrew Leopardi on Twitter — https://twitter.com/whatyouhide
                    Rene Föhring — http://rrrene.org/
                    Rene Föhring on Twitter — https://twitter.com/rrrene
                    Alfred — https://www.alfredapp.com/
                    Tesla — https://www.tesla.com/
                    TempleOS — https://templeos.org/
                    Elon Musk — https://www.forbes.com/profile/elon-musk/
                    Mint — https://www.mint.com/
                    Finch — https://finch.io/
                    Ruby — https://www.ruby-lang.org/en/
                    Electron — https://www.electronjs.org/

                    Special Guests: Andrea Leopardi and René Föhring.

                    40 min
                  • Chris McCord with a Deep Dive on Phoenix

                    Although it’s taken him four seasons to make an appearance, we are so glad to finally welcome Chris McCord, creator of the Phoenix framework, onto the show. While this season’s focus is on system and application architecture, today’s discussion deviates to focus on Phoenix. We get started by hearing more about Chris’s programming journey, all the way from TI-Basic to where he is now. After this, we dive into LiveView, the project Chris is currently focusing most of his energy on. We get into some of the incredible changes that have been made including live navigation, deep change tracking optimizations, and static asset tracking. Chris shares which of the changes he is most excited about, along with why he enjoys seeing LiveView being misused. We then look at some of the critiques of LiveView and Phoenix generally. Chris offers counter-arguments to the most common criticisms of the framework. He shares how the title of 'framework' can be a double-edged sword, as well as why he is hesitant to extract channels prematurely. We wrap the show up with a look into the future, hearing more about what’s on the horizon for Phoenix and where Chris hopes the Elixir community is headed. This conversation was well worth the four season-long wait, so be sure to tune in today!

                    Key Points From This Episode:

                    • Why it took Chris four whole seasons to finally make an appearance on the show.
                    • Chris’s programming journey from T-Basic all the way to Java, HTML, and PHP.
                    • How a broken back landed Chris his first paid programming job.
                    • Learn more about Chris’s current project, LiveView, and some of the recent additions.
                    • Why the optimizations were the most interesting changes for Chris to make on LiveView.
                    • Some of the most interesting use cases Chris has seen of LiveView.
                    • How Chris plans to navigate laying LiveView out on a larger codebase.
                    • Chris’s take on stateful applications and why the platform is so important.
                    • The origins of the hilariously termed ‘dead view.’
                    • Some of the most pertinent critiques of LiveView and Phoenix generally.
                    • Chris busts some of the invalid critiques of Phoenix.
                    • Why the community feedback on LiveWire has been so surprising to Chris.
                    • Phoenix 1.6 changes and when we can expect its release.
                    • Chris’s take on whether Elixir is likely to overthrow Rails in terms of popularity.
                    • The systemic blockers that create adoption friction of Elixir and Phoenix.
                    • Looking into the future — Chris’s goals for Phoenix and his hopes for the Elixir community.
                    • Links Mentioned in Today’s Episode:

                      Chris McCord — http://chrismccord.com/

                      Chris McCord on Twitter — https://twitter.com/chris_mccord
                      DockYard — https://dockyard.com/
                      Dave’s Site — https://www.davesite.com/
                      Hacking with PHP — http://www.hackingwithphp.com/
                      Phoenix LiveView — https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
                      Phoenix Phrenzy — https://groundstation.gigalixirapp.com/
                      Dashbit: An Upcoming Authentication Solution for Phoenix — https://dashbit.co/blog/a-new-authentication-solution-for-phoenix
                      Aaron Renner on GitHub — https://github.com/aaronrenner/phx_gen_auth
                      Phoenix Issues on GitHub —
                      https://github.com/phoenixframework/phoenix/issuesq=is%3Aopen+is%3Aissue+milestone%3Av2.0
                      Phoenix Fire Nest — https://github.com/phoenixframework/firenest
                      Phoenix Pub/Sub — https://github.com/phoenixframework/phoenix_pubsub
                      ElixirConf 2020— https://2020.elixirconf.com/
                      ElixirConf 2020 Speaker Proposals — https://2020.elixirconf.com/#cfp
                      TI-83 Calculator — https://www.amazon.com/Texas-Instruments-TI-83-Graphing-Calculator/dp/B00001N2QU
                      Teach Yourself C in 21 Days — https://www.amazon.com/Teach-Yourself-21-Days-Sams/dp/0672310694
                      Rest Fest — https://www.restfest.org/
                      José Valim on Twitter — https://twitter.com/josevalim
                      Jason Goldberger on LinkedIn — https://www.linkedin.com/in/jason-goldberger-84237392/
                      SmartLogic — https://smartlogic.io/
                      SmartLogic Jobs — https://smartlogic.workable.com/

                      Special Guest: Chris McCord.

                      44 min
                    • Amos King on MUDs, Architecture, Domain-driven design, and Military Bases

                      Today’s guest is Amos King, Principal CEO at Binary Noggin, and host on the Elixir Outlaws and This Agile Life podcasts. This episode is centered around a casual conversation about everything from programming, the military, sarcasm, and puns to systems and application architecture, domain-driven design, and bitmasks. Amos shares with us how he got into programming, after wanting to be a doctor or an engineer first, and tells us how he met Famous Amos. We talk about spectrum analyzers, Elixir resources, and MUDs, as well as type-first design and Haskell. Amos gives us his takes on domain-driven design, API, booleans, and enums, and even roasts his co-host Chris Keithley a little. Don’t miss this episode for everything you’ve ever wanted to know about the legendary Amos King (and a whole lot more)!

                      Key Points From This Episode:

                      • Amos explains what Adkron means, which is his gaming and social media handle.
                      • Where the name Elixir Outlaws for the podcast came from.
                      • How Amos got into programming as a career, after wanting to be a surgeon and an engineer.
                      • What Amos’s first opportunity as a programmer was, and how he met Wally Amos.
                      • Amos explains what a spectrum analyzer is, based on his experience in the military.
                      • Amos shares why Steve Bussey’s book, Real-Time Phoenix, is his favorite Elixir resource.
                      • Eric and Amos talk about the MUD engine that they worked on together.
                      • What systems and application architecture means to Amos and how it differs from design.
                      • What type-first design (TFD) is and Amos’s opinion on it as a thought exercise.
                      • Amos talks about Haskell programming and domain-driven design.
                      • Relating domain-driven design to a car dealership to describe types and terminology.
                      • Amos talks a bit about his company and what they do.
                      • Justus, Eric, and Amos debate the term “architect” and what it actually means.
                      • Amos shares his take on API architecture, booleans, enums, and bitmasks.
                      • Amos gives his hot take on his co-host Chris Keithley.
                      • Links Mentioned in Today’s Episode:

                        Amos King on Twitter — https://twitter.com/adkron

                        Elixir Outlaws Podcast — https://elixiroutlaws.com/
                        Wally Amos — https://en.wikipedia.org/wiki/Wally_Amos
                        Windows 3.0 — https://en.wikipedia.org/wiki/Windows_3.0
                        Real-Time Phoenix on Pragmatic Bookshelf — https://pragprog.com/book/sbsockets/real-time-phoenix
                        Elixir School — https://elixirschool.com/en/
                        Elixir Inaction — https://twitter.com/gausby/status/986550202248187904
                        This Agile Life Podcast — https://www.thisagilelife.com/
                        Screen — https://screen.so/#/home
                        Haskell Book — https://haskellbook.com/
                        Binary Noggin Website — https://binarynoggin.com/
                        Binary Noggin on Twitter — https://twitter.com/BinaryNoggin
                        SmartLogic — https://smartlogic.io/
                        Justus Eapen on Twitter — https://twitter.com/justuseapen
                        Eric Oestrich — https://oestrich.org/
                        Kalevala — https://github.com/oestrich/kalevala
                        Eric Oestrich on Twitter — https://twitter.com/ericoestrich
                        Eric Oestrich on GitHub — https://github.com/oestrich

                        Special Guest: Amos King.

                        56 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…