I recently enrolled in LearnElixir’s self-paced program for learning Elixir. I first heard about the language in late 2017, but was still getting back into software development and didn’t have enough time to consistently work with the language. In recent years, I’ve started coming back to it, working through a variety of resources to learn the fundamentals. Dave Thomas’s Coding Gnome and Elixir in Action have been great ways to develop a foundation.
I’ve become increasingly drawn to both the power and simplicity that the functional programming paradigm brings to an agile programming workflow, especially when practicing TDD. Specifically with Elixir (and the underlying Erlang and OTP bedrock), I’m intrigued by the idea of the Actor model as a viable and battle-tested way to manage concurrency and the increasing need for horizontal scaling as we reach computational limits. Additionally, although not strictly necessary (and certainly not always the right route depending on business constraints), the Elixir stack allows for a more contained, uniform environment, as showcased by Saša Jurić:
That chart doesn’t even mention the progress made with Phoenix LiveView at the UI layer. As it stands, the current Elixir ecosystem seems to fulfill a combination of promises found across other languages and tech stacks. It combines Node’s single-language full-stack approach with Go’s promise of making concurrency more approachable through lightweight threads/processes, alongside reactive UI components from the React and Vue landscape and the beauty of Ruby syntax. It’s pretty exciting stuff, and I’m looking forward to going deeper.
Over the coming months, I’ll be working on several smaller-scale Elixir applications both as part of the LEarnElixir curriculum and my own initiatives. I’ll be documenting the development of these apps here for posterity. These apps will include:
- LearnElixir’s first assignment, which is to create a “GiphyScraper” that can be used by calling a single Elixir module’s
search
function with aquery
argument, and return aJSON
payload with the first 25 results. Although I believe this assignment is intended to be used throughiex
(by importing and directly calling the module function iniex
), I would like to add a CLI component to the project for ease of interaction (and to improve my understanding of IO in Elixir.) - NYT’s Wordle and SpellingBee. A few months back, I wrote a couple of simple programs in an afternoon for fun to help me both sets of puzzles (GH links here and here). Wordle in particular is a game that gets pretty rote once you have a strategy for solving it, so it became more fun to write a program to help me out if I ever got stumped. Both of these scripts were written in Python, so I’d like to re-write them using my newfound Elixir knowledge. They are currently CLI tools, so I will be reimplementing them as such to begin with, but I will also add an API layer that uses Twilio’s API service. I’d like to be able to text my endpoint the prompts, and have that data returned via text message.
- A variety of bigger apps, most of which are still being fleshed out from a design perspective, but also ones that I think have broader appeal and could be used on a bigger scale. This includes a remake of the WishingWell site, a crypto-oriented app that would interact with the Ethereum and Bitcoin blockchains, as well as a smaller private app for use by my book club for scheduling.