Introducing Wallaby – Concurrent Feature Tests for Elixir and Phoenix
Feature tests are one of the best ways to ensure reliability and consistency for web applications. But, as we’ve discussed previously feature tests can become a performance bottleneck for a large t…
Not really, you can run ICMP socket as a regular user if your user ID is within sysctl net.ipv4.ping_group_range. However that will require you to use datagram socket instead of raw socket: {:ok, socket} = :socket.open(:inet, :dgram, :icmp) It also has slightly reduced API, as for example on Linux you cannot specify id and seq fields for ICMP packet, as these will be always set for you. There is library that I have created in the past that provide slightly higher API for ICMP sockets (still q...
After working for years on different organizations, one common theme is scheduling background jobs. In this article, I’ll share my experience with Oban, an open-source job processing package for Elixir. I’ll also cover some features, like real-time monitoring with Oban Web and complex workflow management with Oban Pro.
In a LiveView project I'm working on, I had to add a web worker. I was a bit unsure of how to do this, and was worried I'd have to do some esbuild config manipulation, but it turned out to be quite simple.
For readers reading in the far future,
Erlang also offers graphs based on ETS (digraph module), and sets of sets (sofs). digraph is quite approachable and digraph_utils has a nice collection of algorithms. They’re not really functional, though.
Elixir Logger is one of the OTP applications distributed with the Elixir core, and it supports logging with metadata out-of-the-box. Learn the basics of logging with metadata in Elixir as well as some lessons in how to organize that metadata effectively.
Now we get to the significantly more disruptive stuff. The things that while Tigris is an S3-compatible API it also provides features that enable entirely new use-cases and push the boundaries of what you can do with object storage. Let's see if we can't set your internal constraint-solver aflame with possibilities.