Lessons learned from a big Elixir refactoring
I’ve just finished my first really substantial refactoring of someone else’s code in Elixir. I wanted to make some changes to Benchee so that it would be easeir to add another feature later on. We needed a new data model, and there were some concepts that I felt needed a little shaking out and naming. Today I’m going to cover some of the reasons for this refactoring, as well as some of what I learned both specifically and in general about refactoring in Elixir.
Choosing Elixir for the Code, not the Performance
I wrote up some thoughts on how elixir helps you improve your code and why we should choose it for the code, and not just the performance. Because in the end, code clarity, understandability and extensibility is what mostly matters more than raw performance.
https://pragtob.wordpress.com/2017/07/26/choosing-elixir-for-the-code-not-the-performance/
ElixirStatus is 2 years old!
This was my first “complete” Phoenix project and I am amazed that it’s already been two years!
http://trivelop.de/2017/07/25/elixirstatus-is-two-years-old/
Clustering your Elixir application on AWS inside an Auto Scaling Group
This post describes how to cluster your Elixir application in an Auto Scaling Group with changing IPs.
https://blog.pryin.io/clustering-your-elixir-app-in-aws-auto-scaling-group/
An alternative approach for sensitive file uploads
Another post, this time about an alternative approach for sensitive file uploads: https://medium.com/@andrew_dryga/alternative-approach-for-sensitive-file-uploads-53f8f62b5d72
Event Bus Implementations with Elixir
Event driven architecture pattern is a distributed asynchronous architecture pattern to create highly scalable reactive applications. The pattern suits for on every level application stack from small to complex ones. The main idea is delivering and processing events asynchronously. https://medium.com/@mustafaturan/event-bus-implementation-s-d2854a9fafd5
Event Bus Library
I implemented a simple ‘event bus’ with Elixir: https://github.com/mustafaturan/event_bus @mustafaturan
Videos from #EFLBA2017 are online now
All videos from #EFLBA2017 are already on @YouTube, watch them!
Tarearbol :: handy task manager to retry/ensure tasks execution
https://github.com/am-kantox/tarearbol
Tarearbol
is a lightweight application that transparently manages Task.Supervisor
under the hood. It allows to ensure task completion, with a configurable number of attempts, return values to be treated as “correct” (read: those stopping retry loop,) delay between attempts and callbacks on retries, fail and success.
Visualise Elixir apps performance with charts, flame graphs and plotting
http://iacobson.net/performance-visualization-in-elixir/
The previous article was about tools to measure and improve the performance of an Elixir application. Now we look for ways to visually represent the benchmarks and the performance improvements.
How to use Elixir with Docker?
If you wonder whether you can run your Elixir application in a Docker container, I came up with a ready solution for that:
https://blog.lelonek.me/how-to-use-elixir-with-docker-836c9b4a25b0
Alchemist.vim 2.8.0
New version of Alchemist.vim includes a security patch and it’s important that you update the plugin ASAP.
ElixirMock: Inspectable mocks based on real elixir modules.
ElixirMock is new library for creating inspectable mocks based on real elixir modules for testing.
ElixirMock’s mocks have the same api as the modules they are created from and are:
- Easy to create from already-defined modules
- Do not modify or replace the modules they are based on
- Are independent of each other
- Allow you to inspect calls made to them, and much more!
See the Getting started guide for a gentle introduction. API docs available here
Guide to setting up HTTP/2.0 with Ace server
Ace 0.10.0 introduces support for HTTP/2 with the following features.
- Stream isolation; one process per stream
- Bidirectional streaming; stream data too and from clients
- TLS(SSL) support via ALPN; data encrypted in transit
- Raxx interface; simplicitfy for request/response interactions
Sobelow, the Phoenix vulnerability scanner - v0.4.1
Changes include:
- Save settings in a config file
- JSON output formatting
- Fuzzy finding for secrets
- Bug fixes and improvements
Install the latest update with mix archive.install hex sobelow
Recurring Tasks in Elixir
Carrying out recurring tasks is a common undertaking for any web application. Follow along with this article to build a recurring task in pure Elixir. 🍉
Creating slugs for Ecto schemas
This article covers a process of creating slugs for Ecto models with different use cases. https://medium.com/wemake-services/creating-slugs-for-ecto-schemas-7349513410f0
Keeping Elixir Packages Updated
Here is a short article on how to use some simple mix
commands to help keep your Elixir packages updated.
http://tosbourn.com/keeping-elixir-packages-updated/
It contains a handy script you can use to make keeping Umbrella projects updated a breeze.
Phoenix Inside Out Series - Complete version now available
Last month I released a beta version of the series. On July 18th, I have launched the full release of this series.
It contains 3 books and 1 booklet.
- Mastering Phoenix Framework
- Garuda - Rebuild Phoenix
- Ecto Cookbook
- Blueprint for Phoenix Context
Read more about the book and buy it at: https://shankardevy.com/phoenix-book/