Elixir macros return AST

One of the basics in understanding Elixir macros is the fact that Elixir macros return AST.

Elixir Wizards S4E17 Johnny Winn on Kitchen Secrets and Beautiful Coding

Latest episode of Elixir Wizards is out today! Check it out here: https://smartlogic.io/podcast/elixir-wizards/s4e17-winn/

Membrane, Phoenix, Nerves

Binary Noggin released a new post about using Membrane, Phoenix, and Nerves to build a streaming video service.

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

Beware of the Software: A Screencast pt. II

About two years ago I did the first episode of a screencast called Beware of the Software. A couple of days later, I burned out and it was put on a pile of “things to handle later”.

I now feel confident enough to say the second episode is here: https://mendes.codes/blog/two-years-ago-i-did-a-screencast

Avrora: explicit split between schema reader and schema writer

Starting 0.13 you can have an explicit split between schema reader and schema writer.

This means that you don’t need to have local files with schemas if you would like to rely only on the schemas already registered in the registry.

config :avrora,
  # ...
  registry_schemas_autoreg: false

If you disable auto registration and have schema registry configured, two major behavior changes will happen:

  1. Local files will be completely ignored for schema resolution
  2. For encoding and decoding, the schema will be retrieved from the registry (see n.1)

For the case when the schema registry is not configured – behavior should remain the same 😉

Also, an Avrora.Encoder module gets some attention and was refactored. It was split into several submodules which implement the same behavior. It allows code to be reused and well tested separately. But everything comes at a cost, hopefully pros and cons should balance each other.

Happy coding everyone and any feedback is welcome 🤗

Highlights from ElixirConf 2020

We put together a roundup of our team’s favorite talks and moments from ElixirConf 2020:

https://blog.smartlogic.io/elixirconf-2020-recap/

Enumerable: Custom Data Structures in Elixir, part 1

Follow along in beginning to create an Array data structure built on tuples, and learn about the Enumerable protocol.

https://blog.brettbeatty.com/elixir/custom_data_structures/enumerable

ThinkingElixir 012: All a Flutter over NIFs and Ports with Connor Rigby

In episode 12 of Thinking Elixir, we catch up with Connor Rigby and learn about his recent Flutter work for Nerves. We take this opportunity to get his perspective on when to choose NIFs or Ports for native integrations, how to make NIFs more portable, get a recommendation for multimedia processing and much more!

Podcast Episode

Elixir Protocols — Implementing Inspect over custom data type

Protocols are one of the concepts we don’t use often in our projects. Check out how we can redesign the output for a specific data type while inspecting.

Note:

Protocols are not limited to this feature.

Article Header Image

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.

Prototyping with Phoenix LiveView: A Perfect Play Queue III

This time we went deep into JS / LiveView interop, implemented track position scrubbing, and added intelligent play queue auto-scroll behavior, that shows the currently playing track on the top of the queue, if user doesn’t scroll to a different place manually.

https://youtu.be/cV4O0bKftzQ

Preparing to Refactor with Better Unit Tests

TL/DR: The last time we looked at this code, we wrote property tests. The property tests used generators to create input, but the actually testing of the invariants was just regular Elixir code. In this post, we’ll look at rewriting those property tests as standard ExUnit tests, giving us better unit tests. Link: https://medium.com/perplexinomicon-of-philosodad/preparing-to-refactor-with-better-unit-tests-51e27659fe5e

7th video in the series about building cryptocurrency trading bot in Elixir

7th video in the series about building cryptocurrency trading bot in Elixir - this time we will build a BinanceMock application

We will create a new application called BinanceMock. It will have the same functionality as the Binance module so we will be able to use them interchangeably. In the future episode(s) the BinanceMock will become a foundation to allow us to perform backtesting. Besides creating the application itself, we will also modify the leader and the trader to reference the config to figure out which client to use instead of the previously hardcoded Binance module.

Link: https://youtu.be/R5Z9k3ILu78

Designing For Elixir Compiler Hints

There are some nice new features coming in Elixir 1.11, and one many folks are excited about are some new compile-time checks. The one I’ve heard the most excitment about is the the compile-time check for non-existent fields in structs. But, I’ve got some concerns about how folks might use this and how it might change application design.

http://devonestes.com/designing-for-elixir-compiler-hints

Elixir Range— A Strange Experience on Enumeration

Check out a strange experience while enumerating over ranges in Elixir.

Article Header Image

Happy Coding !!

🍡 Add flavors to your context function without the hassles.

Condiment makes it easier to build keyword-based API for context functions.

Read more about the rationale/usage over on the repo - https://github.com/edisonywh/condiment

O tempora, o mores!

The library to deal with the time slot series.

Documentation.

Blog post.

Building a Huffman encoder and decoder using Elixir

In this post we walk through building a Huffman encoder and decoder in Elixir and explore the concepts along the way. https://tiemenwaterreus.com/posts/compession-and-huffman-coding-with-elixir/

Interview with José Valim, creator of Elixir

Interview with José Valim: “Elixir is great for everything that runs on top of a socket”

Read the interview

Big changes coming in Horde 0.8.0

Horde 0.8.0 was released this week, including some big changes. Click the link below to find out more!

https://moosecode.nl/blog/whats_new_horde_0_8_0

MOBA - A community-made RPG built with LiveView

MOBA is a great opportunity for those who want to have a more hands-on experience with Phoenix LiveView beyond building simple counter demos. It’s first and foremost a fun learning experience for all developer skill levels, while also being an actual product with real users deployed in a production environment.

Check out the project or have a go playing the game