Using Create React App with Phoenix
Check out how to use Create React App to quickly get off the ground with React development, and how to integrate that front-end application with a Phoenix-powered back-end.
New Blog - Embedded Elixir
The Nerves team has launched embedded-elixir.com to collect embedded Elixir/Erlang news. This week is a video round-up! http://embedded-elixir.com/post/2017-04-06-embedded-talks-in-march/
Logging slow Ecto queries: adventures in metaprogramming
Slow database queries are a regular thorn in my side.
Here’s a walkthru of how I log slow queries - including the backtrace to the caller - via metaprogramming.
ExPlay - Google Play API in Elixir
ExPlay is an unofficial Elixir API for Google Play, that let’s you authorize user accounts, get App information and download application APKs.
Check it out on Github.
Phoenix-Docker
https://github.com/Sly777/phoenix-docker
A Docker container for the Phoenix framework
This image is based on the official Elixir image and includes the features of that image.
Image Contents
- Elixir 1.4.2
- Phoenix 1.2.1
- Node JS 7.x
- Yarn (NPM)
Understanding Tuples and Atoms in Elixir
Let’s go over what are Atoms and Tuples, how they’re used in Elixir and why they’re powerful.
http://www.littlealchemist.io/2017-04-05-understanding-tuples-and-atoms-in-elixir/
Generating docs for your Elixir project - ElixirCasts.io
It’s easy to create documentation with ExDoc. In our latest episode we generate docs for an existing Elixir project.
Building a webserver in Elixir. - Peter Saxton
http://crowdhailer.me/talks/2017-04-29/building-a-webserver-in-elixir/
Talk given at the London Meetup group. First introducing the awesome, that is processes in Elixir. Second how to coordinate them and build web-server.
Elixir deployments: our data on what the community needs
I previously wrote up of a simple Elixir deployment method for AWS. At the same time as this, I asked the community at large to fill in a short survey around what they look for with deployments.
I’ve written up some conclusions from this, and linked the data for others to see, in this post:
https://medium.com/mint-digital/elixir-deployments-our-data-on-what-the-community-needs-cdc053a4285b
MBU: Mix Build Utilities
I published my first package, a collection of utilities for writing Mix build tasks: https://hex.pm/packages/mbu
Docs: https://hexdocs.pm/mbu/readme.html
tl;dr Logging, dependencies, watch support and utility functions for Mix tasks.
More info about my motivations: https://blog.nytsoi.net/2017/03/24/fbu-frontend-build-utilities
Subscribe to messages with pattern matching
I wrote a blog post about how to save a pattern to be used later in pattern matching.
My use case was publish/subscribe, where I needed to subscribe to terms with a pattern instead of a topic.
https://medium.com/@lasseebert/subscribe-to-messages-with-pattern-matching-8723f5121135
ex_lcd updated to v0.4.0
I have updated ex_lcd to better handle external dependencies. No new functionality is included in this release.
Released v0.4 of phone
Just released v0.4 for phone, a parser to extract information from telephone numbers without consulting any external source.
This release improves performance a lot, going from 1ms in worst cases to 10µs. This performance gain is due to some complexity in the lib, so expect a long compilation time.
In this release was added too a valid?/1
function, to verify if its a valid telephone number without parsing.
hex
github
Benchmarking Elixir Benchmarking Tools
In my latest blog post I compare three well-known benchmarking libraries available for Elixir, focusing on their pros and cons with some sample codes to help in understanding. https://blog.digitalnatives.hu/benchmarking-elixir-benchmarking-tools/
ShorterMaps 2.0 released: ES6 map shorthand for Elixir
Tired of the duplication in writing code like %{id: id, first_name: first_name, last_name: last_name}
? Dry it up with ~M{id, first_name, last_name}
.
Here are the syntactic variants the macro exposes:
-
Atom keys:
~M{a, b}
=>%{a: a, b: b}
-
String keys:
~m{a, b}
=>%{“a” => a, “b” => b}
-
Structs:
~M{%Person id, name}
=>%Person{id: id, name: name}
-
Pinned variables:
~M{^a, b}
=>%{a: ^a, b: b}
-
Ignore matching:
~M{_a, b}
=>%{a: _a, b: b}
-
Map update:
~M{old|a, b, c}
=>%{old|a: a, b: b, c: c}
-
Mixed mode:
~M{a, b: b_alt}
=>%{a: a, b: b_alt}
~M
and ~m
(atom vs. string keys) can be used to replace maps anywhere in your code: creating maps from existing variables, creating new variables while destructuring maps, pattern matching in lambdas, function heads or case statements.
See it on Github. Get it with {:shorter_maps, “~> 2.0”},