New version 0.3.0 of Incident
I just released a new version of my library that helps you with Event Sourcing and CQRS applications. Now you can use Postgres to store events and projections with new adapters. https://hex.pm/packages/incident #myelixirstatus
Running a Gatsby blog inside a Phoenix app
I wrote a simple guide on running a Gasby blog inside a Phoenix app. The basic approach I used was:
- Create a new Phoenix app
- Create a new Gatsby project from their hello-world starter inside the assets directory of the Phoenix project
-
Set up a symbolic link
assets/static
directory to Gastby’spublic
directory -
Update
endpoint.ex
and add that new linked directory to the whitelist forPlug.Static
Learning Phoenix Live Views! With Illustrations!
Adopting Phoenix Live Views! We prepared a meetup at Mexico City, I made my own illustrations for explain it and then I wrote this blog post! http://carlogilmar.xyz/blog/posts/live_views/
Sophie DeBenedetto on Excrypt and Railway - Smart Software S2E10
Latest episode: Sophie DeBenedetto on Excrypt and Railway. We talk with Sophie about her first experiences with open source and contributing to the Elixir School, and some of the challenges of working with encryption.
ElixirMix Podcast 068 - Contributing to the Elixir Community with David Bernheisel & Cory Schmitt
In this episode of ElixirMix, we talk with David Bernheisel and Cory Schmitt about contributing to the Elixir community. We discuss how to get started, ways to do it, what you can expect, the value of human relationships, and much more!
ex_check now runs npm test & empowers umbrellas
ex_check was under active development in last few weeks and it now comes with a bunch of new handy features:
-
mix check now detects & runs npm test in Phoenix projects that have
assets
directory withpackage.json
in it. It’s really consistent with existing Phoenix setup as now mix check will test both your back-end & front-end code just as mix phx.server compiles & watches the two for you. More info in feature request. -
mix check now empowers umbrella projects, in particular the experience of running tools recursively from the umbrella root, with a handful of extra benefits over the basic Mix task recursion (parallel execution, clearer presentation & more). More info in docs.
…and a bunch more additions & fixes - all listed in Changelog.
Brief reminder: ex_check provides a mix check task that allows to efficiently run all code analysis & testing tools in an Elixir project with a single command. With no configuration it catches compilation warnings, runs ExUnit, Credo & more. It’s a real convenience for all Elixir & Phoenix projects to ensure that new code is “good to go” & then to recheck it on CI in the exact same way.
Elixir Performance – Using IO Data Lists
Latest post from Eric on the SmartLogic blog:
After watching Johanna Larsson’s ElixirConf 2019 talk, High Performance String Processing Scripts in Elixir, I was inspired to work on some of my side projects to make them use IO lists instead of plain strings.
https://blog.smartlogic.io/elixir-performance-using-io-data-lists/
Tarearbol.Scheduler → Cron on Processes
Tarearbol v0.13.1
includes lightweight cron
scheduler fully based on spawn processes. Allows conditional job termination, rescheduling, keeps track of last execution outcome.
Zero boilerplate is required.
Comes with cron
record parser, returning all the upcoming events as Stream
, Tarearbol.Calendar.{beginning_of,end_of}/2
working properly with any calendar (not only Calendar.ISO
.)
Getting Started with Phoenix and Kubernetes
A complete guide to deploying a Phoenix application to a new and empty Kubernetes cluster.
We’ll cover all the moving pieces, including:
- creating the cluster
- running a private docker registry
- databases and migrations
- the changes needed to deploy the application, and
- exposing the application to the world with automatic certificate management.
https://quan.io/blog/deploying-phoenix-to-kubernetes-from-scratch/
How to Create Desktop Application with Elixir?
Can we create desktop application with elixir? Let’s figure it out.
https://puddleofcode.com/story/how-to-create-desktop-application-with-elixir
Rambo 0.2.0 released
Rambo is the easiest way to run external programs.
Stream your command’s output while it runs with the :log
option. Stop your command with kill/1
. Remove unused binaries with :purge
setting.
Formulæ and Lazy Combinators
Using macros and bare AST to implement lazy combinations and permutations.
l = for c <- ?a..?z, do: <<c>> # letters list
with {stream, :ok} <- Formulae.Combinators.Stream.permutations(l, 12),
do: stream |> Stream.take_every(26) |> Enum.take(2)
#⇒ [["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"],
# ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "l", "w"]]
http://rocket-science.ru/hacking/2019/09/06/formulae-and-lazy-combinators
Smart Software: Shanti Chellaram on Pri-Queue and raft_erl
New episode! Shanti Chellaram on Pri-Queue and raft_erl; learn about priority queues, bootstrapped skew binomial heaps, and Shanti’s advice for someone just starting out in Elixir.
Don't tell me how to test my software
There are lot of opinions about software testing. Unit vs integration testing is one of them. I’ve written a post that explains how to avoid making decisions based on conflicting opinions and use facts and logic instead.
https://medium.com/@mkaszubowski/dont-tell-me-how-to-test-my-software-4b87038ed321
3 Key Ideas Behind The Erlang Thesis
Elixir is built upon Erlang. To understand many concepts for Elixir, I need to learn more about Erlang. Without any doubt, the paper written by its creator, making reliable distributed system in the presence of software errors, is the best way to learn why Erlang was designed in this way.
This post is my summary of this paper, which are 3 key points that make Erlang such a great language.
- Concurrency Oriented Programming
- Abstracting Concurrency Out
- The philosophy of falling back to an easier task when an error occurs
https://yiming.dev/clipping/2019/09/04/3-key-ideas-behind-the-erlang-thesis/
SmartLogic's ElixirConf19 Highlights
Half our team headed to ElixirConf last week; here are a collection of our highlights from favorite talks to hallway conf moments and more.
Interceptor v0.5.0 released! Intercept your functions by using an @intercept annotation
This release introduces the Interceptor.Annotated
module, that you can use with @intercept true
annotations to intercept your function modules.
If you don’t like to wrap your function definitions with a Interceptor.intercept/1
do block, maybe @intercept true
will suit you best.
Personal notes from Elixir Conf 2019
Last week I attended Elixir Conf 2019 and these are my personal notes: https://pedroassumpcao.ghost.io/personal-notes-from-elixir-conf-2019/ #myelixirstatus
TIL: Understanding a specific dialyzer warning
Today I spend a good three hours trying to understand why dialyzer was yelling at me. I think I understood it at last, and I blogged about it:
ElixirMix Podcast 067 - What's New with Nerves with Frank Hunleth
In this episode of ElixirMix, we talk with Frank Hunleth to get an update on the Nerves Project. We discuss announcements, Elixir Circuits, Justin Schneck’s ElixirConf Keynote, the work to make NIFs available and safe, and much more!