Links to resources I have found useful or think might be helpful to future me or Elixir/Erlang/BEAM developers like me.
- Jump to Alpaca
- Jump to BEAM
- Jump to Clojerl
- Jump to Elixir
- Jump to Erlang
- Jump to Erlog
- Jump to Gleam
- Jump to Hamler
- Jump to Joxa
- Jump to Kry10 operating system
- Jump to LFE (Lisp-Flavoured Erlang)
- Jump to Luerl (Lua in Erlang)
- Jump to Purerl
- Erlang Interoperability - ElixirSchool.com
- Erlang/Elixir Syntax: A Crash Course - Elixir-lang.org
- It's Time to Embrace Erlang - Todd Resudek (CodeBEAM SF 2020)
- Why do Erlang Modules Look Like Atoms in Elixir - Tyler Pachal
- ExToErl - Convert Elixir expressions into Erlang: Docs | Github
- Erlang Ecosystem Foundation | News | Working groups | Academic papers | Events
- Update from the Erlang Ecosystem Foundation working groups - Sebastian Strollo (Code BEAM V 2020)
- Introducing the Erlang Ecosystem Foundation (Code BEAM SF 19)
- Operable Erlang and Elixir - Fred Hebert (Code BEAM SF 19)
- The Hitchhiker's Guide to the Unexpected - Fred Hebert (Code BEAM SF 2018)
- Mid-air airplane repair: Troubleshooting at WhatsApp - Maxim Fedorov (Code BEAM SF 19)
- Alpaca: Functional programming inspired by ML for the Erlang VM (No commits since April 2019)
- The Erlang VM with Robert Virding - Birmingham Elixir
- The Erlang VM or How I Started Loving Parallel Progamming - Erik Stenman (GOTO 2013)
- Hitchhiker's Guide to the Erlang VM - Robert Virding (London Erlang Factory Lite)
- JVM struggles and the BEAM - Joel Kemp
- BEAMJIT: The journey - Lukas Larsson (Code BEAM V 2020)
- JIT Compiler for Erlang OTP - Lukas Larsson (Code BEAM V 2020)
- Clojerl: Clojure for the Erlang VM: Clojerl.org | Github | Twitter
- Elixir-lang.org: Docs | Getting Started (tutorial) | Syntax reference | Learning resources | Elixir-lang-talk group | Elixir Core mailing list | ElixirForum.com
- How to sell Elixir (Again) - Evadne Wu (Code BEAM Lite Stockholm 2023)
- Default environment: The Kernel module
- Elixir School
- Protohackers - Andrea Leopardi: Videos | Protohackers.com | Andrea's code (Github)
- ElixirCasts.io
- Introducing Elixir: Your entire web stack - Lars Wikman (Øredev 2023)
- Elixir: functional, concurrent, distributed programming - Andrea Leopardi (Lambda World 2018)
- From Zero to Hero in Elixir - LittleAlchemist.io
- Elixir Tutorial - Tensor Programming
- Intro to Elixir Programming - learn-elixir.com
- Alchemist Camp
- Killer Elixir-Tips - extips.blackode.in
- Elixir Examples: Categorized | Single page
- Exercism.io Elixir
- Elixir Koans
- Joy of Elixir
- Elixir Succinctly - Emanuele DelBono
- Elixir Devhints
- A safer Elixir - Esteban Ibarra (ElixirConf EU 2021)
- Intro to Elixir - SolutionStreet.com
- 7 ways of doing Fizz Buzz in Elixir and other clickbaity stuff - Khaja Minhajuddin
- E-xyza Youtube channel (Isaac Yonemoto): Good starting video
- The Comprehensive Guide to Elixir's List Comprehension - Mitchell Hanberg
- For Can Do More - Jason Stiebs
- Hands-on Elixir & OTP: Cryptocurrency trading bot - Kamil Skowron: Youtube videos | Online | PDF | Epub | Source code - Github
- Buildings start-ups with Elixir - Michael Schaefermeyer (Code BEAM STO 19)
- Ten Things I Wish I Knew Before Using Elixir - Chris Williams
- Why We've Adopted Elixir (at Pusher) - Samuel J Murray
- Forum over Functions - Randall Thomas (Code BEAM V America 2021)
- Elixir Foundation - Zach Siri (Codemy.net) (NOT all free)
- Developing With Elixir/OTP - Pragmatic Studio
- LearnElixir.tv & LearnPhoenix.tv
- Elixir for Programmers - Dave Thomas (NOT FREE, but it's from the legendary Dave Thomas)
- The Complete Elixir and Phoenix Bootcamp - Stephen Grider (Udemy)
- Elixir Sips
- RED:4 - Learn Elixir The Fun Way - Rob Conery
- Discover Elixir & Phoenix - Tristan Edwards
- Awesome Elixir - Curated list of Elixir/Erlang libraries, resources & shiny things
- Cheatsheet
- Elixir in Action (code) & book (book isn't free)
- Simplifying Systems with Elixir - Saša Jurić (YOW! Lambda Jam 2020)
- Elixir in 2021 - Saša Jurić & Jonn Mostovoy
- A Brief History of Elixir - Andrea Leopardi (Code BEAM Lite Munich 2018)
- Elixir Saves Pinterest $2 Million a Year In Server Costs - Paraxial.io
- Lessons Learned Building a Medication Service at Teladoc and How Ecto Saved the Day - James Lavin (EMPEX 2018) (Hey, that's ME! I did a thing!!!)
- Explicit Elixir - Paul Lamb (ElixirDaze 2016)
- Ten Reasons to Fall in Love with Elixir - Ivan Yurov
- What Elixir is About - José Valim (Erlang Factory SF 2015)
- Elixir: Easy fun for busy developers - David Schmitz (Devoxx 2016)
- Transforming Programming - Dave Thomas (Erlang & Elixir Factory 2017)
- A Completely Unbiased Showcase of Elixir - Andrea Leopardi (Erlang User Conference 2016)
- Elixir with José Valim
- Building a web framework from scratch in Elixir - Robert Lord
- Sweet Elixir! - Ryan Cromwell & full notes
- Basic Design in Functional Programming Languages - Tomasz Kowal (ElixirLive 2016)
- Elixir’s with statement is fantastic - Alex Loukissas
- Brooklyn Zelenka - Learn Elixir by Building a Real Time CLI Chat App - Brooklyn Zalenka - λC 2018: Part 1 | Part 2
- Elixir talks - Confreaks.tv
- Elixir Koans - Nicolas Deverge
- Introducing reducees - José Valim
- Elixir Express: Workshop - Chris McCord (RailsConf 2014) & Basic documentation & Advanced documentation
- Elixir for the Rubyist - Hal Fulton (RubyDay 2015)
- Elixir With José Valim - HowIStart.org
- What's Ahead for Elixir? - José Valim (ElixirConf EU 2015)
- Elixir: Power of Erlang, Joy of Ruby - Dave Thomas (LoneStarRuby 2013)
- Introduction to Elixir: a New Language on the VM - José Valim
- Foray into Functional Programming with Elixir - Trevor Brown (Suncoast Java Users Group Dec 2014)
- Functional and concurrent programming with Elixir - Gabriele Lana
- Rubyists, have a sip of Elixir! - Benjamin Tan (RubyConf 2014)
- Intro to Elixir for Rubyists - Josh Adams & Robby Clements (ExlirConf 2014)
- Elixir Foundations for Ruby Devs: Transforming Data - Tomasz Kowal
- Elixir: The only Sane Choice in an Insane World - Brian Cardarella (GOTO Chicago 2017)
- Where I Got Stuck Using IEx.pry in Elixir - Jesse Trimble
- Programming Elixir: The magic of today's tonic - Katie Miller (Linux.conf.au Jan 2014)
- Ohai, Elixir! - Benjamin Tan (GeekCampsG 2014)
- Elixir - A modern approach to programming for the Erlang VM - Jose Valim (RuPy 2012)
- Keynote - José Valim (ElixirConf 2014)
- Idioms for building fault-tolerant applications with Elixir - José Valim (YOW! Lambda Jam 2021) & Idioms for building distributed fault-tolerant applications with Elixir - José Valim (GOTO Conferences 2015)
- Keynote: "Think Different" - Dave Thomas (ElixirConf 2014)
- Ruby and Elixir - Casey Rosenthal (Portland Ruby Brigade Jan 2015)
- Hex: How it was built - Eric Meadows–Jönsson (ElixirConf 2014
- Elixir Freenode IRC
- Writing Command Line Applications with Elixir - James Smith (ElixirConf 2014)
- Elixir Code Reading: Blacksmith
- Elixir in times of microservices - José Valim
- Closures: Elixir vs. Ruby vs. JavaScript - Hubert Łępicki
- ExMachina for Elixir: Factories with a Functional Twist - Josh Steiner & Paul Smith
-
Phoenix (web server) | Phoenix/Ecto | Phoenix.HTML | Phoenix.LiveReloader | Phoenix.LiveView (stateful client-server interaction) | Phoenix.PubSub (realtime pub/sub service)
-
SortedSet (NIF) | Using Rust to Scale Elixir for 11 Million Concurrent Users - Matt Nowack
- Elixir v1.12 released - José Valim
- Changelog for Elixir 1.12
- Elixir 1.12 and Your First Mix.install Script - ThinkingElixir.com
- New Elixir 1.12 - The developer’s point of view - Bartosz Górka
- Elixir v1.11 - José Valim (ElixirConf 2020)
- Changelog for Elixir 1.11
- Elixir 1.11 Preview with Wojtek Mach (Thinking Elixir Podcast)
- Elixir v1.10 released
- Elixir Update - José Valim (Code BEAM V 2020)
- Changelog for Elixir 1.10
-
"Requires Erlang/OTP 21+, allowing Elixir to integrate with Erlang/OTP's new :logger. The logger level, logger metadata, and all log messages are now shared between Erlang and Elixir APIs."
-
Release overlays: "Often it is necessary to copy extra files to the release root after the release is assembled. This can be easily done by placing such files in the
rel/overlays
directory. Any file in there is copied as is to the release root. For example, if you have place arel/overlays/Dockerfile
file, theDockerfile
will be copied as is to the release root" -
Enum.sort (and related functions) support
:asc
and:desc
:iex> Enum.sort(["banana", "apple", "pineapple"], :asc) ["apple", "banana", "pineapple"] iex> Enum.sort(["banana", "apple", "pineapple"], :desc) ["pineapple", "banana", "apple"]
-
Enum.sort (and related functions) support semantic comparisons:
iex> Enum.sort([~D[2019-12-31], ~D[2020-01-01]], Date) [~D[2019-12-31], ~D[2020-01-01]] iex> Enum.sort([~D[2019-12-31], ~D[2020-01-01]], {:desc, Date}) [~D[2020-01-01], ~D[2019-12-31]]
-
"We will deprecate the use of
Application.get_env
at compile-time," like the following, which sets@db_host
at compile-time:defmodule MyApp.DBClient do @db_host Application.get_env(:my_app, :db_host, "db.local") def start_link() do SomeLib.DBClient.start_link(host: @db_host) end end
Which could instead set the value at runtime by putting the call to
Application.get_env/3
inside an ordinary function:defmodule MyApp.DBClient do def start_link() do SomeLib.DBClient.start_link(host: db_host()) end defp db_host() do Application.get_env(:my_app, :db_host, "db.local") end end
If you really want to set that value at compile-time, you'll need to say so explicitly with
@db_host Application.compile_env(:my_app, :db_host, "db.local")
, which you can now use -
More Calendar data type improvements
-
Timezone-related functions, like DateTime.now/2, DateTime.shift_zone/3, and NaiveDateTime.local_now/0.
-
The Code module's string_to_quoted/2 function includes new options,
:token_metadata
and:token_metadata
, for Elixir AST parsing -
The ExUnit library's CaptureIO module now works with concurrent tests
-
- Elixir v1.9 released
- Changelog for Elixir 1.9
- Releases: "A release is a self-contained directory that consists of your application code, all of its dependencies, plus the whole Erlang Virtual Machine (VM) and runtime. Once a release is assembled, it can be packaged and deployed to a target as long as the target runs on the same operating system (OS) distribution and version as the machine running the
mix release
command."- Created via
MIX_ENV=prod mix release
- Assembled in
_build/prod/rel/my_app
- Within
_build/prod/rel/my_app
,bin/my_app
is the entry point to your app bin/my_app start
,bin/my_app stop
,bin/my_app restart
start & stop the appbin/my_app rpc COMMAND
runsCOMMAND
as a remote procedure call (RPC)bin/my_app remote
connects you to the running app via an Erlang consolebin/my_app eval COMMAND
starts your app fresh, runsCOMMAND
, and then shuts everything downbin/my_app daemon
starts your app as a daemon on a Unix-like systembin/my_app daemon_iex
starts your app as a dameon on a Unix-like system within aniex
shellbin/my_app install
installs your app as a service on Windows machines
- Created via
- Release benefits:
- Releases run in embedded mode, which loads all modules at startup, rather than interactive mode, which loads a module dynamically when it is first used at runtime
- Releases are self-contained (Elixir and Erlang aren't needed on the target machine
- Releases contain only compiled code, not source code
- Tree-shaking removes unused Erlang & Elixir standard libraries
- You can deploy a release to multiple machines, each with different configurations
- Release hooks
config/config.exs
(andconfig/prod.exs
) provides build-time/compile-time application configuration, which is executed when the release is assembledconfig/releases.exs
provides runtime application configuration. It's executed every time the release boots and is further extensible via config providersrel/vm.args.eex
: Template file copied into every release and providing static configuration of the Erlang Virtual Machine and other runtime flagsrel/env.sh.eex
andrel/env.bat.eex
: Template files copied into every release and executed on every command to set up environment variables, including ones specific to the VM, and the general environment
- New Config module
- Use
import Config
, notuse Mix.Config
mix new
will no longer generate aconfig/config.exs
filemix new --umbrella
will no longer generate a configuration for each child app; all configuration should be declared in the umbrella root
- Use
- ~U sigil for creating UTC DateTime values
- New functions in the System and File modules
- Releases: "A release is a self-contained directory that consists of your application code, all of its dependencies, plus the whole Erlang Virtual Machine (VM) and runtime. Once a release is assembled, it can be packaged and deployed to a target as long as the target runs on the same operating system (OS) distribution and version as the machine running the
-
- Custom
inspect()
for structs: By default,inspect(user)
(whereuser
is a strut) will display all fields inuser
. If you want to exclude some fields, you can derive yourInspect
protocol implementation and exclude the fields you don't wish to display. For example, the following will exclude:email
and:encrypted_password
:ordefmodule User do @derive {Inspect, only: [:id, :name, :age]} defstruct [:id, :name, :age, :email, :encrypted_password] end
@derive {Inspect, except: [:email, :encrypted_password]}
If you do this, a
User
struct will be printed as#User<id: 1, name: "Jane", age: 33, ...>
- A new Calendar.TimeZoneDatabase behaviour, allowing developers to bring in their own time zone databases or use the provided Calendar.UTCOnlyTimeZoneDatabase.
- Process dictionary's
$callers
key now tracks which code spawned a task. Previously, if your code calledTask.Supervisor.start_child(MySupervisor, task_specification)
, the actual parent (recorded in$ancestors
) of the task would be the supervisor, as the supervisor is the one spawning it and the relationship between your code and the task is lost. Now, we record in$callers
that your code is the caller of the spawned task.
- Custom
- Elixir v1.7 released
- Changelog for Elixir 1.7
- Document metadata can be added to
@doc
,@moduledoc
, and@typdoc
, e.g.:@moduledoc "A brand new module" @moduledoc authors: ["Jane", "Mary"], since: "1.4.0"
- Side-effect-free way to retrieve the stacktrace. The following logs and re-raises the
__STACKTRACE__
:try do ... something that may fail ... rescue e -> log(e, __STACKTRACE__) reraise(e, __STACKTRACE__) end
- Full integration with OTP 21.0's new :logger module. See Erlang/OTP 21's new logger, Logging, and Logger Cookbook for more information
Logger.Translator
has been improved to export metadata, allowing custom Logger backends to leverage information such as::crash_reason
: two-element tuple with the throw/error/exit reason as first argument and the stacktrace as second:initial_call
: initial call that started the process:registered_name
: process registered name as an atom
- "We recommend Elixir libraries that previously hooked into Erlang's
:error_logger
to hook intoLogger
instead, in order to support all current and future Erlang/OTP versions" Logger
now evaluates its arguments if/when the message is logged (which it may not be, for various reasons):compile_time_purge_matching
removes log calls with specific compile-time metadata. For example, to remove all logger calls from application:foo
with level lower than:info
, as well as remove allLogger
calls fromBar.foo/3
, use the following configuration:config :logger, compile_time_purge_matching: [ [application: :foo, level_lower_than: :info], [module: Bar, function: "foo/3"] ]
mix test --failed
re-runs all tests that failed last time they ranmix test --cover
summarizes test coverage
- Document metadata can be added to
- Elixir v1.6 released
- José Valim- Introducing HDD: Hughes Driven Development (Lambda Days 2018)
- Changelog for Elixir 1.6
mix format
will automatically format your code. A.formatter.exs
file may be added to your project root for rudimentary formatter configuration- New DynamicSupervisor module allows starting & stopping children dynamically
@since
indicates the API version into which the function or macro was first added, and@deprecated
marks the function/macro as deprecated:@doc "Breaks a collection into chunks" @since "1.0.0" @deprecated "Use chunk_every/2 instead" def chunk(collection, chunk_size) do chunk_every(collection, chunk_size) end
mix xref
now warns when your code calls code marked@deprecated
defguard
anddefguardp
for naming your guard clauses, e.g.:defguard is_drinking_age(age) when age >= 21 def serve_drinks(%User{age: age}) when is_drinking_age(age) do # Code that serves drinks! end
- In
iex
, typingt Enum.
and hitting<Tab>
will autocomplete only the types in Enum - In
iex
, typingb GenServer.
and hitting<Tab>
will autocomplete only the behaviour callbacks - In
iex
, breakpoints can now use pattern matching and guard clauses, e.g.:break! SomeFunction.call(:foo, _, _)
- To find all callers of a given module or function in an umbrella:
mix xref callers SomeModule --include-siblings
mix xref
:- Output general statistics about the dependency graph:
mix xref graph --format stats
- Get all files that depend on
lib/foo.ex
:mix xref graph --sink lib/foo.ex --only-nodes
- Get all files that depend on
lib/foo.ex
at compile time:mix xref graph --label compile --sink lib/foo.ex --only-nodes
- Get all files
lib/foo.ex
depends on:mix xref graph --source lib/foo.ex --only-nodes
- Limit statistics to compile-time dependencies:
mix xref graph --format stats --label compile
- Output general statistics about the dependency graph:
mix test --slowest N
lists your slowestN
tests- New
mix profile.eprof
task provides time-based profiling, complementing the existingmix profile.cprof
(count-based) andmix profile.fprof
(flame-based)
- Elixir v1.5 released
- The Feature That No One Knew About in Elixir 1.5 - José Valim (Elixir.LDN 2017)
- Changelog for Elixir 1.5
- Non-quoted atoms can include UTF-8 characters, like
:こんにちは世界
(see: Unicode Syntax) - Non-quoted variables can include UTF-8 characters, like
saudação = "Bom dia!"
.josé
,_age
,まつもと
,_42
, andадрес
are all valid variable names iex
improvements:iex
autocompleteexports/1
lists all exports (functions and macros) in a given moduleopen/1
opens the source of a module or function directly in your editor. For example,open MyApp.Module
runtime_info/0
prints general information about the running system, such as number of cores, runtime version, allocation of memory in the VM and more
IEx
breakpoint system for code debugging has these new functions:break!/2
sets a breakpoint for a given Mod.fun/aritybreak!/4
sets a breakpoint for the given module, function, aritybreaks/0
prints all breakpoints and their IDscontinue/0
continues until the next breakpoint in the same processopen/0
opens editor on the current breakpointremove_breaks/0
removes all breakpoints in all modulesremove_breaks/1
removes all breakpoints in a given modulereset_break/1
sets the number of stops on the given ID to zeroreset_break/3
sets the number of stops on the given module, function, arity to zerorespawn/0
starts a new shell (breakpoints will ask for permission once more)whereami/1
shows the current location
blame/3
in the Exception module- Streamlined supervised child specs
- Agent, Registry, Task, and Task.Supervisor have been updated to include a
child_spec/1
function, allowing them to be used directly in a supervision tree. See description in Supervisor module - New
@impl
attribute, which indicates that the function implements a callback, an assertion the compiler checks:defmodule MyApp do @behaviour Plug @impl true def init(_opts) do opts end @impl true def call(conn, _opts) do Plug.Conn.send_resp(conn, 200, "hello world") end end
@impl true
could also specify which behaviour defines the callback, e.g.,@impl Plug
- More Calendar functions
- Non-quoted atoms can include UTF-8 characters, like
- Elixir v1.4 released
- Using the Registry in Elixir 1.4 - Adam Mokan
- Changelog for Elixir 1.4
- New Registry module is a local (single-node), decentralized and scalable key-value process storage
iex> Registry.start_link(:unique, MyRegistry) iex> {:ok, _} = Registry.register(MyRegistry, "hello", 1) iex> Registry.lookup(MyRegistry, "hello") [{self(), 1}]
- Registry can be used to register and access named processes using the
{:via, Registry, {registry, key}}
tuple{:ok, _} = Registry.start_link(keys: :unique, name: Registry.ViaTest) name = {:via, Registry, {Registry.ViaTest, "agent", :hello}} {:ok, _} = Agent.start_link(fn -> 0 end, name: name) Registry.lookup(Registry.ViaTest, "agent") #=> [{self(), :hello}]
- More Calendar functions
- Task module now includes
Task.async_stream
, which allows lazy steam processing with configurablemax_concurrency
. Replace:withcollection |> Enum.map(&Task.async(SomeMod, :function, [&1])) |> Enum.map(&Task.await/1)
collection |> Task.async_stream(SomeMod, :function, [], max_concurrency: System.schedulers_online)
- Task.Supervisor includes
async_stream/4
andasync_stream/6
, which can ensure concurrent tasks are spawned under a given supervisor. mix.exs
no longer requires listing all project dependencies under:applications
but infers these dependencies, except for apps that are part of Elixir or Erlang, which should now be specified under:extra_applications
. E.g., instead of:onlydef application do [applications: [:logger, :plug, :postgrex]] end
:logger
(because it's built into the language) must be listed:def application do [extra_applications: [:logger]] end
- App dependencies that should not be required by your running app can be listed with
runtime: false
, e.g.{:distillery, "> 0.0.0", runtime: false}
- Distribute CLI apps written in Elixir as escripts published to Hex. For example, anyone can install
hex_docs
from Hex by runningmix escript.install hex ex_doc
. After adding~/.mix/escripts
to your PATH, runningex_doc
is as simple as runningex_doc
.
- New Registry module is a local (single-node), decentralized and scalable key-value process storage
- Changelog for Elixir 1.3
- Warning if constructs like if, case and friends assign to a variable that is accessed in an outer scope
- New modules: Calendar, Date, Time, NaiveDateTime, and DateTime
- Date sigil:
~D[2016-05-29]
- Time sigil:
~T[08:00:00]
and~T[08:00:00.285]
- NaiveDateTime sigil:
~N[2016-05-29 08:00:00]
- New Access module accessors, like
update_in/3
:iex> user = %{name: "john", ...> languages: [%{name: "elixir", type: :functional}, ...> %{name: "c", type: :procedural}]} iex> update_in user, [:languages, Access.all(), :name], &String.upcase/1 %{name: "john", languages: [%{name: "ELIXIR", type: :functional}, %{name: "C", type: :procedural}]}
mix xref
to perform cross-reference checks on your codemix xref unreachable
would noticeThisModuleDoesNotExist.foo(1, 2, 3)
mix xref callers Foo
finds all places in your code that a function from the moduleFoo
is called
mix app.tree
lists all applications your current project must start to bootmix deps.tree
lists all your current project's direct dependencies and recursive dependenciesmix escript.install
(andmix escript.uninstall
) lets you install escripts at~/.mix/escripts
(which must be added to your PATH environment variable)mix test --stale
will run only tests whose results could have changed since you last ranmix test --stale
- In ExUnit,
assert left == right
now displays diffed output on test failure - ExUnit allows libraries like QuickCheck to register new test types
- ExUnit allows grouping tests into a (non-nested)
describe
block and run only a specific describe block (withmix test --only describe:"String.capitalize/2"
) - ExUnit
describe
blocks aren't nested because "we want developers to build on top of named setups. For example:"defmodule UserManagementTest do use ExUnit.Case, async: true describe "when user is logged in and is an admin" do setup [:log_user_in, :set_type_to_admin] test ... end describe "when user is logged in and is a manager" do setup [:log_user_in, :set_type_to_manager] test ... end defp log_user_in(context) do # ... end end
- Elixir v1.2 released
- Erlang 18 support
- Improvements to Map & MapSet. Stop using Dict, DictHash, Set, and SetHash
- Multi-aliases/imports/require:
alias MyApp.{Foo, Bar, Baz}
- Variables in Map keys:
%{key => value}
- Pin operator in map keys:
%{^key => value} = %{key => value}
- Pin operator in function clauses:
fn ^key -> :ok end
with
special form to match on multiple expressions:with {:ok, contents} <- File.read("my_file.ex"), {res, binding} <- Code.eval_string(contents), do: {:ok, res}
i/1
helper in IEx, which allows developers to retrieve information about any data type- Umbrella applications can share both build and configuration files, drastically reducing compilation times
build_path: "../../_build", config_path: "../../config/config.exs",
- Mix is now able to fetch and compile Rebar 3 dependencies
- Changelog for Elixir 1.2
- Elixir 1.2 and Elixir in Action
- Elixir in Public Transit 3 case studies from Boston's MBTA (Erlang Solutions webinar)
- Eight Famous Companies Using Elixir-And Why They Made the Switch - Monterail: Cites "Pinterest: half the servers, 10 times less code," "Moz: 63 times less disk space, 20 times faster API," "Lonely Planet: better performance, scalable content," etc.
- Bleacher Report has gone from needing 150 servers to just five, thanks to its decision to move from Ruby on Rails monolith to Elixir Phoenix
- What companies and start-ups depend on Elixir in production? - Code Elixir LDN
- Real time communication at scale with Elixir at Discord - José Valim
- PaaS with Elixir at Heroku - José Valim
- Elixir Lang Pros and Cons for Software Development - Tim Gremore (Startup Week 2020)
- Elixir at fintech with Brex - José Valim
- Embedded Elixir at Farmbot - José Valim
- How Cisco is using Erlang for intent-based networking - Johan Bevemyr (Code BEAM STO 2018) (slide says "90% of all Internet traffic goes through Erlang controlled nodes" & "Cisco is shipping about 2M devices per year with Erlang in them")
- Erlang celebrates 20 years as open source - Ericsson.com
- Successful Companies Use Erlang and Elixir - Code Sync
- Why WhatsApp Only Needs 50 Engineers for Its 900M Users - Cade Metz, "Wired," September 2015 | Scaling Erlang cluster to 10,000 nodes - Maxim Federov (Code Mesh LDN 18) | How WhatsApp moved 1.5B users across data centers - Igor Istocniks (Code BEAM SF 19)
- Using Rust to Scale Elixir for 11 Million Concurrent Users (at Discord) - Matt Nowack
- Riot Messaging Service
- Algae: Bootstrapped algebraic data types
- Witchcraft: library providing common algebraic & categorical abstractions (monoids, functors, monads, arrows, & categories)
- Keynote: Brooklyn Zelenka - EMPEX NYC 2018
- Bridging the Divide A Philosophy of Library Design - Brooklyn Zalenka (Lambda Days 2019)
- Witchcraft: Monads for the Working Alchemist - Brooklyn Zalenka (Elixir.LDN 2017)
- pow: Robust, modular, and extendable user authentication system - Dan Schultzer: PowAuth.com | Github
- Easy Authentication in Elixir & Phoenix with the pow & pow_assent libraries - KnowThen.com
- phx_gen_auth (semi-official Phoenix authentication solution) - Aaron Renner
- Programmer Passport: Phoenix LiveView - Bonus Video - phx.gen.auth - Bruce Tate
- Avia: E-Commerce re-invented in Elixir: AviaCommerce.org | Github | API | Getting Started | Main Concepts
- Abul Asar
- App Signal
- Carbon Five
- Curiosum
- DennisBeatty.com
- DevonEstes.com
- Dev.to: Elixir | Erlang | Livebook | LiveView | Phoenix
- Dockyard
- East 5th
- Elixir Alchemy (AppSignal)
- ElixirCasts.io
- Elixir Digest
- Elixir Dose
- Elixir Radar
- ElixirStatus.com
- ElixirStreams.com - German Velasco
- Elixir Weekly
- The Erlang eList
- E-xyza Youtube channel (Isaac Yonemoto)
- Fly.io Blog | Fly.io Phoenix Files
- Hacklines
- Hashrocket: TIL & blog
- Iacobson.net
- Kamil Skowron (Youtube)
- Plataformatec
- Samuel Mullen
- The Pug Automatic - Henrik Nyh
- Ramp
- Red Shift
- Thoughtbot
- Tyler Pachal
- What Did I Learn - Vitaly Tatarintsev
- Elixir Documentation (PDF)
- Elixir Getting Started Guide: EPUB | Online
- Elixir Meta-Programming Guide (EPUB)
- The Mix & OTP Guide: (EPUB) | Online
- Études for Elixir & Github
- Cachex: in-memory key/value store for Elixir with support for transactions, fallbacks and expirations | Docs
- Nebulex: fast, flexible and powerful distributed caching framework - Carlos Andres Bolaños R.A.: Github & Distributed Caching in Elixir using Nebulex
- ContEx: Github | Contex-Charts.org | HexDocs
- Real-Time SVG Charts with Contex and LiveView - Sophie DeBenedetto
- RDF.ex - Marcel Otto | Docs (Hexdocs) | RDF on Elixir website | Docs (RDF-Elixir.dev)
- JSON-LD - Marcel Otto
- Xandra: Fast, simple, and robust Cassandra driver for Elixir
- Triton: Cassandra ORM for Elixir
- Ecto-Cassandra
- Elixir-Cassandra
- erlcass: Erlang Cassandra driver, based on DataStax cpp driver focused on performance, based on the DataStax C/C++ Driver for Apache Cassandra | Docs
- cqerl: Native Erlang CQL client for Cassandra | Docs | cqex (Elixir wrapper)
- marina: High-performance Erlang Cassandra CQL client
- Req: Req: Batteries-included HTTP client for Elixir - Wojtek Mach
- Finch: Github | Hexdocs.pm | The State of Elixir HTTP Clients - Alex Koutmos (Jul 2020)
- Mint: Functional HTTP client for Elixir with support for HTTP/1 and HTTP/2
- Mojito: easy-to-use Elixir HTTP client, built on the low-level Mint library - Appcues.com
- httpoison: Github
- Tesla: Github
- Tesla: flexible HTTP client library for Elixir, with support for middleware and multiple adapters
- Working with HTTP/2 in Elixir - Peter Saxton (Elixir.LDN 2017)
- ExVenture: text-based MMO server written in Elixir - Eric Oestrich
- tanx: Tank game created by the Programming Elixir study group
- Git Gud: Github clone written in Elixir - Almighty Couch
- Simulations: James Edward Gray II
- a-little-elixir-goes-a-long-way (Elixir version of code examples from The Little Schemer)
- Rebuilding the Mission Impossible security system in Elixir on RaspberryPi - Ju Liu
- Elixir Deep Dive: Evercam, a 10K LOC Phoenix app - Derek Haynes
- How to Get Your Elixir Application Ready for CI/CD - Alex Koutmos
- Build the Ultimate Elixir CI with Github Actions - Dorian Karter
- Continuous integration and deployment is the heartbeat of a software development team. That’s why we’ve invested in powerful tooling that goes way beyond the basics - Tyler Young
- Modular Design in Elixir - Maciej Kaszubowski (ElixirConf EU 2019)
- Enforcing code quality in Elixir - Leandro Cesquini Pereira
- SOLID Elixir - Georgina McFadyen (ElixirConf.EU 2018)
- Keeping Code Consistent - Ben Marx (ElixirConf EU 2017)
- Refactoring Elixir: Lessons Learned from a Year on Exercism.io
- Just Delete It - Johnny Winn (Code BEAM STO 19)
- Boundary: Library that helps manage and restrain cross-module dependencies: Github
- Broadway: Concurrent and multi-stage data ingestion and data processing with Elixir: Github
- The Road to Broadway - José Valim (Lonestar ElixirConf 2019)
- Broadway + Sqs + Apache Tika - Dave Lee (ElixirConf EU 2019)
- High throughput data processing with GenStage - Ian Butler (Code BEAM America 2022)
- ElixirConf 2016 Keynote - José Valim
- Robust Data Processing Pipeline with Elixir and Flow - Laszlo Bacsi (ElixirConf EU 2018)
- Elixir Flow - Renato Freire (Montreal Elixir)
- Lessons From Our First Trillion Messages with Flow - John Mertens (EMPEX LA 2019) & ElixirConf EU 2019
- Sending Millions of HTTP Requests Using GenStage - Damir Gainetdinov
- Elixir/Flow — Local MapReduce - Mat Clutter
- GenStage: Keeping large amounts of data up-to-date with pipelines - Robert Beene (EMPEX 2018
- Small data with Elixir - José Valim
- Understanding Elixir’s GenStages: Querying the Blockchain - Miguel Palhas
- GenStage and Flow - José Valim (Lambda Days 2017)
- Announcing GenStage - José Valim
- Background Processing in Elixir with GenStage - Nitin Misra
- GenStage in the Kitchen - Claudio Ortolina (Elixir.LDN 2016)
- GenStage - José Valim (Elixir London June 2016))
- How Do I GenStage? - Adrian Dunston
- Reactive Tweets with Elixir GenStage - Mario Flach
- Erlang Fundamentals for Debugging Elixir - Lorena Mireles (EMPEX NYC 2023)
- Unpacking Elixir: Observability - Lars Wikman
- Debugging Elixir Code: The Tools, The Mindset - Michal Buszkiewicz (ElixirConf EU 2021)
- Love Your Crash Dumps - Michał Ślaski (ElixirConf EU 2021)
- Three Ways to Debug Code in Elixir - Pulkit Goyal
- How to Use IEx.pry in Elixir Tests - Adam Delong
- Debugging Live Systems on the BEAM - Jeffery Utter (ElixirConf 2020)
- dbg/ttb: The Erlang text based tracer and trace tool builder - Mazen Harake
- Debugging & Tracing Elixir Applications - Dimitris Zorbas
- dbg
- Rexbug - Jacek Królikowski | Redbug - Mats Cronqvist
- Tracer - Gabi Zuniga
- Debugging - Elixir-lang.org
- Debugging techniques in Elixir - Erich Kist
- Rexbug: thin Elixir wrapper for the redbug Erlang tracing debugger | Docs
- Credo: Website | Github | Credo: A static code analysis tool for the Elixir language with a focus on code consistency and teaching - René Föhring | Credo: Your Team's Robot Mentor - René Föhring (CodeBEAM Lite Amsterdam 2019)
- Elixir Bug Hunting! - José Valim
- Orion: Distributed Dynamic Profiling for the BEAM (Thomas Depierre): Github
- Orion for Distributed Tracing in Production - Thinking Elixir Podcast
- Overlays: Copy extra files to release root after release assembly
- From Zero to Elixir Deployment - Philipp Schmieder (ElixirConf EU 2019)
- Quick Glance @ Elixir 1.9 Releases feature - Blackode
- A GitHub workflow for Elixir releases - Richard Taylor
- Paul Schoenfelder ("bitwalker"): Elixir on Alpine Linux ((Docker)[https://hub.docker.com/r/bitwalker/alpine-elixir/]) | Elixir/Phoenix on Alpine Linux (Docker)
- Connecting Elixir Nodes with libcluster, locally and on Kubernetes - Alvise Susmel & phoenix-chat-example (Github)
- Best practices for deploying Elixir apps - Jake Morrison
- How To Automate Elixir-Phoenix Deployment with Distillery and edeliver on Ubuntu 16.04 - DigitalOcean
- Elixir, Kubernetes, and Minikube - Miguel Cobá (Elixir Meetup - Curiosum)
- k8s: Kubernetes library & HTTP client in Elixir
- Guide to deploy an Elixir/Phoenix app to AWS ECS - Joaquim Adráz
- How to Run Your Phoenix Application with Docker - Nicolas Dular
- Building and configuring a Phoenix app with Umbrella for releasing with Docker - Fernando Briano
- A Complete Guide to Deploying Elixir & Phoenix Applications on Kubernetes - Rohan Relan: Part 1: Setting up Distillery | Part 2: Docker and Minikube | Part 3: Deploying to Kubernetes | Part 4: Secret Management | Part 5: Clustering Elixir & Phoenix Channels
- Clustering Elixir/Erlang applications in Kubernetes (part 1: the theory) - Dario Freddi
- Clustering Elixir Nodes on Kubernetes - André Cruz
- Docker Elixir Build Image Base - Financial Times
- Release, Deploy, Monitor and Upgrade Elixir Services in Real World - Tian Chen (Code BEAM SF 2018)
- Packaging for Production - Anthony Molinaro (Code BEAM SF 2018)
- How to configure and deploy an Elixir app to a VPS - Konrad Piekutowski
- Deploy Early and Often: Deploying Phoenix with Edeliver and Distillery - Zek Interactive: Part 1 & Part 2
- State of the art in deploying Elixir / Phoenix applications - Piotr Włodarek
- Deployment - ElixirForum.com
- Elixir in the times of microservices - José Valim
- Elixir Deployment Tools - General Discussion, Blog Posts, Wiki - ElixirForum.com
- Elixir App Releasing Model - Sebastian Gębski (ElixirLive 2016)
- Is Phoenix deployment really that hard? - Karol Słuszniak
- Understanding deps and applications in your Mixfile - João Britto
- conform: source
- Deferred_config: Seamless runtime config for otp apps with one line of code - Luc Fueston
- Peerage: Easy Elixir clusters, pluggable discovery. DNS-based (Kubernetes, Weave), UDP multicast, others - Luc Fueston
- Fast Continuous Deployment of an Elixir Gameserver - Martin Kavalar & Martin Schurrer
- Elixir deployments on AWS - Ed Ellson
- Elixir on AWS Lambda - ElixirForum.com
- Deploying Elixir to AWS Elastic Beanstalk with Docker - James Robert Somers
- Easy Elixir auto scaling deployment with AWS and Travis CI - Nicklas Ramhöj
- Deploy Elixir Application To AWS Elastic Beanstalk - Michal Kalbarczyk
- How to Set up a Distributed Elixir Cluster on Amazon EC2 - Benjamin Tan Wei Hao
- Swarm - Paul Schoenfelder
- Effortless Scaling With Automatic Clusters - Exploring Elixir & Tenant Migrations, Cluster Security, Git Repo
- Erlang (and Elixir) distribution without epmd - Magnus Henoch
- Remote Elixir/Erlang Node connected to Kubernetes - Gonzalo Gabriel Jiménez Fuentes
- Clustering Elixir/Erlang applications in Kubernetes (part 1: the theory) - Dario Freddi
- Running distributed Erlang & Elixir applications on Docker - Oleg Tarasenko
- Libcluster - Paul Schoenfelder: Github | Docs
- Multi-node Communication & Strategies - Mika Kalathil (Elixir Meetup - Curiosum)
- How Elixir Releases and Clustering Lowers Complexity - Austin Hammer (ElixirConf 2020)
- ExCluster: Clustered Elixir OTP application on Kubernetes with Horde and LibCluster - Dollar Shave Club
- Elixir OTP applications on Kubernetes - Chirag Singh Toor
- Connecting Elixir Nodes with libcluster, locally and on Kubernetes - Alvise Susmel
- Going Multi Node - Eric Oestrich (ElixirConf 2018)
- Cluster.Strategy.Kubernetes
- ClusterConsul.Strategy
- What’s going on in libcluster? (Elixir library overview) - Joseph Rosztoczy
- Elixir and Kubernetes - Bo Ingram: Introducing Aristochat | Starting Kubernetes | Deploying Aristochat
- Config | Config.Provider | Config.Reader
- Tips for Improving Your Elixir Configuration - Jason Axelson
- Confex - helper to read and use application configuration from environment variables - Nebo #15: Github
- Vapor - Runtime configuration system for Elixir - Chris Keathley: Github | Configuring your Elixir Application at Runtime with Vapor - Devon Estes
- Skogsrå - Library to manage OS environment variables and application configuration options with ease - GMT Prime Corp: Github | Article | Docs
- Configuration Demystified - Sean Callan
- Bakeware: Compile Elixir apps into single, easily distributed executable binaries | Examples
- Compile Elixir applications into single executable binaries, with Bakeware - Alvise Susmel
- Burrito: Cross-Platform Elixir Deployments
- Burrito Wrap Your App in a BEAM Burrito! - Digit (EMPEX MTN 2022)
- Distributing Elixir applications with Burrito - Juan Pablo
- Elixir in a Burrito with Quinn and Digit - Thinking Elixir Podcast
- Distillery: Github | Documentation
- Elixir Deployments - 2019-05-20 - Eric Oestrich (Live Coding Grapevine) & Grapevine code
- Elixir: Runtime vs. compile time configuration - Hubert Łępicki
- Be Careful When Using Elixir’s Module Attributes - Chad Jablonski
- How to perform Hot Code Swapping in Elixir - Blackode: #1 | #2 — A (Live Demo) GenServer State update
- Elixir/Phoenix deployments using Distillery - Yuva
- Pete Corey: Deploying Elixir Applications With Distillery | Upgrade Releases With Distillery | Simplifying Elixir Releases With eDeliver | Upgrade Releases With eDeliver
- Storing Elixir Release Configuration in Environment Variables with Distillery - Brendan A R Sechter
- Miguel Cobá: Deploying a Phoenix 1.6 app with Docker and Elixir Releases | On DigitalOcean | On Fly.io | On Render.com | On Gigalixir | All-in-one free (!) ebook
- Docker and OTP Friends or Foes - Daniel Azuma (ElixirConf 2018) & talk notes & Tanx game + GKE deployment instructions
- Elixir Releases & Docker - The Basics Explained - Philipp
- How to use Elixir with Docker? - Kamil Lelonek
- Bottling Elixir with Docker - Part 1 - Paul Lamb
- Dockerizing Elixir and Phoenix Applications - Cody Boggs
- Edeliver: Github | Deploying Elixir applications with Edeliver - Igor Florian
- Bruce Pomeroy: Create an Elixir umbrella project containing a Phoenix app and build a release with Distillery & Deploying an Elixir Umbrella project using Distillery and Edeliver
- Real World Elixir Deployment - Pete Gamache (Empire City Elixir Conf 2016)
- Fast Continuous Deployment of an Elixir Gameserver - Martin Kavalar and Martin Schurrer
- Serving Phoenix and Continuous Deployment - Dustin Farris
- Getting Elixir / Phoenix running on Digital Ocean with edeliver - Matt Weldon
- Getting Elixir / Phoenix running on Digital Ocean with edeliver - davoclavo
- Executable Elixir: Working with Escripts - Sophie DeBenedetto
- The Command Line with Escript - Elixir Casts
mix escript.build
documentation
- exrm: source | docs | package docs (hexdocs.pm)
- Deploying Phoenix Applications with Exrm [and Conform] - Brandon Richey
- How to config environment variables with Elixir and Exrm - Igor Florian
- Deploying a Phoenix App With Gatling - Josh Adams
- Deploying Phoenix on Ubuntu with Gatling - Dennis Reimann
- setup-elixir - Set up your GitHub Actions workflow with OTP and Elixir - Erlang Ecosystem Foundation
- handle_continue/2 & init/1's {:continue, term()}
- TIL GenServer’s handle_continue/2 - Sophie DeBenedetto
- Intro to handle_continue in Elixir (and when to use it) - Tyler Pachal
- BEAM and Kubernetes: Better together? - Cory O'Daniel (Code BEAM SF 20)
- Deploying Phoenix to Kubernetes From Scratch - Dan Quan
- Kubernetes and the Erlang VM: orchestration on the large and the small - José Valim
- Application.start_phase/3: called after start/2 finishes but before Application.start/2 returns
- Change my mind: Migrations in a start phase - Overbyrd (Lukas Rieder)
- Elixir-Desktop: Elixir library to write Windows, macOS, Linux, Android apps with OTP24 & Phoenix.LiveView - | Docs
- Convert Your Web App to a Desktop App With Elixir Desktop - Dominic Letz (CodeBEAM 2021)
- Distributed War Stories - Miriam Pena (EMPEX LA 2019)
- Making the impossible possible: Building distributed systems worthy of our trust - Heidi Howard (EMPEX NYC 2023) & CCF.dev - Confidential Consortium Framework & Jepsen.io - Distributed Systems Safety Research
- Horde is a distributed process registry and supervisor built on δ-CRDTs - Derek Kraan | API Docs | Introducing Horde | Getting Started | Docker & OTP: Friends or Foes - Daniel Azuma (ElixirConf 2018)
- Idioms for Building Distributed Fault–Tolerant Applications with Elixir - José Valim (YOW! 2021) & EuRuKo 2016
- Ab(b)racadabra: URL-shortening service as an experiment in distributed Elixir
- Why time is evil in distributed systems - Peter Van Roy (Code BEAM STO 19)
- Always Available - Claudio Ortolina (ElixirConf EU 2017)
- Elixir and Money - Tomasz Kowal (ElixirConf EU 2017)
- Think in Erlang! - Viktória Fördős (Code BEAM STO 19)
- pg2 and You: Getting Distributed with Elixir - Eric Entin (ElixirConf 2016) | Slides
- Raft implementation in Elixir - Matthew Alan Le Brun
- Graft: General Purpose Raft Consensus in Elixir - Matthew Alan Le Brun, et al.
- Ra: Raft implementation for Erlang and Elixir that strives to be efficient and make it easier to use multiple Raft clusters in a single system - RabbitMQ (Github)
- Make a distributed toolbox with Ra - Karl Nilsson (CodeBEAM STO 2019) | Code Sync page with downloadable slides
- Ra: a Raft implementation - Karl Nilsson (CodeBEAM Lite Berlin 18) | Code Sync page with downloadable slides
- Raft in RabbitMQ - Daniil Fedotov, 2017
- Partisan: High-Performance Distributed Erlang: Partisan.cloud | Github
- Pogo: Distributed supervisor for clustered Elixir applications (Github)
- Pogo - distributed supervisor for Elixir - Michał Szajbe
- Ecto: documentation | Github | discussion forum
- Ecto: An Introduction to Elixir's Database Toolkit - Gints Dreimanis
- The Little Ecto Cookbook - Dashbit (free download from the wonderful people at Dashbit.co who shared Elixir with the world)
- Using Ecto outside of Phoenix by Geoffrey Lessel (Lonestar ElixirConf 2017) & An Intro to Ecto: Using Ecto in Non-Phoenix Elixir Projects - Geoffrey Lessel (Full Stack Talks Aug 2016)
- The Complete Guide to Full-Text Search With Postgres and Ecto - Peter Ullrich
- Ecto: Database library for Elixir - Eric Meadows Jöhnson (Code Beam STO 2018)
- Diving into Ecto.Query - Willian Frantz (ElixirConf EU 2021)
- Embrace the Database With Ecto - Josh Branchaud (ElixirDaze 2017)
- Thinking in Ecto - Peter de Croos: Part 1: Schemas and Changesets | Part 2: Queries and Relations
- Ecto 2.1 Tip and Tricks - (Elixir Sydney)
- Ecto Without a Database - Greg Vaughn (Lonestar ElixirConf 2019)
- Things You Might Not Have Tried With Ecto - Luke Imhoff (Lonestar ElixirConf 2019)
- Doing Weird Things With Ecto - Nikola Begedin (ElixirConf EU 2021
- Leveling Up With Ecto - Darin Wilson (ElixirConf 2016) | code
- Database Locking with Ecto in Elixir - Avi Turkewitz
- Automatic and manual Ecto migrations - Wojtek Mach
- Lew Parker: Diving into Ecto - 1 | Diving into Ecto - 2 | Ecto Query Library
- Understanding Elixir’s Ecto Querying DSL - Thomas Punt: The Basics | Beyond the Basics
- Up, Down, Up with Ecto Migrations - Josh Branchaud
- Ecto Migrations: Simple to Complex - Josh Branchaud
- Maintaining a versioned database schema with Ecto - Prakash
- Fast Full-text Search with Ecto and PostgreSQL - Nathan Long
- Refactoring Techniques for Elixir, Ecto, and Phoenix - Gary Rennie (ElixirConf 2016)
- Connecting to Multiple Databases with Ecto - Geoffrey Lessel
- Ecto’s insert_all and schemaless queries - José Valim
- Abandoning models and embracing data - exploring Ecto - Michal Muskala (Elixir Warsaw)
- Ecto: A language integrated query for Elixir - José Valim (CodeMesh London 2013)
- Ecto - the Past, the Present, the Future - Michał Muskała (ElixirConfEU 2016 | slides
- Ecto - Eric Meadows-Jönsson (ElixirConf EU 2015)
- Making Sense of Ecto 2 SQL.Sandbox and Connection Ownership Modes - Piotr Włodarek
- PostgreSQL indexing with Ecto - Richard Nyström
- PostgreSQL full-text search using Ecto - Alexey Kuznetsov
- Embedding Elixir Structs in Ecto Models - Josh Steiner
- Changelog
- Caching In Ecto v3.0 - Dockyard
- A sneak peek at Ecto 3.0 - José Valim: Breaking changes | Query improvements (part 1) | Query improvements (part 2) | Performance, migrations and more
- Understanding Associations in Elixir's Ecto - Andrew Scorpil (Nov 2020)
- Ecto Associations in Phoenix LiveView: One to Many - Dennis Beatty
- Preloading Nested Associations with Ecto - Greg Lazarev
- Association Defaults in Ecto - Slab
- Better Data Access with Composable Queries - Andrew Ek (Code BEAM America 2022)
- Composable Queries with Ecto - Drew Olson (ElixirConf 2015)
- Exploring Options for Storing Custom Data in Ecto - Mark Ericksen
- Creating a Custom Ecto Duration Type - Christian Di Lorenzo
- What is the difference between Ecto.Type’s cast and dump? - ElixirForum.com
- Ecto type for IPv4 and IPv6 addresses - Pedro Assumpcao
- Ecto Embedded Schemas - Rémi Prévost (Montreal Elixir 2015)
- Querying an Embedded Map in PostgreSQL with Ecto - David Bernheisel
- Ecto Embedded Schemas — Quick search through a JSONB array in PostgreSQL - Pedro Costa
- What is Ecto.Multi? - Crystal Chang
- Ecto.Multi: Composable transactions - Eduardo Gurgel
- Transactions, Multi and Queries with Ecto - elx pro
- Replace Callbacks with Ecto.Multi - Daniel Berkompas
- Scaling Ecto and Postgres - Tyler Hawkins (ElixirConf 2021)
- Repel OAuth refresh token replay attacks with Elixir and Ecto - Mihai Potra - also covers CTEs (Common Table Expressions)
- I can do all things through Postgresql: Lessons for the Elixir dev - Todd Resudek (ElixirConf 2021)
- Loading a structure.sql file on Prod without mix - Mark Ericksen
- Developing after mix ecto.dump - Mark Ericksen
- Announcing a new MySQL driver: MyXQL - José Valim
- Writing an Ecto Adapter: Introducing MyXQL - Wojtek Mach (ElixirConf 2019)
- "Building a New MySQL Adapter for Ecto" - Wojtek Mach: Part 1: Hello World | Part 2: Encoding/Decoding | Part 3: DBConnection Integration | Part 4: Ecto Integration
- Ecto.Repo.stream/2
- How to use Ecto's Repo.stream/1 to process large amounts of data - Maciej Kaszubowski
- Elixir and Ecto with SQLite3 - Juan Pablo & SQLite3 - Jason Stiebs
- Encrypted SQLite With Ecto - Connor Rigby
- elasticsearch-elixir - Daniel Berkompas & Integrate Elixir with Elastisearch - Part 1 - Indexing - Silviu Rosu
- elastix: Simple Elasticsearch REST client - El Werbitzky
- Tirexs - Elixir DSL for Elasticsearch
- erlastic_search (Erlang client for Elasticsearch)
- Elasticsearch from Elixir and Docker - Zohaib Rauf
- Using tuple-wrapping to improve
with
expressions in Elixir - Tyler Pachal - Error-free Elixir - Maciej Kaszubowski (Code Elixir LDN 19)
- Error Handling in Elixir Libraries - Michal Muskala
- Exceptional: Staying on the Happy Path - Brooklyn Zalenka (The Big Elixir 2018)
- BoomNotifier: Exception notification for plug based applications - Wyeworks
- Caching with Elixir and ETS - Elvio
- Taming :ets - Mike Binns (Lonestar Elixir 2020)
- Etso: ETS adapter, allowing you to use Ecto schemas with ETS tables - Evadne Wu
- Eternal: monitor an ETS table to ensure that it never dies
- ETS Versus ElasticSearch for Queryable Caching - David Schainker (ElixirConf 2019)
- Leveraging ETS Effectively - Evadne Wu (ElixirConf EU 2019)
- Taming :ets for High-Performance Software - Mike Binns | ets (Github) | ets (Hex.pm)
- An Introduction to ETS Tables in Elixir - Ilya Bodrov
- Optimizing Your Elixir and Phoenix projects with ETS - Chris McCord
- Tracking Down an ETS-related Memory Leak - Tyler Pachal
- Awesome Elixir and CQRS
- Event Sourcing with Elixir - Peter Ullrich (ElixirConf EU Virtual 2020)
- FAQ on DDD, CQRS & Event Sourcing - CQRS.nu
- CQRS and Event Sourcing - Bernardo Amorim (Code Beam SF 2018)
- Domain-Driven Design With Elixir - Japa Swadia (ElixirConf 2020)
- Event Sourcing With Elixir - Bruno Antunes: Part 0 Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7
- Event Sourcing with Elixir - Peter Ullrich (ElixirConf EU Virtual 2020)
- Brook: Distributed Event-based Orchestration in Elixir - Jeff Grunewald (Lonestar Elixir 2020) | Brook
- event_bus: Traceable, extendable and minimalist event bus implementation for Elixir with built-in event store and event watcher based on ETS - Mustafa Turan & event_bus_postgres: Postgres event store for event_bus
- Pachyderm - an elephant never forgets - Peter Saxton
- Elixir + CQRS - Architecting for Availability, Operability, and... - Jon Grieman (ElixirConf 2019)
- Event Sourcing in Real World Applications: Challenges, Successes, and Lessons Learned - James Smith (ElixirConf 2018)
- Derek Kraan: Event Sourcing in Elixir & Event Sourcing: Invariants spanning multiple aggregates
- CQRS with Elixir and Phoenix - Jean-François Cloutier
- Building beautiful systems with Phoenix contexts - Andrew Hao (ElixirDaze 2018) & Built to last: A domain-driven approach to beautiful systems - Andrew Hao
- Perhap: Applying Domain Driven Design and Reactive... - Rob Martin (ElixirConf 2017)
- Event Sourcing and CQRS in Elixir - ElixirForum.com
- Christian Posta: Why Microservices Should Be Event Driven: Autonomy vs Authority | 3 Easy Things to Do to Make Your Microservices More Resilient | Carving the Java EE Monolith Into Microservices: Prefer Verticals Not Layers | The Hardest Part About Microservices: Your Data
- DDD/CQRS/ES/NoSQL and functional programming
- CQRS with Erlang - Bryan Hunter (NDC Conference 2014)
- Eventsourcing and CQRS in Elixir - Vasilis Spilka (ElixirConf EU 2021)
- An event-driven approach to building Elixir applications - Ben Smith (Code Elixir LDN 19)
- Commanded: Github
- Supercharging our event-sourcing capabilities with Phoenix LiveView - Simone D'Avico
- Using CQRS in a simple Phoenix API with Commanded - Christian Alexander
- Tackling software complexity with the CELP stack - Cees de Groot
- Commanded: Use Commanded to build Elixir CQRS/ES applications - Ben Smith
- Eventstore: CQRS event store using PostgreSQL for persistence - Ben Smith
- Conduit: RealWorld example backend implementing the CQRS/ES pattern in Elixir and Phoenix
- EventSourced: Functional domain models with event sourcing in Elixir - Ben Smith
- Building Conduit - Ben Smith & free to read online
- Supporting multiple event stores in Commanded using an adapter based approach for Elixir - Ben Smith
- Intro to implementing Command Query Responsibility Segregation (CQRS) in Elixir applications - Ben Smith
- Dealing with eventual consistency in a CQRS/ES application - Ben Smith
- Building CQRS/ES web applications in Elixir using Phoenix - Ben Smith | Building a CQRS/ES web application in Elixir using Phoenix | PDF
- Sage: dependency-free tool to run distributed transactions in Elixir, inspired by Sagas pattern - Andrew Dryga
- Sagas of Elixir - Andrew Dryga (Code BEAM STO)
- Introducing Sage: A Sagas pattern implementation in Elixir - Andrew Dryga
- Seven Otters: CQRS/ES library and facilities for Elixir to build events-oriented applications: SevenOtters.org | Github | Getting Started | Blog
- Let's Get Functional With Elixir! - Nate Taylor
- Composing Elixir Functions - Jay Hayes
- Parsing from first principles - Saša Jurić (WebCamp Zagreb 2019)
- Function Currying in Elixir - Patrik Storm
- Follow-up: Function currying in Elixir - Milton Mazzarri
- Pathex: library for performing fast actions with nested data structures. Trivially set, get and update values in structures in a functional manner
- Lenses and Pattern Matching - Travis Poulsen
- Focus, an Elixir library for functional lenses - Travis Poulsen
- Currying packages
- Gremlex: Elixir client for Gremlin (Apache TinkerPop): Website | API docs | Github | Github (my fork)
- Introducing Gremlex - Kevin Moore
- 7 Prod lessons w/ Elixir & Absinthe on event-driven architecture - Marcus Baguley (ElixirConf 2021)
- Build a GraphQL API in Elixir with Phoenix & Absinthe - Tivelop
- Creating GraphQL APIs Using Elixir Phoenix and Absinthe - Velotio Technologies
- ElixirConf 2018 - Making a GraphQL Server with Absinthe & Dataloader - Aaron Votre (ElixirConf 2018
- Building a Forum Elixir GraphQL Backend with Absinthe - Josh Adams
- Building a Phoenix GraphQL API with Absinthe - Tivelop
- Build A Instagram Clone with React-Native, Graphql and Phoenix - EQuimper
- Serving it the Absinthe Way - Aaron Votre (Boston Elixir Meetup July 2018)
- A GraphQL-on-Elixir Primer - Bruce Williams (Code Beam SF 2018)
- Phoenix GraphQL Tutorial with Absinthe - Ryan Swapp
- GraphQL in Practice - Bruce Williams & Benjamin Wilson (ElixirConf.EU 2017)
- Live APIs with GraphQL Subscriptions - Bruce Williams & Ben Wilson (ElixirConf 2017)
- Building a Phoenix GraphQL API with Absinthe - Tivelop
- Testing a Large GraphQL API With Aplomb - Jeff Martin (The Big Elixir 2018)
- A shot of Absinthe: from zero to GraphQL in 40 minutes - Sam Davies (Code Elixir LDN 2018)
- AmberCasts #4: Getting started with GraphQL, Elixir & Absinthe - AmberBit (Warning: Has some nearly unreadable text)
- Meraj: GraphQL with Elixir/Phoenix and Absinthe | Authenticating Absinthe GraphQL APIs in Phoenix with Guardian
- Ratatouille: TUI (terminal UI) kit for Elixir - Nick Reynolds | Docs
- Termbox API: Library for writing text-based user interfaces
- ex_termbox
- scenic | scenic.new
- My Scenic Companion - Jason Axelson (ElixirConf 2021)
- Scenic Now and Looking Ahead - Boyd Multerer (ElixirConfEU Virtual 20)
- Building a GameBoy emulator with Elixir and Scenic - Tonći Galić
- Live Coding Pong in Scenic - Ju Liu
- Natively Functional UI with Scenic - Boyd Multerer (Code BEAM STO 2019)
- Introducing Scenic A Functional UI Framework - Boyd Multerer (ElixirConf 2018)
- Live coding an Escher painting using Scenic - Ju Liu (ElixirConf EU 2019)
- Getting started with Scenic in Elixir: Crafting a simple snake game - Giancarlo França & code on Github
- Return of Wabi-Sabi: Hastega Will Bring More and More Computational Power to Elixir - Susumu Yamazaki (ElixirConf 2019)
- Hastega: Challenge for GPGPU on Elixir - Susumu Yamazaki (Lonestar Elixir 2019)
- Elsa: full-featured Kafka library written in Elixir and extending the :brod library with additional support from the :kafka_protocol Erlang libraries to provide capabilities not available in :brod
- erlkaf: Erlang kafka driver based on librdkafka (apparently the most secure non-Java Kafka client)
- KafkaEx
- Kaffe
- brod
- KaufmannEx | KaufmannEx — Elixir Microservices with Kafka and Avro - 7Mind GmbH
- Cafex
- Connecting Elixir to Kafka with Kaffe - Meryl Dakin
- Khepri: tree-like replicated on-disk database library for Elixir & Erlang - RabbitMQ (Github)
- The Khepri Database (Hexdocs.pm docs)
- The Khepri Database (Documentation on Github)
- Libgraph: A graph data structure library for Elixir projects - Paul Schoenfelder
- Native graph data in Elixir - Tony Hammond
- What's new in LiveBook - José Valim (Elixir Australia 2023)
- elixir-nx/livebook on Github
- Livebook v0.5: flowcharts, chat apps, multiplayer games, and custom widgets! - José Valim
- Announcing Livebook - José Valim
- It's A-Live(book) - Adam Lancaster (ElixirConf EU 2022)
- Elixir's Logger module is fully integrated with Erlang's :logger module, which was introduced with OTP 21.0. Logger.Translator can translate Erlang error messages into Elixir error messages. Logger.Formatter can configure formatting. (For more on Erlang's
:logger
, see Erlang/OTP 21's new logger, Logging, and Logger Cookbook for more information about:logger
). - Capabilities of Elixir's Logger - Julio Sampaio (Oct 2020)
- Awesome Elixir: Logging & Instrumenting / Monitoring
- Monitoring Your Elixir Application with Prometheus - Eric Oestrich (LoneStar Elixir 2019)
- Stephen Bussey: Instruments: Simple and Fast metrics for Elixir & Elixir Probes - Replacing Elixometer
- The Ultimate Guide to Logging in Elixir - Brandon Richey
- MLOps in Elixir: Simplifying traditional MLOps with Elixir - Sean Moriarity (ElixirConf 2023)
- A Year in Production with Machine Learning on the BEAM - Christopher Grainger (Code BEAM Europe 2023)
- ExFaiss: Elixir front-end for Facebook AI Similarity Search (Faiss)
- Semantic Search with Phoenix, Axon, Bumblebee, and ExFaiss - Sean Moriarity
- Faiss (Facebook AI Similarity Search): library for efficient similarity search and clustering of dense vectors
- Deploy Livebook notebooks as apps to Hugging Face Spaces - José Valim
- AutomatingTheFuture.com - Quentin Thomas
- Artificial Neural Networks, Elixir, and You - Quentin Thomas
- NX: Numerical Elixir & Elixir XLA bindings for CPU/GPU/TPU (Github)
- Nx (Numerical Elixir) is now publicly available - José Valim
- Up and Running Nx - Sean Moriarity
- Elixir versus Python for Data Science - Sean Moriarity
- Comparing Elixir and Python when working with Simple Neural Networks - A. Neto & L. C. Tavano (Code BEAM America 2022)
- Elixir-NX-Axon: Elixir's Machine Learning Library - Grox.io
- Kicking the tyres on Nx (Numerical Elixir) - Robert Ellen
- Introducing NX - José Valim (Lambda Days 2021)
- How to solve a real machine learning problem with Nx - Tiago Davi
- José Valim reveals Project Nx - (ThinkingElixir podcast)
- Panel on Machine Learning on the BEAM by José Valim, Randall Thomas, David Lucia, Garrett Smith, Svetlana Levitan (Code BEAM V Europe 2021)
- Axon: NX-powered neural networks
- JIT/GPU accelerated deep learning for Elixir with Axon v0.1
- Predicting fuel efficiency with Elixir, Nx, and Axon: a gentle introduction to Machine Learning
- Train a Neural Network in Minutes with Elixir & Axon - Sean Moriarity
- Axon: Functional Programming for Deep Learning - Sean Moriarity (ElixirConf 2022)
- Axon.Serving: Model Serving with Axon and Elixir - Sean Moriarity
- Semantic Search with Phoenix, Axon, and Elastic - Sean Moriarity
- Catching Fraud with Elixir and Axon - Sean Moriarity
- Bumblebee: GPT2, Stable Diffusion, and more in Elixir - José Valim
- Building a Conversational Support Bot with Elixir and Bumblebee - Sean Moriarity (Paraxial vlog)
- The Future of Large Language Models is Elixir - Sean Moriarity (EMPEX NYC 2023)
- From GPT2 to Stable Diffusion: Hugging Face arrives to the Elixir community - José Valim
- Use Neural Networks In Livebook - Peter Ullrich
- The Upside Down Dimension of Elixir: An Intro to Metaprogramming - Nicholas Henry (ElixirConf 2020)
- A deep dive into the Elixir AST - Lucas San Román: Part 1 | Part 2: Building a static code analyzer | Part 3: Building a typed struct macro | Preparing the ground for source code manipulation
- Macrofunology - Brian Marick: 1: module structure | 2: wrapping bodies, dissecting arglists | 3: guard expressions | 4: atoms and function names
- Deep dive into Elixir - Jonathan Yeong (ElixirConf 2020)
- Macros in Elixir: Responsible code generation - Lizzie Paquette
- Using Functions in Elixir Guard Clauses - Chris Keathley
- The How of Macros - Brian Marick: 1: Elixir compilation | 2: Syntax trees | 3: Syntax trees for literal data | 4:
quote
| 5: Unquoting - Down the Rabbit Hole: Defining a guard-safe modulo operation in Elixir - Wiebe-Marten
- Don't Write Macros But Do Learn How They Work - Jesse Anderson (ElixirConf 2017)
- Jay Hayes: Metaprogramming: Programs That Write Programs | Elixir in Elixir - (Elixir & Phoenix Conf 2016 & Getting Started with Elixir Metaprogramming (blog post)
- Macros - Jason Cummings (ElixirDaze 2017)
- Understanding Elixir Macros, Part 1 - Basics - Saša Jurić, Part 2 - Micro theory, Part 3 - Getting into the AST, Part 4 - Diving Deeper, Part 5 - Reshaping the AST, Part 6 - In-place code generation
- Writing a simple macro in Elixir - Dave Thomas
- Metaprogramming - ElixirSchool.com
- Code module - Elixir
- Kernel module - Elixir
- Kernel.SpecialForms - Elixir
- Macro.Env - Elixir
- Module module - Elixir
- The pillars of Metaprogramming in Elixir - Adi Iyengar (ElixirConf EU 2021)
- The Upside Down Dimension of Elixir - An Introduction to Metaprogramming - Nicholas J Henry (Montreal Elixir 2020)
- Elixir Metaprogramming - Tyler Pachal (Elixir Toronto 2020)
- Metaprogramming in Elixir - Gints Dreimanis
- Jia Hao Woo: Intro to Metaprogramming in Elixir | Under the Hood of Macros in Elixir | How to Use Macros in Elixir | Pitfalls of Metaprogramming in Elixir
- Metaprogramming Elixir - Chris McCord (NDC Oslo 2015)
- Speeding up dynamic templates Using Meta-programming - Andrew Selder (ElixirConf 2023)
- Mex: Elixir Shell helper for previewing macroexpansion - Luc Fueston
- Mix documentation
- Mix tasks
- Intro to Mix
- The Mix & OTP Guide: (EPUB) | Online
- Mix Templates - Dave Thomas
- Mix Test.Watch: Automatically run your Elixir project's tests each time you save a file
- Using Mnesia in an Elixir Application - Alex Koutmos
- Memento: Simple but Powerful Elixir interface to the Erlang Mnesia Database - Sheharyar Naseer
- Store Everything With Elixir and Mnesia - Ilya Bodrov
- ecto_mnesia: Ecto adapter for Mnesia Erlang term database - Nebo #15
- midi_synth: Play music in Elixir (Frank Hunleth): Github | Hexdocs
mix new beats
- Recreating The "Amen Break" with Elixir - Mat Trudel
- Nerves:
- Website | Github
- Nerves Platform
- API Reference
- Installation
- Getting Started
- Connecting to Nerves Target
- IEx With Nerves
- FAQ
- Targets
- Systems
- User Interfaces
- Environment Variables
- Compiling Non-BEAM Code
- Advanced Configuration
- Updating Projects
- Nerves Internals
- Customizing Your Own Nerves System
- Experimental Features
- Using the CLI
- Short Circuit IoT Development Time with Nerves - Dan Lindeman (ElixirConf 2020)
- Nerves intro - ElixirSchool.com
- Keep Calm and Use Nerves - Arjan Scherpenisse (FOSDEM 2020)
- Hello World - Justin Scheck (ElixirConf 2020)
- VintageNet: Hexdocs
- Elixir Digest
- Elixir Radar
- Elixir Weekly
- [Nerves Newsletter]https://underjord.io/nerves-newsletter.html()
- Rustling up predictive sporting betting models on the BEAM - David Lucia (Code BEAM SF 2020)
- Rustler: Safe Rust bridge for creating Erlang NIF functions
- BEAM + Rust: A match made in heaven - Sonny Scroggin (Code BEAM STO 19)
- Taking Elixir to the Metal with Rust - Sonny Scroggin
- Writing Rust NIFs for your Elixir code with the Rustler package - Jacob Lerche
- A NIFty way to integrate Rust with Elixir - Dave Lucia (Elixir NYC 2019): Pig Latin NIF | Basketball NIF | Slides
- Zigler: Zig NIFs in Elixir - Isaac Yonemoto: Github | Docs
- Zig (heart) Elixir - Isaac Yonemoto (ElixirConf 2021)
- Why you should use Zig for your Elixir Nifs - Isaac Yonemoto
- Zig: Ziglang.org | Docs | Standard Library
- Oban: Robust job processing in Elixir packed with enterprise grade features, real-time monitoring with Oban Web, and complex workflow management
- The Architecture of Oban - Parker Selbert (Code BEAM V America)
- Testing Oban Jobs From the Inside Out - Parker Selbert (ElixirConf 2021)
- Sorentwo.com blog (from Oban's creators)
- Observable Elixir - Bernardo Amorim (ElixirConf EU 2022)
- Observability for Elixir microservices - Thomas Césaré Herriau and Vamsi Chitters (Code BEAM SF 2020) (uses Spandex & Sentry)
- Observing Elixir in Production - Mark Ericksen | Connecting Observer to Your App in Production - Mark Ericksen
- Opus: framework for pluggable business logic components | Wiki
- How to create beautiful pipelines on Elixir with Opus - Rafael Soares
- Learning Elixir's GenServer with a real-world example - Alex Reichert
- Parenting Children - Saša Jurić (Virtual BEAM Meetup 2020)
- Simplifying Systems with Elixir - Saša Jurić (YOW! Lambda Jam 2020) & Repository containing the complete source code of The Erlangelist site
- Understanding common network protocols with Elixir - Willian Frantz (ElixirConf 2022)
- Consistent, Distributed Elixir - Chris Keathley (ElixirDaze 2018)
- The ABCs of OTP - Jesse J Anderson (ElixirDaze 2017) | Intro to OTP in Elixir - Jesse J. Anderson (Full Stack Talks Aug 2016) | slides | resource links
- Let It Crash: Creating an Example Supervisor in Elixir Using OTP - Tyler Pachal
- You Need a Supervisor - John (ElixirConf 2019)
- Reusable Elixir Libraries - Chris Keathley
- GenServer, Registry, DynamicSupervisor. Combined - Unnawut Leepaisalsuwanna
- Implementing long-running business processes - Karolis Petrauskas (Code BEAM STO 19)
- Michael @ omgneering: GenServer basics | [GenServer Callbacks and concurrency](Elixir GenServer callbacks and concurrency) | Supervisor | Application (Part 1) | Application (Part 2)
- Elixir GenServers for Web Developers - Damon Janis
- Processes and Supervision in Elixir - Steve Grossi
- Designing Elixir Systems with OTP | Bruce Tate (Erlang Solutions Webinar)
- Elixir GenServer Memory Issues - Nuno Marinho
- Building Adaptive Systems - Chris Keathley (Code BEAM V 2020)
- Building the Go Game in Elixir - Jeff Kreeftmeijer: Part 1: With Phoenix LiveView | Part 2: Time Travel and the Ko Rule | Part 3: With Elixir's Registry, PubSub and dynamic supervisors
- How we scraped and aggregated data from multiple sources using OTP - Tiago Duarte
- split_brain.ex: The challenges of building a small distributed Elixir Application - Dorian Iacobescu
- To spawn, or not to spawn? - Saša Jurić
- Write Unbelievably Clean Concurrent Code in Elixir Using the Task Module - Percy Grunwald
- High availability with Elixir and Erlang - Saša Jurić (Full Stack Fest 2016) & High Availability - Saša Jurić
- Elixir/Erlang OTP in Microservice Architecture - Thomas Newton (Microservices Day New York 2017
- Per-user workers with custom queue processing (using GenServer and Supervisor) - Adam Hodowany
- The Mix & OTP Guide: (EPUB) | Online
- How OTP Applications are structured - Jeff Kreeftmeijer
- The Circuit Breaker Pattern in Elixir - Allan MacGregor
- Creating Elixir libraries as OTP applications - Hubert Łępicki
- OTP in Elixir - Part 1 - Christian Di Lorenzo (Triangle Elixir 2016)
- Chat Bot: A Practical Walkthrough of the powerful Features Elixir/Erlang/OTP - Jeff Weiss
- Finding the needle in the Haystack: Breadth First Search... The Elixir Way - Quentin Thomas
- Re-architecting with Elixir/OTP and Pattern Matching - Mustafa Turan
- Dynamic supervisors
- OTP behaviours and how to behave around them - Brujo Benavides (Code BEAM SF 19)
- Extending OTP with Custom Behaviours - Michał Muskała (ElixirLive 2016)
- Hex.pm (Erlang & Elixir package manager)
- Rihanna: Fast, reliable, easy-to-use Postgres-backed distributed job queue - Sam Davies | Rihanna UI
- GenRetry: Utilities for retrying Elixir functions, with configurable delay and backoff - Appcues.com
- ExActor: Simplifies implementation of GenServer-based processes - Saša Jurić
- con_cache: ETS-based key/value cache with row level isolated writes and ttl support - Saša Jurić
- Vex: Data Validation for Elixir - CargoSense
- Elixir Package Building & Publishing - Step by Step Guide From Scratch - Blackode
- Apex: Awesome Print for Elixir
- BEAM Toolbox: categorized catalog of Hex packages for Elixir and Erlang - Henrik Nyh
- CSV: CSV Decoding and Encoding
- ExActor: Simplifies implementation of GenServer based processes
- Jolt: REST JSON API with zero coding (Mike Clark)
- Quantum: Cron-like job scheduler
- Scrivener: Paginate your Ecto queries (Drew Olson)
- Nimble Parsec: Docs
- Building A Highly Scalable Service that Survived A Super Bowl - Keith Elder (Code BEAM SF 2019)
- The Road to 2 Million Websocket Connections in Phoenix - Gary Rennie
- What's Inside a Reduction? - Devon Estes
- Monitoring Production Elixir Applications - John Kelly (EMPEX 2017)
- Measuring your Elixir Application - Renan Ranelli (ElixirConf 2016) | Blog post: "A guide to measuring your Elixir app
- vmstats: gathers metrics on the Erlang VM and sends them to a configurable sink - Fred Hebert
- Gathering metrics in Elixir applications - Andrea Leopardi
- The Elixir Bottleneck - Dorian Iacobescu
- Phoenix Documentation
- API Docs | Github | Website
- FullstackPhoenix.com - Speed up development significantly by using the Boilerplate generator
- Phoenix: An Introduction to Elixir's Web Framework - Gints Dreimanis
- Phoenix Phrenzy
- Keynote: Phoenix 1.3 - Chris McCord (Lonestar ElixirConf 2017) & discussion
- Stateful Web Apps with Phoenix and OTP - Hannah Howard (Erlang & Elixir Factory SF 2017)
- Creating a Phoenix 1.6 application with asdf - Miguel Cobá
- Phoenix: an Intro to Elixir's Web Framework - Sonny Scroggin (NDC {London} 2017)
- Crowd-controlling a game with Elixir and Phoenix - Andrea Leopardi (NoSlidesConf Dec 2016)
- What the fuss about Phoenix - Saša Jurić (WebCamp Zagreb 2016) & slides
- Building a CMS with Elixir and Phoenix - Alchemist Camp
- ElixirConf 2016 Keynote on Phoenix 1.3- Chris McCord
- Rails to Phoenix - Brian Cardarella (RailsConf 2016)
- Phoenix: The Firehose Project: Hands-On Intro to Building Modern Web Applications With Elixir and Phoenix
- Photo Album: A Phoenix/Elixir web app - Khaja Minhajuddin: Part 1 | Part 2
- Elixir on the Web: Phoenix Rising - Artem Chernyak
- How We Replaced React With Phoenix - Blake Williams (Thoughtbot)
- Taking Off With Phoenix - Sonny Scroggin (Erlang Factory SF 2016) & (NDC London 2016
- New Heights - Chris McCord (ElixirDaze 2016)
- Building Phoenix Battleships - Ricardo García Vega: Github | 1: Designing the game mechanics | 2: Lobby Channel & Game Supervision | 3: Game setup | 4: Placing ships on board | 5: Let the battle begin!
- Elixir and Phoenix basic passwordless and databaseless authentication - Ricardo García Vega | Github
- Phoenix a web framework for the new web - José Valim (Lambda Days 2016) | #pivorak Lviv Ruby MeetUp
- Phoenix is not Rails - Chris McCord
- Intro to Phoenix - José Valim (Elixir Warsaw Meetup)
- Phoenix: A web framework for the new web - José Valim (PolyConf 2015)
- Phoenix - a framework for the modern web - Chris McCord (NDC Conference Norway 2015)
- ExCasts (requires free registration)
- Brandon Richey: Writing a Blog in Phoenix and Elixir, Part 1 | Part 2: Authorization | Debugging Phoenix with IEx.pry | Testing Validations in Elixir and Ecto | Writing a Blog Engine in Phoenix and Elixir: Part 4, Adding Roles to our Controllers | Errata 1 | Part 5, Adding ExMachina | Part 6, Markdown Support | Part 7, Adding Comments Support | Part 8, Finishing Comments | Part 9, Live Comments | Part 10, Testing Channels | Part 11, Better UI
- Trello clone with Phoenix and React - Ricardo García Vega
- Elixirdose.com Phoenix tutorial: Part 1 | Part 2 | Part 3 | Part 4 | Part 5
- Elixir Cocktails (blog)
- Build and test a blazing fast JSON API with Phoenix, an Elixir framework - Paul Smith
- The Changelog: "Elixir and Phoenix with Chris McCord"
- Basic web app with Phoenix - Michael Eatherly & Phoenix app with authentication - Michael Eatherly
- Serving Plug: Building an Elixir HTTP server from scratch - Jeff Kreeftmeijer
- Elixir Style Guide
- Phoenix 1.7.0 released: Built-in Tailwind, Verified Routes, LiveView Streams, and what's next - Chris McCord
- Phoenix + LiveView Updates - Chris McCord (ElixirConf 2022)
- Phoenix 1.7's verified routes - German Velasco
- Phoenix 1.6.0 Released - Chris McCord
- Phoenix 1.5.x to 1.6 upgrade instructions
- Changelog
- Upgrading to Phoenix 1.6 - ElixirCasts.io
- Let's do Elixir and Phoenix together - Chris McCord (ElixirConf EU 2018)
- Keynote: Phoenix - Gauging Progress - Chris McCord
- Changelog
- Upgrading to Phoenix 1.4 - Zach Smith
- Phoenix 1.2.x to 1.3.0 Upgrade Instructions - Chris McCord
- Changelog
- Why changes in Phoenix 1.3 are so important? - Nikita Sobolev
- Adding sass/scss to a Phoenix 1.4 project - Gary Rennie
- Phoenix 1.4.11 how to use webpack with sass?
- Using Bulma and Sass in Phoenix - Nick Riebeek
- How to handle multiple assets js/css with Webpack in Phoenix 1.4 - Ly Channa
- Awesome Elixir: Authentication & Authorization
- Bodyguard: Authorization callbacks implemented directly on contexts | Authorization and Policy Scopes for Phoenix Apps - Sapan Diwakar
- Guardian: Elixir authentication & GuardianDB
- Coherence - Github | Docs
- comeonin: Password hashing library - David Whitlock
- coherence
- canada
- dictator
- doorman: Tools to make Plug, and Phoenix authentication simple and flexible - Blake Williams
- phauxth
- policy_wonk: Elixir authorization and resource loading in Plug form for Phoenix - Boyd Multerer
- Ueberauth: Authentication System for Plug-based Web Applications
- Authorization in Phoenix web applications using Role Based Access Control (RBAC) - KnowThen.com & Git repo
- User Authentication with Guardian for Phoenix 1.3 Web Apps - Meraj
- JWT Auth in Phoenix with Joken - Sophie DeBenedetto
- JWT Auth with an Elixir on Phoenix 1.3 API and React Native, Nick West: Part I: Phoenix JWT API | Part II: Building a React Native JWT Client | Part III: Building a React Native JWT Client: API Requests and AsyncStorage
- Phoenix: Authentication and Authorization using Plugs - iVitaly Tatarintsev
- User Authentication in Phoenix with Guardian & Überauth - Ulan Abdurazakov
- Passwordless login with phoenix - Thiago Borges (July 2016)
- Elixir/Phoenix — Build a simple chat room - Stephan Bakkelund Valois
- Authentication in Phoenix/Elixir app with Ueberauth and Guardian - Ulan Abdurazakov
- Documentation: Channels | Testing channels | ChannelTest
- Using channels in Phoenix - Vitaly Tatarintsev
- Phoenix PubSub: Using Phoenix.PubSub to send messages across processes - Hubert Pompecki
- Phoenix WebSockets Under a Microscope - Dimitris Zorbas
- Phoenix Realtime Chat Application - Channels, Presence, and Ecto Relations - Part 3 - Tensor Programming
- Context documentation | Testing contexts documentation
- The Alchemist's Code: Bringing More Value with Less Magic - Rafal Studnicki (Code Elixir LDN 19)
- Documentation: Controller guide | Phoenix.Controller | Testing controllers guide
Note: Elixir 1.9 includes release support:
- Deploying with Releases
- Multi-stage Docker Builds and Elixir 1.9 Releases - Alex Koutmos
- Building Elixir 1.9 releases - Alchemist Camp
- Updating Hex.pm to use Elixir releases - Wojtek Mach
- What’s new in Elixir – Apr/19 - José Valim
Consequently, much of the following will soon be at least partially outdated:
- Continuous deployment of a Phoenix project using GitLab CI/CD - Antoine Lehurt
- Distillery: Phoenix Walkthrough
- Elixir Phoenix 1.4 Deployments with Distillery and Edeliver on Ubuntu - Troy Martin
- Implementing Connection Draining for Phoenix (or any library that uses Ranch!) - Derek Kraan
- Exrm Releases (also applies to Distillery) - PhoenixFramework.org
- Deploying Phoenix Applications with Exrm - Brandon Richey
- Setting Up Phoenix/Elixir With Nginx and LetsEncrypt - Andrew Forward
- Phoenix Flying High: Deploying Phoenix The Final Part
- Using Phoenix With Docker, Part 3: Containerization - Florian Kraft
- One-Click Install Elixir on Ubuntu 14.04 with DigitalOcean
- Deploying Phoenix on Dokku - Henrik Nyh
- Deploying a Phoenix application using ansible-elixir-stack - Johan Wärlander
- Ansible-elixir-stack
- Page-Specific JavaScript with LiveView and Webpack - Bruce Park
- Elixir Phoenix with Typescript and React – December 2019 Edition - Alistair A. Israel
- Set Up Phoenix with Svelte+Rollup - Joshua Nussbaum
- elixir-svelte-render - Ben Woodward
- Adding Tailwind CSS support - Ricardo García Vega
- Phoenix 1.6.0 LiveView + esbuild + Tailwind JIT + AlpineJS - A brief tutorial - Sergio Tapia
- Awesome Elixir: JSON
- JSON API with Phoenix 1.4 - ElixirCasts.io
- Yet Another Guide To Build a JSON API with Phoenix 1.5 - Tamas Soos
- A Phoenix and Elixir REST API - Bill Peregoy: Part 1 | Part 2
- Using Ecto changesets for JSON API request parameter validation - Martin Nijboer
- Building and testing a Phoenix JSON API - Paul Smith (Thoughtbot)
- Live View: Documentation | LiveComponent | LiveViewTest | mix phx.gen.live | API Reference | Github
- Building a GitHub Gist Clone - Elixir Mentor (Jacob Luetzow)
- The Future of Full-stack - Chris McCord (ElixirConf 2021)
- Mastering Phoenix LiveView: Building a GitHub Gist Clone from Scratch - Elixir Mentor
- Better Forms With LiveView - Andrew Ek (GigCity Elixir)
- Dynamic forms with LiveView Streams - Berenice Medel
- Build a real-time Twitter clone in 15 minutes with LiveView and Phoenix 1.5 - Chris McCord
- Replacing React: How Liveview solved our performance problems - Tim Gremore (ElixirConf 2023)
- Infinitely Scroll Images in LiveView - Jaeyson Anthony Y.
- Phoenix Dev Blog - Streams - Chris McCord
- Building a Chat App with LiveView Streams - Sophie DeBenedetto
- Why Is My Live View Slow? And What Can I Do About It? - De Wet Blomerus (ElixirConf EU 2022)
- Building Tetris with Elixir, LiveView and OTP - Sandesh Soni | Source code
- Restore LiveView State on Startup - Mark Ericksen
- Getting to Know the LiveView Lifecycle - Michael Crumm (ElixirConf 2021)
- How to leverage on_mount to reduce code - Herminio Torres
- LiveView and Web Components - Chris Nelson (ElixirConf 2021)
- Building a simple Calendly clone with Phoenix LiveView: Part 1: Intro | Part 2: Generating the initial project and domain models | Part 3: The event type selection page | Part 4: Rendering the monthly calendar | Part 5: Booking time slots for an event type | Part 6: Managing event types, part 1 | Part 7: Managing event types, part 2 | Part 8: Managing event types, part 3 | Source code
- Making Invalid States Unrepresentable in LiveView - German Velasco (ElixirConf 2021)
- Real-Time Multi-Client GPS Logger With LiveView and Google Maps - Yuisho Takafuji (ElixirConf 2021)
- We Wrote An Entire Single-Page App in LiveView - Desmond Bowe (ElixirConf 2021)
- Liveview + Presence = Superpowers - De Wet Blomerus (ElixirConf 2021)
- Phoenix LiveView: Production Patterns - Joshua Plicque (ElixirConf 2021)
- Let the force be with Livebook - Kacper Latuszewski
- Phoenix LiveView course - PragmaticStudio.com (Nicole and Mike have incredibly generously created a professional LiveView course and given it away absolutely FREE)
- Let’s build a real time chat application with Elixir and Phoenix LiveView - Manning livestream - Geoffrey Lessel
- LiveView apps - Roman Heinrich and Alex Unger
- Rendering Supervision Trees with Phoenix LiveView - Berenice Medel (ElixirConf 2020)
- Building Multiplayer Games with LiveView - Dorian Karter (ElixirConf 2020)
- GeoRacer - a real-time multiplayer mobile game in Elixir in 6 weeks - Zack Kayser and Beau Heubach (Code BEAM SF 2020)
- Rebuilding a complex web-app with Elixir and Phoenix LiveView | Mikkel Högh (Code BEAM V 2020)
- Opening Keynote: Phoenix LiveView Uploads - Chris McCord (ElixirConf 2020) & Phoenix LiveView Uploads Deep Dive - Chris McCord
- What's new in LiveView - Chris McCord | ElixirConfEU Virtual 2020
- Phoenix LiveView: Multi-step forms - David Bernheisel
- Communicating between LiveViews on the same page - Henrik Nyh
- Alvise Susmel: The Primitives of Phoenix LiveView | Building a Gallery App
- Phoenix LiveView and Views - David Bernheisel
- Phoenix LiveView for web developers who don't know Elixir -
- Optimising data-over-the-wire in Phoenix LiveView - Henrik Nyh
- Easy Push Updates in the Browser with Phoenix LiveView - Geoffrey Lesseli (FullStack Talks 2019)
- Phoenix Live View: A step-change for web development - Chris McCord (ElixirConf 2019)
- Phoenix LiveView 0.11.0 - Plangora
- Real-time autosave with Phoenix LiveView - Janez Urevc
- Beyond LiveView: Real-Time Features with Phoenix LiveView, PubSub, Presence, and Channels - Sophie DeBenedetto: (The Big Elixir 2019) | (ElixirConf 2019)
- Walk-Through of Phoenix LiveView - Sophie DeBenedetto
- How to Create a Todo List with Phoenix LiveView (Updated for Phoenix 1.5) - Dennis Beatty | How to Create a Todo List with Phoenix LiveView - Dennis Beatty
- Building a Table Sort UI with Live View's 'live_link' - Sophie DeBenedetto
- Tracking Users in a Chat App with LiveView, PubSub Presence - Sophie DeBenedetto
- Phoenix LiveView Demystified - Alex Garibay (ElixirConf 2019)
- Phoenix LiveView - Interactive, Real TIme Apps - No need to write Javascript - Chris McCord (ElixirConf EU 2019) & Dec 2018 blog post
- Persistent session data via localStorage in Phoenix LiveView - Henrik Nyh
- Building and Playing the Go Game with Phoenix LiveView - Jeff Kreeftmeijer
- Talking to the LiveView: Updating the Phoenix LiveViews from outside the process - Dorian Iacobescu
- Phoenix LiveView Collection - Leandro Cesquini Pereira
- Swapping React for Phoenix LiveView - Ed Ellson
- Concurrent ant farm with Elixir and Phoenix LiveView - Ricardo García Vega & code
- Flappy Phoenix - Richard Taylor
- Phoenix Live View Example - Chris McCord
- Integrating Phoenix LiveView - Live Stream - 2019-03-18
- Phoenix Live View Example with Todos - Scott Meade
- observer_live: port of observer_cli using LiveView - Dimitris Zorbas: Live example | Github
- Libu: Simple KanBan Project Management tool built with Elixir, Phoenix, LiveView, and Tailwind CSS - Zach Blanco
- How to use Google Maps with Phoenix LiveView - Tiago Duarte
- Table pagination, sorting, and filtering using LiveView - Joe Richsen
- hippo_game_live - Milada & Černa Ovec: Github | Play online
- Alpine.js (lightweight framework for composing JS behavior in markup): Github - Caleb Porzio | Introducing Alpine.js: A Tiny JavaScript Framework - Phil Smith
- Spruce (lightweight global state for Alpine.js): Github - Ryan Chandler | Documentation
- Liven up your LiveViews (even further) with AlpineJS - Patrick Thompson (ElixirConf 2020)
- Integrating Phoenix LiveView with JavaScript and AlpineJS - Patrick Thompson
- Creating LiveView Modals with Tailwind CSS and AlpineJS - Patrick Thompson
- Triggering repeatable animations from the server in LiveView & Elixir - Chris Gregori
- Loading Indicators for Events With JS.push
- Pushing Events: With and Without JS.push - Berenice Medel & Chris Nicoll
- Client-Side Tabs in LiveView With JS Commands - Berenice Medel & Chris Nicoll
- LiveView Feels Faster With a Delayed Loading Indicator - Mark Ericksen
- Taking LiveView's JS commands for a spin - German Velasco
- LiveComponent documentation
- LiveView Components FTW! - Feather Knee (ElixirConf 2020)
- Introduction to Phoenix LiveView LiveComponents - Patrick Thompson
- LiveComponents in Phoenix 1.7 with LiveView 0.18 - Bruce Tate
- Reuse markup with function components and slots - Berenice Medel & Chris Nicoll
- Keep LiveViews alive across live redirects - Berenice Medel
- Passing Unknown Attributes into Your Component - Mark Ericksen
- Client-Side Drag and Drop with Phoenix LiveView - Kelsey Leftwich & Drag and Drop with Elixir Lang - Phoenix LiveView and JavaScript Interop
- Phoenix LiveComponent - Elixir's React + Redux? - David Raffauf
- Phoenix LiveView LiveComponents - Alvise Susmel
- LiveView Design Patterns - LiveComponent and the Single Responsibility Principle - Sophie DeBenedetto
- Phoenix Live Dashboard: Github | Docs
- Live Dashboard Metrics: Docs
- Instrumenting Phoenix 1.5 with Telemetry and LiveDashboard - Sophie DeBenedetto: ElixirConf EU Virtual 2020 | ElixirConf 2020 | Elixir School blog
- Phoenix LiveView Dashboard - Plangora
- Phoenix LiveView Dashboard Metrics - Plangora
- LiveMotion - Benjamin von Polheim: Hexdocs | Github
- LiveMotion examples
- Live Storybook: Hexdocs | Github
- Demo of phx_live_storybook v0.4.5 - Christian Blavier
Live Svelte (Github) Live Svelte (HexDocs)
- Surface: server-side rendering component library for Phoenix: Getting started | Github
- Introducing Surface: A new component-based (...) - Marlus Saraiva (ElixirConf EU Virtual 2020)
- Surface: A Bridge to the JavaScript Community - Dave Lucia (ElixirConf 2021)
- Surface - ElixirCasts.io
- Improving developer experience with Marlus Saraiva (Thinking Elixir podcast)
- VS Code plugin providing syntax highlighting support for Surface/Elixir
- German Velasco: Testing LiveView (ElixirConf 2020) & Testing LiveView course
- Elixir vs Ruby Showdown - Phoenix vs Rails - Chris McCord
- Benchmarking Phoenix vs Rails vs Sinatra vs Express vs Martini - Matthew Rothenberg
- Real-time dashboards powered by Elixir - Jacqueline Manzi
- Elm Phoenix.Presence Demo - Josh Adams
- Building a Chat App with Elixir and Phoenix Presence - Steve Grossi
- Ecto 2 and Phoenix Presence with José Valim and Chris McCord (Changelog)
- Learning Elixir Plugs by Finding Books - Alex Koppel
- Just Enough Plug to Build a Web server - Ole Michaelis (ElixirConf.EU 2017)
- The Story of Conn in the world of Phoenix - Shankar Devy
- Phoenix: Plug.Conn
- Überauth - Elixir Authentication System for Plug-based Web Applications
- Simple Guardian: Github | Browser login | API authentication | User permissions | Multiple sessions
- Using Phoenix.PubSub to manage side effects - Marcel Horlings
- Lightning Talk: (Ab)using Posgres for Pub/Sub - Jon Rowe
- PostgreSQL PubSub with Elixir - Plangora | Demo code | PostgreSQL PubSub with Triggers - Plangora
- Postgrex.Notifications
- System design hack: Postgres is a great pub/sub & job server - Colin Chartier
- postgrex_pubsub - Ben Church
- Telemetry documentation
- Telemetry-Powered Observability - Ethan Gunderson (EMPEX MTN 2022)
- Miguel Cobá: Introduction to Telemetry in Elixir | Telemetry and Metrics in Elixir
- It's Alive!!! Instrumenting Phoenix 1.5 - Sophie DeBenedetto (YOW! Lambda Jam 2020)
- Instrumenting Phoenix with Telemetry and LiveDashboard - Sophie DeBenedetto: Part I | Part II: Telemetry Metrics + Reporters | Part III: Phoenix + Ecto Telemetry Events | Part IV: Erlang VM Measurements with
telemetry_poller
- Views & templates (Phoenix docs)
- Phoenix Templates - Samuel Mullen & Phoenix Templates: Rendering & Layouts - Samuel Mullen
- The Usefulness of Phoenix's static_path/2 - Eric Lathrop
- [Ecto SQL Sandbox Usage Guide - req_sandbox - Michael Crumm](Ecto SQL Sandbox Usage Guide)
- Test-Driven Development With Phoenix - German Velasco (FREE book; in progress!)
- E2E Testing with Ecto Sandbox API - Nikola Begedin (Code BEAM V 2020)
- PhoenixIntegration: Lightweight server side integration test tools for Phoenix - Boyd Multerer
- ExUnit Deep Dive - Daniel Serrano
- How to do Outside-In TDD with Phoenix - Yiming Chen
- End-to-end Testing in Elixir with Hound - Maciej Woźniak
- Running Your Phoenix Tests Using Docker - Jason Kriss
- Step-by-Step Tutorial to Build a Phoenix App that Supports User Upload - Alvise Susmel
- Creating Thumbnails of uploaded Images and PDF in Phoenix - Alvise Susmel
- José Valim screencasts (Twitch.tv)
- Exploring Elixir (Youtube screencasts) - Aaron Seigo
- Phoenix 1.2 and Beyond - Chris McCord (ElixirConfEU 2016)
- Arisen from the Ashes: Phoenix.js and Websockets - Max Beizer
- Phoenix Takes Flight - Chris McCord (ElixirConf EU 2015)
- What's Next for Phoenix - Chris McCord (ElixirConf 2015)
- Phoenix: Productive. Reliable. Fast. - Chris McCord (LoneStarRuby 2015)
- Real time web applications with Elixir and Phoenix - Eoin Shanaghy (CorkDev 2015)
- Phoenix: A web framework for the new web - José Valim (PolyConf 2015)
- Elixir, Phoenix and the PEEP Stack - Chris Nelson (Cincy Web Tech Summit)
- Phoenix - A Framework for the Modern Web - Chris McCord
- Live With Elixir & Phoenix (& React)- @mrwade
- Phoenix with Elm - Alan Gardner: Video (ElixirConf 2015) & Blog: Pt 1 | Pt 2 | Pt 3 | Pt 4 | Pt 5 | Pt 6 | Pt 7 | Pt 8 | Pt 9 | Pt 10 | Pt 11
- Phoenix asset handling with brunch - Chris McCord
- Individualized Content at Web-Scale - Michael Schaefermeyer (ElixirConf EU 2015)
- Creating a chat application in 15 minutes with Phoenix - Darko Fabijan (PolyConf 14)
- Rise of The Phoenix: Building an Elixir Web Framework - Chris McCord (ElixirConf 2014)
- Phoenix Book Club - Michael Ries
- Binary WebSocket communication with Elixir & Phoenix - Paul Wilson
- Anatomy of a Real Time Elixir App - Steve Bussey (ElixirConfEU Virtual 2020)
- Delightful Multiplayer Editing with Phoenix - Tyler Young (ElixirConf 2022)
- Writing an Evented WebSocket Client - Eric Oestrich
- The joy of React+Redux with Elixir/OTP - Nacho Martin
- Event Sourcing in React, Redux & Elixir — how we write fast, scalable, real-time apps at Rapport - Gary McAdam
- Driving Phoenix sockets - Saša Jurić
- Elixir Fountain (defunct)
- Elixir Mix
- Elixir Newbie - Brooklin Myers
- Elixir Outlaws
- Elixir Talk
- Elixir Wizards
- Indielixir - Carter Bryden
- Smart Software - SmartLogic
- Thinking Elixir
- Port module documentation
- Managing External Commands in Elixir with Ports - Tony Collen
- Outside Elixir: running external programs with ports - Saša Jurić
- Primer on Ports - Geoff Smith
- The Process: 7-part series on Elixir Concurrency - Isaac Yonemoto
- State: A Necessary Evil: All the ways to store state in Elixir - Isaac Yonemoto (ElixirConf 2023)
- Learning about Supervisors using Phoenix LiveView - Phuong Van (Code BEAM Lite Stockholm 2023)
- Alvise Susmel: Spawning processes in Elixir, a gentle introduction to concurrency | Hey Process, there is a Message for you! | The Primitives of Elixir Concurrency: a Full Example
- Samuel Mullen: Elixir Processes: Spawn, Send, and Receive | Elixir, Poolboy, and Little's Law | Linking and Monitoring | Observability | Testing
- Bamboo: Testable, composable, and adapter based Elixir email library (Thoughtbot)
- Moebius: Functional (database) query tool for Elixir (Rob Conery)
- Learn Elixir: Building a Neural Network from Scratch - Karmen Blake (ElixirDaze 2016)
- Adventures in Robotics with Elixir by Jean-François Cloutier (ElixirDaze 2016)
- Building a non-trivial robotic brain in Elixir - Jean F. Cloutier (Boston Elixir - January 2016) & Robot.ex blog
- ExSamples: Initializes lists of maps, structs or keyword lists using tabular data in Elixir - Marlus Saraiva
- A Practical Guide to Elixir Protocols - Kevin Rockwood
- Atlas: Flexible Software Composition using Protocols by Quinn Wilton | Code BEAM V Europe 2021
- Polymorphism With Protocols in Elixir - Ilya Bodrov
- A Practical Guide to Elixir Protocols - Kevin Rockwood (ElixirConfEU 2017)
- yggdrasil: Subscription and publishing server for Elixir applications (Github)
- Yggdrasil: Easy Pub-Sub in Elixir - Alex de Sousa
- Yggdrasil and PostgreSQL Notifications - Alex de Sousa
- Yggdrasil and RabbitMQ Subscriptions - Alex de Sousa
- Raxx.Kit: Lean mean web development for Elixir - Peter Saxton (Code BEAM STO 19) | Slides
- Message passing for actors and humans with Raxx - Peter Saxton (Code Mesh LDN 18)
- Building a distributed chatroom with Raxx.Kit - Peter Saxton
- Riak Core
- Riak's rebound - Nicholas Adams (Code BEAM STO 19)
- Evolution of Riak: resolving problems in distributed systems - Martin Sumner (Code BEAM STO 19)
- Create a riak_core application in Elixir - GPad: Part 1 | Part 2 | Part 3 | Part 4
- Erlang Ecosystem Foundation: Security Working Group | Secure Coding & Deployment Hardening Guidelines | Github
- Elixir’s best practices: Achieve secure authentication - Stéphane Robino
- Off BEAM Secure software development - Bram Verburg (Code BEAM SF 2020)
- Learn you some ':ssl' for much security! Bram Verburg (ElixirConfEU 2019)
- How to destroy your application using :erlang.binary_to_term/1 - Davide Bettio
- Making IoT safer with BEAM OTP - Duncan Sparrell (Code BEAM SF 2020)
- Secure Coding and Deployment Hardening Guidelines - Erlang Ecosystem Foundation Security Working Group
- Awesome Cryptography
- Securing Elixir Applications - Bram Verburg (ElixirConfEU 2016) | slides
- Paladin: JWT-based service to service protector for Elixir umbrella apps
- Content Security Policy configuration (in Phoenix) - Paul Wilson
- Running a Phoenix App in an iframe - Troy Rosenberg
- Sobelow - Security-focused static analysis for the Phoenix Framework - Griffin Byatt: Github
- Cross Site Scripting (XSS) Patterns in Phoenix
- Pretty State Machine - Jeff Smith (Code BEAM SF 2019)
- gen_statem - The Tool You Never Knew You Always Wanted - Raimo Niskanen (Code BEAM SF 2018)
- Building State Machines in Elixir with Ecto - Miguel Palhas
- states_language: Declaratively design state machines that compile to Elixir based :gen_statem processes
- How to Build a Memory-efficient Elixir App with Streams - Tracey Onim
- Alvise Susmel: Elixir Streams to process large HTTP responses on the fly & Elixir Stream and large HTTP responses: processing text
- Elixir Findings: Asynchronous Task Streams - Dino Costa
- Test-Driving a Stream-powered Elixir Library - Thiago Araújo Silva
- How to build Streams in Elixir easily with Stream.resource/3 Awesomeness - Benjamin Tan
- Elixir Stream Patterns - Joseph Kain
- Unicode, Charsets, Strings, and Binaries - Marc Sugiyama (Code BEAM V)
- Elixir string interpolation for the Rubyist (and others) - Henrik Nyh
- Telemetry: Github
- Introducing Telemetry - Arkadiusz Gil
- Instrumenting Phoenix 1.5 with Telemetry - Sophie DeBenedetto: Talk @ ElixirConf 2020 | Part I: Telemetry Under The Hood
- Tips for Finch and Telemetry - Claudio Ortolina
- OpenTelemetry Erlang SDK | OpenTelemetry SDK - Hex.pm | OpenTelemetry API - Hex.pm
- Demystifying distributed tracing in Elixir via Open-Telemetry, Zipkin, and Elastic Search - coding-guy
- Zipkin - Distributed Tracing: OpenTelemetry: Zipkin | Zipkin.io | Github | Twitter
- Tricks and tools for writing Elixir tests - Brian Marick (ElixirConf 2020)
- TDD is not about testing - Gianluca Padovani (Code BEAM STO 19)
- Elixir API: Testing - Elixir Mentor (Jacob Luetzow)
- Testing in an Elixir world - Rafael Rocha (Code BEAM STO 19)
- 4 Tips for Mastering Test-Driven Development - Nicolas Talfer
- Organizing Your Tests With Context Tags - Peter Ullrich
- Custom ExUnit Assertion - Tyler Pachal
- Track-switching in a large Elixir web application - 9elements
- Lightweight dependency injection in Elixir (without the tears) - Andrew Hao
- Mocks and explicit contracts - José Valim
- Testing function delegation in Elixir without stubbing - Brian Cardarella
- Testing Asynchronous OTP - Andrea Leopardi (ElixirConf EU 2021)
- Going Multi-Node with ExUnit - Devon Estes (ElixirConf EU 2021)
- Bypass: create custom plug usable instead of an actual HTTP server to return prebaked responses to client requests - PSPDFKit
- Bypass - Elixir School
- Flow Assertions: Make tests easier to scan by capturing frequently-used assertions in functions that can be used in a pipeline - Brian Marick
- Ecto Flow Assertions - Brian Marick
- UI Testing is Ruff; Hound Can Help - Vanessa Lee (ElixirConf 2019)
- Concurrent Feature Tests with Phoenix and Hound - Kevin Rockwood
- Blitzy: Simple HTTP load tester in Elixir - Benjamin Tan Wei Hao
- Chaperon: HTTP Service Performance & Load Testing Framework - Poll Everywhere
- Mox: Mocks & explicit contracts: Github | Docs
- Mocks and explicit contracts - José Valim
- Functional Mocks with Mox in Elixir - Andrew Hao
- Empirical Monkeys: A Practitioner’s Take on - Rafal Studnicki & Simon Zelazny (ElixirConf 2018) & Github
- Norm: Data specification and generation - Chris Keathley
- Testing Erlang and Elixir through PropEr Modeling - Fred Hebert (Erlang Solutions Webinar)
- StreamData: Elixir library for data generation and property-based testing - Andrea Leopardi
- Property-Based Test-Driven Development in Elixir - Mathias Polligkeit
- Introduction to stateful property based testing - Tomasz Kowal (Lambda Days 19)
- Quixir: Property-based testing for Elixir - Dave Thomas
- Propcheck: Property-based testing for Elixir - Klaus Alfert
- Property-Based Testing - Exploring Elixir
- Property-Based Testing with PropEr, Erlang, and Elixir - Fred Hebert | Older but free "PropEr Testing" website
- Example-based Tests And Property-based Tests Are Good Friends - Andrea Leopardi
- Recursive Selective Match: Library for testing nested Elixir data structures and ignoring irrelevant data elements and data structure subtrees - James Lavin (me)
- Norm: Documentation | Github
- Atlas: Flexible Software Composition using Protocols by Quinn Wilton | Code BEAM V Europe 2021
- TypeCheck: Fast and flexible runtime type-checking for your Elixir projects
- TypeCheck Guide / README
- Type-checking and spec-testing with TypeCheck
- TypeCheck Effortless Runtime Type Checking - Wiebe-Marten Wijnja (ElixirConf EU 2022)
- TypeCheck with Wiebe-Marten Wijnja - Thinking Elixir Podcast
- Wallaby: Concurrent browser tests with Elixir: Docs | Github
- Integration Testing Phoenix With Wallaby - Jake Worth
- Concurrent Feature Testing with Wallaby by Chris Keathley (ElixirConf 2016) | slides
- Introducing Wallaby – Concurrent Feature Tests for Elixir and Phoenix - Chris Keathley
- Write Admin Tools from Day One - Andy Glassman (EMPEX NYC 2023)
- Elixir Tooling - Eric Meadows-Jönsson (Berlin Erlang Factory Lite)
- Bringing Types to Elixir - Giuseppe Castagna and Guillaume Duboc (ElixirConf EU 2023)
- Typespecs - Elixir docs
- norm: system for specifying the structure of data, usable for data validation and generation - Chris Keathley
- oath: design by contract - Chris Keathley
- ExContract: support for design by contract - JDUnity
- Introduction to a type system: session types - Charlotte Lorelei de Oliveira (Code BEAM STO 19)
- Contracts for Building Reliable Systems - Chris Keathley (ElixirConf 2019)
- Types On The BEAM - Gordon Guthrie
- Algebraic Data Types in Elixir - Gints Dreimanis
- Type Specifications and Erlang
- A More Type-Driven Elixir Workflow? Maybe - Simon Zelazny & Rafal Studnicki
- Chemanalysis: Dialyzing Elixir - Sean Cribbs (Code BEAM SF 19)
- Decoding Dialyzer - Part 1 - Devon Estes
- Spot The Discrepancies with Dialyzer for Erlang - Brujo Benavides
- What Does Dialyzer Think of Me? - Stavros Aronis (Code Beam 2019)
- Help Dialyzer Help You! …or Why you should use specs if you use opaque types - Brujo Benavides
- Hype For Types Using Dialyzer to Bring Type Checking to Your Elixir Code - Emma Cunningham (Code Beam SF 2018)
- Dialyxir & Dialyzer
- Dialyzer: Optimistic Type Checking for Erlang and Elixir - Jason Voegele: ElixirConf 2016 | λC 2016
- Practical Type Inference Based on Success Typings - Tobias Lindahl & Konstantinos Sagonas
- Elchemy: Write Elixir code using statically-typed Elm-like syntax (compatible with Elm tooling): Github
- Elchemy book
- Tempo - Date/Time library for Elixir based upon intervals not instants - Kip Cole
- Michał Muskała: Unix Timestamps in Elixir 1.4 & Unix Timestamps in Elixir
- Using an Elixir Umbrella - Georgina Mcfadyen
- Implementing Bounded Contexts in Elixir - Leandro Cesquini Pereira
- Umbrella Apps-Winter is coming - Luis Ferreira (Functional Conf 2017)
- Building Umbrella Projects - Wojtek Mach (ElixirConf 2016) & Acme Bank is an example project to explore and experiment with building modular and maintainable Elixir/Phoenix applications
- Code BEAM Europe: 2023
- Code BEAM Lite Stockholm 2023
- Code BEAM Lite Mexico 2023
- Code BEAM America 2022
- Elixir Australia
- ElixirConf: 2022 | 2021 | 2020 | 2019 | 2018 | 2017 | 2015
- ElixirConf EU: 2023 | 2022 | 2021 | EU Virtual October 2020 | EU Virtual June 2020 | 2019 | 2017 videos | 2016 videos | 2015 videos
- Code BEAM / Code Mesh: V Europe 2021 | | Code BEAM America 2021 | V America 2021 | V 2020 SF 2020 | Lite Amsterdam 2019 | CodeElixir LDN 2019 | SF 2019 | Stockholm 2019 | SF 2019 | Munich 2018 | Berlin 2018 | SF 2018 | STO 2018
- EMPEX: 2023 NYC | 2022 MTN | 2020 LA | 2019 LA | 2018 NYC | 2018 LA | 2017 | 2016
- Elixir Meetups - Curiosum
- José Valim Twitch recordings
- The Big Elixir: 2019 | 2018
- Gig City Elixir: 2019
- Meetups: Elixir Berlin
- Lonestar ElixirConf: 2019 | 2018 | 2017
- SmartLogic Elixir LiveStream Archive
- Code Elixir LDN: 2018 | 2017 | 2016
- EveryElixirVideo.page
- ElixirDaze: 2018 (Youtube) | 2018 (Confreaks) | 2017 | 2016 (Youtube) | 2016 (Confreaks)
- Erlang Solutions Webinars
- Erlang & Elixir Factory SF 2017
- BEAM Channel - Zachary Kessin
- Josh Adams working on Firestorm UI
- ElixirConf: 2016 videos | 2015 videos | 2014 videos
- Elixir videos (Vimeo)
- Discovering Processes - Saša Jurić (ElixirConfEU 2016)
- Talk on connection pooling, rate-limiting, circuit breaking, and demand-driven job processing - Martin Gausby (Gig City Elixir 2019)
- Elixir Adoption at Scale: A Comprehensive Guide - Ben Marx - EFLBA2017
- Elixir Remote Meetup - DailyDrip.com
- Three and a Half Ways Elixir Changed Me (and Other Hyperbole) - Rob Conery (NDC London 2016)
- Elixir Is Neat But What Can You Actually Do With It? - Rob Conery (NDC Oslo 2016)
- Elixir Should Take Over the World - Jessica Kerr (ElixirConf 2015)
- What's Ahead for Elixir? - José Valim (ElixirConfEU 2016) | slides
- Explore Elixir Using Board Game Logic - Torben Hoffmann | source code (Github)
- Building Multiplayer Games with Phoenix and Phaser - Keith Salisbury (ElixirConfEU 2016
- Indy Elixir First (Virtual) Meetup!
- Concurrent and Resilient Connections to Outside the BEAM - Andrea Leopardi (ElixirConfEU 2016) | slides
- What Elixir Is About - José Valim (Erlang User Conference 2015)
- Rewriting a Ruby application in Elixir - Claudio Ortolina (ElixirConf 2015)
- Erlang Factory SF 2015 videos
- Idioms for Building Distributed Fault-tolerant Applications with Elixir - José Valim (goto; conference)
- "Elixir and the Internet of Things" - Doug Rohrer (Strangeloop 2014)
- The Climb Experiencing the Rise of Elixir from the Inside - Bruce Tate & Dave Thomas (Erlang Factory SF 2016)
- Elixir - A modern approach to programming for the Erlang VM - José Valim (old but still informative)
- Crawly - Oleg Tarasenko: Github | Web scraping with Elixir | Web scraping with Elixir and Crawly. Browser rendering
- WebRTC from Start to Finish - Scott Hamilton (ElixirConf 2019)
- WebRTC and Phoenix, when μ Seconds aren't Fast Enough - Jason Stiebs (ElixirConf 2016) | phoenix_webrtc code
- simple-peer: Simple WebRTC video/voice and data channels
- Erlang Programming Language (with Francesco Cesarini) - Computerphile
- Learn You Some Erlang for Great Good! - Fred Hebert
- Adopting Erlang - Tristan Sloughter, Fred Hebert, and Evan Vigil-McClanahan | Erlang/OTP Cheat Sheets
- Concurrent Programming in ERLANG, 2nd ed (Part 1 only) - Joe Armstrong, Robert Virding, Claes Wikstrom, and Mike Williams
- The Secret Sauce of Erlang: Opinionated Language and Focused Community - Ulf Wiger (YOW! Lambda Jam 2020)
- Which companies are using Erlang, and why? - Francesco Cesarini
- The Erlang Rationale - Robert Virding
- The Zen of Erlang - Fred Hebert (Reactive Summit 2016)
- Just Enough Erlang (for Elixirists)- Samuel Mullen
- Functional Programming in Erlang - Simon Thompson (University of Kent (UK))
- Spawned Shelter: collection of the best articles, videos and books for learning Erlang, the internals of its VM and other languages that run on top of it
- Erlang in Anger - Fred Hebert
- Elixir Zone: Erlang Fundamentals - James Lavin (hey, that's me!): Erlang 101: Processes & Parallelization | Erlang 102: Fault-Tolerance & Reliability | Erlang 103: Collaborating State Machines (in Erlang and Biological Systems)
- Erlang Quick Reference Card v1.0, 2011-11-13, Pawel Stolowsk
- Awesome Erlang - Curated list of libraries, resources & more - David Robakowski
- Erlang Koans - Patrick Gombert
- Building a Blockchain in Erlang - Ulf Wiger (CodeMesh LDN 2018)
- Why We Chose Erlang over Java, Scala, Go, C - Colin Hemmings (QCon 2017)
- Solving the Stable Marriage problem with Erlang
- Erlang - TutorialsPoint
- Thinking in a Highly Concurrent, Mostly-functional Language - Francesco Cesarini (ElixirConf 2014)
- Understanding Erlang Kernel - Boshan Sun (Code BEAM SF 19) | Slides (PDF)
- Building CQRS/ES web applications in Elixir using Phoenix - Ben Smith | Building a CQRS/ES web application in Elixir using Phoenix | PDF
- Advanced-Erlang.com
- How to Comprehend Comprehensions - Brujo Benavides
- ErlangCentral Wiki
- MostlyErlang.com
- Erlang: the Power of Functional Programming - Simon Thompson (EFLBA2017)
- Getting Started With Erlang - Erlang.org | Chapter 5 in Erlang/OTP System Documentation
- Popular libraries:
- enacl: Erlang bindings for the NaCl/libsodium cryptographic library | Github | libsodium: encryption/decryption/signatures/password hashing library
- erlexec (execute & control OS processes)
- GenSMTP
- Hackney (HTTP client)
- Katana Code (functions for processing Erlang code)
- Meck (test mocks)
- MochiWeb (lightweight HTTP server)
- Observer_CLI (displays tons of info on your running BEAM node)
- Recon (debug in prod)
- Telemetry | Telemetry poller
- The Soul of Erlang and Elixir - Saša Jurić (GOTO Chicago 2019) & Reaping the Benefits of Elixir: How to Get Started - Saša Jurić & Erik Schön (GOTO 2020)
- Erlang Powered Rabbits - Lukas Larsson (RabbitMQ Summit 2022)
- Comparing common concurrency patterns in Elixir and Erlang - Devon Estes (Lambda Days 2020) | (A Pattern Language for Parallel Application Programming - Berna L. Massingill, Timothy G. Mattson, Beverly A. Sanders)[https://www.cise.ufl.edu/research/ParallelPatterns/PatternLanguage/Background/PDSE99_long.htm]
- Unique resiliency of the Erlang VM, the BEAM and Erlang OTP - Irina Guberman (Code Beam SF 2020)
- The BEAM Coding Paradigm - Kenji Rikitake (Code BEAM STO 2019)
- Getting Core Erlang from Elixir - Andrew Volozhanin
- So I used Erlang...is my system as scalable as they say it'd be? - Laura Castro (Lambda World 2019)
- Fantastic Voyage III: Destination BEAM - Brian Troutwine (Code BEAM SF 2019)
- Digging through the garbage - Devon Estes (Code BEAM Lite Berlin 18)
- The Erlang Runtime System (a.k.a., The BEAM Book) - Erik Stenman: Github (source) & PDF & Webpage
- How does fault tolerance work in Erlang? - Charlotte Lorelei Oliveira (Code BEAM Lite Munich 2018)
- Hitchhiker's Tour of the BEAM - Robert Virding
- Journey to the Center of the BEAM - Brian Mitchell (EMPEX 2016)
- Inside memory management on the BEAM - Devon Estes (Code BEAM Lite Munich 2018)
- A Brief History of the BEAM Compiler - Björn Gustavsson
- Core Erlang - Björn Gustavsson: By Example | Optimizations | Wrap up
- BEAM Wisdoms: collection of easy to read (ELI5) articles as well as in-depth knowledge such as VM internals, memory layout, opcodes
- The Erlang VM or How I Stopped Worrying & Started Loving Parallel Programming - E.Stenman (GOTO 2013)
- Erlang Garbage Collector - Lukas Larsson
- Evolution of the garbage collector - Boris Kuznetsov (Code BEAM STO 2018)
- Who Takes Out Your Trash - Sanne Kalkman (Code BEAM V 2020)
- Brujo Benavides
- Erlang/OTP Team @ Ericsson
- Erlang Solutions
- Konstantin Duman
- Peter Ullrich
- This Week in Erlang - Sasan Gootik
- BEAM Concurrency in Action - Saša Jurić (YOW! 2022)
- Comparing common concurrency patterns in Elixir and Erlang - Devon Estes (Lambda Days 2020)
- The How and Why of Fitting Things Together - Joe Armstrong
- JVM struggles and the BEAM - Joel Kemp
- Optimising for Concurrency: Comparing and contrasting the BEAM and JVM virtual machines - Francesco Cesarini & Gabor Olah
- Life of an Erlang process - Roberto Aloi (LambdaCon 2016)
- How Erlang got its name - Bjarne Däcker (Code BEAM STO 19)
- Immutability for Concurrency - Francesco Cesarini (YOW! Lambda Jam 2020)
- Communicating Sequential Processes - C.A.R. Hoare, 1978
- Cowboy: Github | User Guide
- Ranch: Github
- Cowboy architecture and execution flow - Andrew Volozhanin
- Debugging in Elixir and Erlang: An Introduction - Marcos Ramos & Debugging and Tracing in Erlang - Marcos Ramos
- Recon: recon | recon_alloc | recon_lib | recon_map | recon_rec | recon_trace
- redbug: Erlang tracing debugger | Hex.pm | Docs
- Squeezing the most out of the server: Erlang Profiling - Facundo Olano
- Scaling Erlang cluster to 10,000 nodes - Maxim Fedorov (Code Mesh LDN 18)
- Distributed War Stories - Miriam Pena (EMPEX LA 2019)
- Erlang distribution over TLS - Magnus Henoch
- Jumping gen_servers! A new way of building distributed applications - Peer Stritzinger (Code BEAM V EU 21) | [Piccolo-Project.org(https://piccolo-project.org/https://piccolo-project.org/) | Braid
- Software-Defined Networking and Traffic Engineering: Managing a Tera of Flow in Erlang - Sébastien Merle & Peer Stritzinger (Code BEAM V EU21)
- Partisan: Flexible, TCP-based membership system for Erlang/Elixir & Partisan: Enabling Cloud-Scale Erlang Applications - Christopher S. Meiklejohn & Heather Miller (PDF)
- Scaling Distributed Erlang - Zandra Norman (ElixirConfEu 2016)
- Erlang distribution: going beyond the fully connected mesh - Peer Stritzinger & Adam Lindberg (Code BEAM STO 19)
- A Tour Through the Distributed System Zoo - Mariano Guerra (Code BEAM SF 2018)
- Erlang/OTP Search
- ErlDocs.com
- Erlang Modules Reference
- Erlang Run-Time System App (ERTS): HTML & PDF
- Std Lib User's Guide: HTML & PDF
- Std Lib Reference Manual: HTML & PDF (I can't find the PDF for this)
- Kernel: HTML & PDF
- Erlang/OTP System Documentation: PDF (includes all the following):
- Installation Guide: HTML
- System Principles: HTML
- Embedded System: HTML
- Getting Started With Erlang User's Guide: HTML
- Erlang Reference Manual User's Guide: HTML
- Programming Examples: HTML
- Efficiency Guide: HTML
- Interoperability Tutorial: HTML
- OTP Design Principles User's Guide: HTML
- Operation & Management (OAM) Principles: HTML
- Applications:
- Crypto: HTML & PDF
- Debugger: HTML & PDF
- Dialyzer: HTML & PDF
- Diameter: HTML & PDF
- Event Tracer: HTML & PDF
- Inets: HTML & PDF
- Mnesia: HTML & PDF
- Observer: HTML & PDF
- ODBC: HTML & PDF
- OS Mon: HTML & PDF
- ParseTools: HTML & PDF
- RelTool: HTML & PDF
- RuntimeTools: HTML & PDF
- SASL (System Architecture Support Libraries): HTML & PDF
- SSH: HTML & PDF
- SSL: HTML & PDF
- Tools: HTML & PDF
- Wx: HTML & PDF
- Xmerl: HTML & PDF
- More docs
- More library docs
- An Erlang Course
- Erlang.org docs | erlang-questions (Google group)
- ErlDocs.com
- Getting Started with Erlang User's Guide - Ericsson
- System Principles User's Guide - Ericsson
- Erlang Reference Manual User's Guide - Ericsson
- Programming Rules and Conventions
- Time in Elixir
- erlfmt: Erlang code formatter from WhatsApp
- Erlang is getting pretty! - Michal Muskala (Code BEAM SF 20)
- ErlPort.org | Github | Python docs
- Using Python Trained Machine Learning Models from Phoenix (Elixir) Applications - Meraj
- Mixing Python with Elixir - Badu Boahen & Mixing Python with Elixir II (asynchronous)
- Elixir, Mix, Erlport, poolboy, and Anaconda Python - Dave Kuhlman
- Using Python Trained Machine Learning Models from Phoenix (Elixir) Applications - Meraj
- Documentation | Efficiency Guide: ETS, DETS, and Mnesia
- ex2ms: :ets.fun2ms translates functions to match specifications - Eric Meadows-Jönsson
- Bears, ETS, Beets - Learn You Some Erlang
- The New Scalable ETS ordered_set
- ForgETS: a globally distributed database - Mikhail Vorontsov (Code Beam STO 2018)
- A Reflection on Building the WhatsApp Server - Anton Lavrik (Code BEAM 2018)
- Ericsson to WhatsApp : The Story of Erlang - Babbage
- An Evening at Erlang Factory: Joe Armstrong, Mike Williams, Robert Virding - Hackers / Founders
- Keynote: Over a Century of Programming - Mike Williams, Joe Armstrong, Robert Virding (Erlang User Conference Stockholm 2013)
- Keynote: History of philosophy of Erlang with its creators - Bjarne Däcker, Mike Williams, and Robert Virding (Code BEAM V America 2021)
- Concurrency before Erlang - Bjarne Däcker (Code BEAM V America 2021)
- Concurrency before Erlang - Bjarne Däcker (Code Mesh LDN 19)
- 26 years with Erlang or How I got my grey hairs - Joe Armstrong
- How we program multicores - Joe Armstrong (RISE SICS 2016)
- If at first you don't succeed - Mike Wiliams and Fred Herbert (Code BEAM V Europe 21)
- Joe Armstrong interviews Alan Kay - Erlang Solutions
- Keynote: The Forgotten Ideas in Computer Science - Joe Armstrong (Code BEAM SF 2018)
- Erlang: The Movie
- Erlang: The Movie II: The Sequel
- OTP 21.0 introduced a new :logger module. See Logging, and Logger Cookbook for more information.
- Erlang/OTP 21's new logger - Fred Hebert
- GetLumen.org: Project to make a compiler that can compile Erlang/Elixir and other BEAM languages to different environments rather than run on a virtual machine
- Lumen: Alternative BEAM implementation, designed for WebAssembly (implemented in Rust)
- Mnesia as a complete production database system - Chaitanya Chalasani (Code BEAM V)
- Breaking up with Mnesia - Dániel Szoboszlay & Onno Vos (Code BEAM V EU 21)
- Where Did I Put My Data? - Alex Peachey (EMPEX LA 2019)
- Mnesia: Docs
- Erlang Efficiency Guide - User's Guide | Profiling
- Stuff Goes Bad: Erlang in Anger - Fred Hebert | PDF
- Squeezing the most out of the server: Erlang Profiling - Facundo Olano
- Erlang Performance Lab (developer tool, not production monitoring): website | Youtube | Github | Twitter
- Tracking Down an ETS-related Memory Leak - Tyler Pachal
- Comparison of Erlang Runtime System and Java Virtual Machine - Tõnis Pool
- Do not guess, Trace - Kacper Mentel (RabbitMQ Summit 2019)
- Erlang Performance Lab - Michal Slaski (Erlang & Elixir Factory SF 2017)
- Faults, Scaling, and Erlang concurrency - Joe Armstrong (Stanford University seminar 2014)
- Useless performance optimisations on the BEAM for fun - Daniel Szoboszlay (Code BEAM STO 19)
- amoc (A Murder of Crows): simple framework for running massively parallel tests in a distributed environment: Github
- fprof - Time-profiling tool using trace to file for minimal runtime performance impact
- Erlang User's Guide: fprof - The File Trace Profiler
- observer: GUI tool for observing an Erlang system: User's Guide | User's Guide (PDF)
- observer_cli: Visualize Erlang/Elixir nodes on the command line - zhongwencool
- Tracing and observing your remote node - Erich Kist
- A Peek Inside Erlang's OTP - Steve Vinoski (GOTO 2016)
- Essential Erlang/OTP - Garrett Smith
- How to start processes with dynamic names in Elixir - Justin Toniazzo
- OTP Has Done It - Nick DeMonner (ElixirConf 2015)
- The Pooler Story: How I Learned OTP by Writing a Connection Pool - Seth Falcon (Erlang Factory SF 2013)
- The Zen of Erlang - Fred Hebert (Reactive Summit 2016)
- Intro to OTP in Elixir - Jesse J. Anderson (Full Stack Talks 2016)
- Erlang Micro-Services with all the Buzzwords - Chad Gibbons (Erlang Users Conference 17
- OTP in Elixir: Part 1 - Christian Di Lorenzo (Triangle |> Elixir)
- Erlang Design Principles
- [A Peek Inside Erlang's OTP - Steve Vinoski(https://www.youtube.com/watch?v=PkHZPTn1brc)]
- It's About the Guarantees - Fred Hébert
- OTP 23 Highlights - Kenneth Lundin
- Release Notes
- OTP Team update - Kenneth Lundin (Code BEAM V 2020)
- OTP 22 Highlights - Lukas Larsson
- Release Notes
- TLS logging improvements in OTP 22 - Péter Dimitrov
- OTP team update - Kenneth Lundin (Code BEAM STO 19)
- TLS logging improvements in OTP 22 - Péter Dimitrov
- Poolboy - Worker pool factory
- Poolboy - ElixirSchool
- Elixir Pooling with Poolboy - Pulkit Goyal
- Managing processes with Poolboy in Elixir - Akash Manohar
- Elixir Poolboy Example - TheStoneFox
- Ram: in-memory distributed KV store for Erlang and Elixir, able to automatically manage dynamic clusters (addition / removal of nodes) and to recover from net splits - Roberto Ostinelli: Github | Documentation
- persistent_term: Docs
- Clever use of persistent_term - Lukas Larsson
- Pyrlang: Python meets Erlang - Johan Sommerfeld (Code BEAM STO 19)
- Erlang node implemented in Python 3.5+ (Asyncio-based): Pyrlang.github.io | Github
- Rebar 3 (build tool) | Getting started | Basic usage | Tutorials | Documentation
- The new code formatter for Erlang: rebar3 format - Brujo Benavides
- Syn: scalable global Process Registry and Process Group manager for Erlang and Elixir, able to automatically manage dynamic clusters (addition / removal of nodes) and to recover from net splits - Roberto Ostinelli: Documentation | Github
- Erlang, the Unix way - "utilize Erlang's robust support for parallel computing in a project mostly comprised of Unix scripts. Let Erlang handle the chunk that can be parallelized, then hand it back to the calling script after it finishes"
- Erlang Socket API documentation
- An introduction to the new socket API - Raimo Niskanen (Code BEAM V 2020)
- Ponons: Github | Wiki
- Tsung: Github | User's Manual | Blog
- Lux: Test automation framework with Expect-style command execution - Håkan Mattsson | Docs
- LUX - an expect like test tool - Cons T Ahs and Hakan Mattsson (Code BEAM STO 19)
- PropEr Testing - Fred Herbert
- Testing Erlang and Elixir through PropEr Modeling - Fred Hebert
- Property-Based Testing with PropEr, Erlang, and Elixir: Find Bugs Before Your Users Do - Fred Hebert (💰NON-FREE💰)
- Erlang Language Server & VS Code extension & Boost your productivity with the Erlang Language Server - Roberto Aloi (Code BEAM V)
- 10 Essential Erlang Tools for Erlang Developers - Brujo Benavides
- From 10s to 1000s engineers - Anton Lavrik (Code BEAM V) | Slides
- Guide to Tracing in Erlang - Stratus3D
- Do not guess, Trace - Kacper Mentel (RabbitMQ Summit 2019)
- Erlang trace files in Wireshark - Magnus Henoch
- Recon Github
- Debugging with tracing in Elixir with recon_trace - Kai Wern | Serialized .livemd page you can run in LiveBook (LiveBook is great for documentation & teaching Elixir)
- Stuff Goes Bad: Erlang in Anger - Fred Hebert | PDF
- Intro to Erlang - Philip Clarke
- Erlang Express - Simon Thompson
- Writing Quality Code in Erlang - Garrett Smith (2014)
- Erlang User Conf 2016
- Functional Programming with Erlang
- Erlang Master Class (University of Kent): Class 1: Functional Programming | Class 2: Concurrent Programming | Class 3: OTP Behaviours & Releases | Erlang master classes
- Erlang videos (InfoQ)
- ErlangSolutions Youtube videos
- ICFP Erlang videos: 2018 | 2016 (10 videos)
- Erlang videos (Vimeo)
- Concurrency + Distribution = Scalability + Availability, a Journey architecting Erlang Systems - Francesco Cesarini (NDC London 2016)
- Introduction to Erlang - Steven Proctor (LambdaConf 2015)
- Faults, Scaling, and Erlang Concurrency - Joe Armstrong (Stanford Seminar)
- That's "Billion" With a "B": Scaling to the Next Level at WhatsApp - Rick Reed (Erlang Factory SF 2014)
- Scaling Distributed Erlang - Zandra Norman (ElixirConfEU 2016) | slides
- Rackspace interviews Erlang creators Joe Armstrong and Robert Virding
- Erlang Master Classes
- Erlang Factory SF 2015 videos
- An Introduction to Erlang (for Python programmers) - Paul Barry
- Intro to Distributed Erlang - Bryan Hunter
- Erlang User's Guide: Xref - The Cross Reference Tool
- Removing Erlang dead code with Xref - Brujo Benavides
- Erlog: Prolog interpreter in and for Erlang: Github
- Gleam.run | Documentation Std library docs | FAQ | Github
- The Gleam Book
- Crossing boundaries with Gleam - From functions to runtime - Raúl Chouza (Code BEAM America 2022)
- Gleam: Lean BEAM typing machine - Louis Pilfold (Code BEAM V 2020)
- Gleam Talk - Shayne Tremblay (Denver Elixir Meetup - July 2020)
- Type-Safe LiveView with Gleam - Quinn Wilton (ElixirConf 2020) | gleam-chip8 (Github)
- Using Gleam's 'try' syntax - Michael Jones
- Awesome Gleam
- Gleam OTP: Github
- Hamler: Haskell-style FP language running on the Erlang VM: hamler-lang.org | Cheatsheet | Guides | FAQ | Github
"Operating System and Support Service built on the world-class seL4®, Erlang, and Elixir"
- The Kry10 Secure Platform - Boyd Multerer
- Trust but Isolate The future of software - Boyd Multerer (Code BEAM America 2021)
- The seL4® Microkernel
- LFE.io
- The LFE Tutorial
- Sound on BEAM: Music in the Land of Distributed Lisp - Duncan McGreggor (Code BEAM V America 2021)
- LFE Quick Start with rebar3_lfe - Duncan McGreggor
- Casting SPELs in LFE - Conrad Barski, M.D. & Duncan McGreggor
- Command Reference rebar3_lfe
- Structure and Interpretation of Computer Programs (SICP): The LFE Edition - Harold Abelson, Gerald Jay Sussman, Julie Sussman, and Duncan McGreggor