Welcome! Submit your posts for the next ElixirWeekly!

Prometheus, PostGIS and Phoenix Part 2

In the final part of this series, we wrap up our Prometheus monitoring stack, write a stress tester with Erlang’s httpc, and make our Grafana dashboards dance! https://akoutmos.com/post/prometheus-postgis-and-phoenix-two/

Grafana Dashboard

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’s public directory
  • Update endpoint.ex and add that new linked directory to the whitelist for Plug.Static

https://alchemist.camp/articles/gatsby-phoenix

Shameless plug: Check out @elixirstatus' other community project:

Credo, a new static code analysis tool that acts as a code linter, but also focusses on teaching coding practices and code consistency.

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.

https://podcast.smartlogic.io/season-two-debenedetto

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!

Podcast Episode

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:

  1. mix check now detects & runs npm test in Phoenix projects that have assets directory with package.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.

  2. 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.)

ElixirWeekly: The Elixir Community Newsletter, covering community news you easily miss, shared on ElixirStatus and the web, in one email every Thursday.

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. Run your command. Send EOF. Get output.

Stream your command’s output while it runs with the :log option. Stop your command with kill/1. Remove unused binaries with :purge setting.

https://github.com/jayjun/rambo

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.

https://podcast.smartlogic.io/season-two-chellaram

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.

  1. Concurrency Oriented Programming
  2. Abstracting Concurrency Out
  3. 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.

https://blog.smartlogic.io/smartlogic-at-elixirconf19/

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:

https://medium.com/@lasseebert/til-understanding-dialyzers-the-pattern-can-never-match-the-type-e948385837d