#elixir-and-erlang
22 posts
2017 - June
2 posts2016 - December
3 posts2016 - February
1 post2015 - December
8 posts- Ex Pusher Lite - Part 2 - First Working Core!
- Ex Pusher Lite - Part 1: Phoenix Channels and Rails apps
- Erlang's Ping Pong (tut15) in Clojure and Elixir
- Ex Manga Downloadr - Part 5: Making it more robust!
- Ex Manga Downloadr - Part 4: Learning through Refactoring
- The Obligatory "Flame War" Phoenix vs Node.js
- Ex Manga Downloadr - Part 3: Mangafox Support!
- The Obligatory "Why Elixir?" Personal Take
2015 - November
8 posts- "Yocto Services"! And My First Month with Elixir!
- Elixir 101 - Introducing the Syntax
- ExMessenger Exercise: Understanding Nodes in Elixir
- Observing Processes in Elixir - The Little Elixir & OTP Guidebook
- Phoenix "15 Minute Blog" comparison to Ruby on Rails
- Ex Manga Downloadr - Part 2: Poolboy to the rescue!
- Ex Manga Downloader, an exercise with Elixir
- My first week learning Elixir
2017 - June
2 postsEx Manga Downloadr - Part 7: Properly dealing with large Collections
After Flow took over 3 minutes, I replaced it with Task.async_stream and got the old timings back. The solution simplifies the code, but reduces control and leaves downloads without retry.
Ex Manga Downloadr - Part 6: The Rise of FLOW
I replaced Poolboy and a custom GenServer with Flow to simplify parallel scraping. The code became more readable, but took over 3 minutes, versus less than half that in the previous version.
2016 - December
3 postsEx Pusher Lite - Part 3 - A Complete Solution
I built a Pusher-inspired service with Phoenix and Elixir, connecting a Rails application through WebSockets and an API and distributing messages across nodes. It covers many cases, but is not production-safe yet.
Elixir Phoenix App deployed into a Load Balanced DigitalOcean setup
The author builds a two-node Phoenix cluster on DigitalOcean with HAProxy and PostgreSQL, and gets distributed WebSockets running with Erlang. It works, but edeliver is slow and login still fails intermittently.
Coherence and ExAdmin - Devise and ActiveAdmin for Phoenix
Coherence and ExAdmin bring Phoenix closer to Devise and ActiveAdmin, while a simple Plug adds authorization for the admin area. They ease the start, but do not remove OTP and distributed-systems’ learning curve.
2016 - February
1 postElixir Pipe Operator for Ruby: Chainable Methods
The Chainable Methods gem passes each call’s return value as the next call’s first argument, making Ruby transformations more readable and testable. It uses method_missing for expressiveness, not speed.
2015 - December
8 postsEx Pusher Lite - Part 2 - First Working Core!
Part 2 turns ExPusherLite into a working Phoenix core with apps, keys and secrets, authentication, channels, broadcasts, and Heroku deployment. Tests were quick, but security remains fragile.
Ex Pusher Lite - Part 1: Phoenix Channels and Rails apps
Part 1 replaces Pusher with a Phoenix server using Channels, WebSockets, and Basic Auth while keeping the Rails client and SuckerPunch. The clone works under your control, but remains incomplete.
Erlang's Ping Pong (tut15) in Clojure and Elixir
A Ping Pong exercise brings Erlang, Clojure, and Elixir together, highlighting pattern matching, macros, and the BEAM’s AST. The author sees power in all three, but still prefers Erlang to Lisp parentheses.
Ex Manga Downloadr - Part 5: Making it more robust!
MangaFox timeouts expose a flaw in Ex Manga Downloadr’s Workflow. The author uses Task.Supervisor and limited retries to catch HTTPotion errors, leaving GenServer refactoring as technical debt.
Ex Manga Downloadr - Part 4: Learning through Refactoring
Refactoring Ex Manga Downloadr replaces six repeated blocks with macros, improves Floki usage, and uses online tests to validate parsers. The project reaches version 1.0.0 with two fewer files.
The Obligatory "Flame War" Phoenix vs Node.js
In an admittedly unfair Siege benchmark, Node.js leads during I/O warmup, but Phoenix handles requests that block for one second better as concurrency increases.
Ex Manga Downloadr - Part 3: Mangafox Support!
Ex Manga Downloadr can now download from Mangafox using custom parsers, dynamic source selection, gzip decompression via zlib, and download resumption. Reducing the pool helps, but the site remains unstable.
The Obligatory "Why Elixir?" Personal Take
The author explains why he plans to combine Rails and Phoenix and argues for Elixir in concurrent, distributed systems. Immutability, schedulers, and supervisors make fault tolerance more approachable.
2015 - November
8 posts"Yocto Services"! And My First Month with Elixir!
After an intense month studying Elixir, the author suggests thinking of BEAM processes as “Yocto Services”: supervised GenServers that fail independently, exchange messages, and talk across nodes.
Elixir 101 - Introducing the Syntax
Using ExMangaDownloadr examples, I introduce pattern matching, recursion, Lists, Tuples, Keyword Lists, and the pipe operator to show how Elixir makes Erlang primitives accessible.
ExMessenger Exercise: Understanding Nodes in Elixir
I refactored a pre-1.0 terminal chat into an Umbrella app and explored Nodes, names, cookies, and remote GenServers. The result is closer to distributed peers than a traditional TCP client and server.
Observing Processes in Elixir - The Little Elixir & OTP Guidebook
Using GenServer, Supervisor, and Observer, I show a worker being restarted, a pool of five processes being replenished, and the runtime staying active, though the worker’s state is lost.
Phoenix "15 Minute Blog" comparison to Ruby on Rails
I compare a blog with nested resources in Phoenix and Rails, from Mix through ExUnit. Phoenix is more explicit and promising for concurrent microservices, but still doesn’t replace the Rails ecosystem.
Ex Manga Downloadr - Part 2: Poolboy to the rescue!
I replaced manual batches of 80 requests with a GenServer Worker using Poolboy and a Supervisor, backed by a pool of 50 processes. Akira’s roughly 2,200 pages took under 50 seconds, limited by MangaReader.
Ex Manga Downloader, an exercise with Elixir
I built an Elixir scraper that parses MangaReader, downloads images with parallel Tasks, and creates 250-page PDFs for Kindle. The pipeline works, but timeouts limit it to about 80 requests.
My first week learning Elixir
In one week and roughly 42 hours, I learned Elixir fundamentals, processes, and OTP, though I still didn’t feel fully comfortable. My path covers Programming Elixir, Elixir Sips, and exercises before Phoenix.