ElixirMix Podcast 064 - Refactoring Elixir with Hubert Lepicki
In this episode of ElixirMix, we talk with Hubert Łępicki about several ways to refactor out excessive code in controllers. We also talk about alternatives to Phoenix contexts, embedded schemas, connection pools and much more!
DynamicManager on top of DynamicSupervisor
Tarearbol gets DynamicManager to ease building the collections of supervised workers with similar behaviours, e. g. watchers for different changing entities.
-
Scaffold for the supervised
DynamicSupervisor - No code for managing processes required
- Implementation is as easy as 4 callbacks
- Extremely easy testing
- Behaviour-driven consumers
- Consistent state and callbacks on state changes (like restarting)
Cleaning up your Elixir Code
Just because you use a functional language, it doesn’t mean your code is going to be clean.
This articles show how you can use hexagonal/ports & adapters/onion layering in order to clean up your elixir code.
Case study: Inky - An Elixir library
Covering some of the process rather than the detailed code of porting a python library for a hobbyist eInk display to Elixir. A bit of Nerves, a bit of Scenic, a bunch of refactoring for testability. Guest appearance by the Erlang wxWidgets library. References available for diving into the code. This is more of an overview than a code-along.
Just Enough Erlang
Erlang can be an intimidating language, but it doesn’t have to be. This article explores the more common features with the goal of enabling you to more easily include Erlang libraries in your Elixir projects, and to read and understand the documentation.
Segment.com API library 0.2 released
After coming back to full-time Elixir IC work. I’ve picked back up my Elixir Segment library I first release in 2016 and have reimplemented with batch and retry functionality. Segment.com is a popular analytics and customer data integration layer.
For people using the original library (0.1.x) in production, the new library (0.2.x) supports the same interface but will now, by default, send events in batch to Segment.
Smart Software S2E5 René Föhring on Credo
We talked with René about Credo; why he built the library, how it’s different from other code analysis tools, and lessons he’s learned working in the open source community.
ElixirTalk Podcast Episode 151 feat. Dave Thomas and Brian Mitchell - The Future of Elixir
In this special episode of ElixirTalk we are joined by Dave Thomas and Brian Mitchell where we continue a discussion that we had at EMPEX NYC this year as a fishbowl style format. If you haven’t yet seen the talk, you can do so here –– probably best if you watch before listening, but you can also listen to this as a standalone episode. This episode is long, but is packed with some great tidbits about Elixir and Erlang and we go into considerable depth about how applications work today as well as outlining a vision for the future.
OTP Backed Web App Part 2 (Alchemist's Edition)
Part 2 in our series on building a simple OTP backed web app is out: https://elixircasts.io/otp-backed-web-application-part-2
ElixirMix Podcast 063 - Designing Elixir Systems With OTP with Bruce Tate and James Gray
In this episode of ElixirMix, we talk with James Edward Gray II and Bruce Tate about their new book Designing Elixir Systems with OTP: Write Highly Scalable, Self-Healing Software with Layers, their experiences with Elixir, getting the life-cycle right, starting with the right data, and much more!
Genex - Genetic Algorithm Library
Hey all,
I wanted to get experience writing libraries in Elixir so I started a project called Genex. Genex makes it easy to write Genetic Algorithms in Elixir.
https://github.com/seanmor5/genex
As of right now, the project supports several crossover, selection, and mutation methods, visualizations of the population and solution, and a basic Genealogy tree representing the history of the population. Additionally, Genex allows for full customization of all stages in the Genetic Algorithm. You can define your own methods for crossover, selection, mutation, population evaluation, population seeding, and generational advancements.
The project is very new; however, it’s still fun to mess around with. Hope you guys enjoy!
How we deal with behaviours and boilerplate
We at BetterDoc are big fans of mox.
In this post we are going to explore how we concretely use behaviours for mocking, the pattern we follow to access and call their implementations, and how we used metaprogramming to reduce boilerplate to an absolute minimum.
Use Phoenix LiveView to Enhance Observability
Application observability is becoming more and more important nowadays. Phoenix LiveView is a perfect technical solution for this use case. In this post, we will see how important observability is and why Phoenix LiveView is a perfect fit.
OTP Backed Web App Part 1 (Alchemist's Edition)
The first part in our series on building a simple OTP backed web app is out: https://elixircasts.io/otp-backed-web-application-part-1
Cachex v3.2.0 released
Cachex v3.2.0 has just been released, with some improvements and API additions such as:
-
Adding a new API
import/3to re-import records previously exported usingexport/2. - Allowing the ability to enable table compression to reduce memory.
- New benchmark options to test with/without compression enabled.
- Supported test matrix bumped to include latest Elixir/OTP combinations.
Check it out and feel free to give your feedback <3
Oban Recipes Part 3: Reliable Scheduling
The third recipe looks at patterns for recursively scheduled jobs without any duplication and the mechanisms that make it possible.
Smart Software Podcast - Meryl Dakin on Token Alchemist - Elixir Internals
Smart Software S2E4 is out today! We talked with Meryl Dakin from the Flatiron School about moving from Ruby to Elixir, her library Token Alchemist, and more. https://podcast.smartlogic.io/season-two-dakin
DateTimeParser
I’m excited to announce that TaxJar has developed and released an open-source library to parse a string into a DateTime! It’s really helpful if you need to accept user input of dates and/or times, without knowing the format in advance.
Check it out:
Introducing Knigge - An opinionated way of dealing with behaviours
Knigge is a new package which allows you to easily define “facades” for your behaviours.
Checkout our blog post on the motivation and our train of thought!
Announcing Cainophile - Postgres change data capture tool
Officially launching my Postgres change data capture tool written in Elixir today. It has a lot of work remaining but it might already be useful! https://bbhoss.io/posts/announcing-cainophile/
