Req API Client Testing

A guide through different testing approaches with Req-based API clients. | Continue reading


@dashbit.co | 1 month ago

Supercharge your app: latency and rendering optimizations in Phoenix LiveView

LiveView’s unique integration between server and client allows it to drastically optimize both latency and bandwidth, leading to user experiences that are faster and smoother than any other client-server combo out there. This weekend we have merged a pull request that goes one st … | Continue reading


@dashbit.co | 6 months ago

Elixir and Machine Learning: Q3 2023 roundup

Back in 2021, the Elixir community started an effort to bring Elixir and Machine Learning together. Over the last three months, the community has released new versions of several key projects as well as the announcement of new libraries that build upon the existing foundation. Th … | Continue reading


@dashbit.co | 7 months ago

Why the dot (when calling anonymous functions)?

In this article, I will explain why Elixir has a dot when calling anonymous functions. I have explained this elsewhere in forums and mailing lists but I guess an article makes it more official. In other words, Elixir has this: some_fun = fn x, y -> x + y end some_fun.(1, 2) #=> 3 … | Continue reading


@dashbit.co | 8 months ago

Livebook as an educational tool

We welcome Alex Koutmos as a guest writer on our blog, to share his experiences on using Livebook as a learning tool for Elixir. For the past few months, Hugo Baraúna and I (Alex Koutmos) have been working on a new book for Elixir called Elixir Patterns. When we started brainstor … | Continue reading


@dashbit.co | 1 year ago

Rustler Precompiled: Use precompiled NIFs in your Elixir projects

Continue reading


@dashbit.co | 2 years ago

Elixir and Machine Learning: Nx v0.1 released!

We are glad to announce Nx (Numerical Elixir) v0.1 has been released! For those unfamiliar, Elixir is a dynamic, functional language for building scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant … | Continue reading


@dashbit.co | 2 years ago

Presenting PLDS

Phoenix LiveDashboard is helping teams to quickly visualize and identify problems in systems running in production. It has a beautiful interface and can be plugged to any Phoenix application out there. Until recently you could only install LiveDashboard within Phoenix apps. Now t … | Continue reading


@dashbit.co | 2 years ago

Broadway 1.0 Released

Continue reading


@dashbit.co | 2 years ago

Surface and Phoenix LiveView – what comes next?

Continue reading


@dashbit.co | 2 years ago

Livebook: A collaborative and interactive code notebook for Elixir

Continue reading


@dashbit.co | 3 years ago

Announcing Livebook

We are glad to announce Livebook, an open source web application for writing interactive and collaborative code notebooks in Elixir and implemented with Phoenix LiveView. Livebook is an important step in our journey to enable the Erlang VM and its ecosystem to be suitable for num … | Continue reading


@dashbit.co | 3 years ago

What's New in Nx (Numerical Elixir) – March/2021

Continue reading


@dashbit.co | 3 years ago

Goth redesign

UPDATE: In the previous version of the article we were using :persistent_term but we’ve replaced it with an ETS table that is more suitable for data that periodically changes. Thanks to readers for pointing this out. While working on Bytepack last year, we needed to authenticate … | Continue reading


@dashbit.co | 3 years ago

Building a custom Broadway producer for the Twitter stream API

In order to better understand Broadway and GenStage I wrote a custom producer that reads tweets from the Twitter stream API and produces event messages. The experience was pretty fun and this article describes in more details how it went. What is Broadway? Think of Broadway as a … | Continue reading


@dashbit.co | 3 years ago

Building custom Hex repositories

Elixir developers have a few options when it comes to using private packages. What you’ll end up choosing usually comes down to whether you want (and/or need!) to fully own the infrastructure. If you don’t, Hex.pm has a hosted private packages offering and it’s a great option for … | Continue reading


@dashbit.co | 3 years ago

10 Years(-Ish) of Elixir

Continue reading


@dashbit.co | 3 years ago

How to debug Elixir/Erlang compiler performance

Recently someone opened up an issue on Gettext saying compilation of Gettext modules got slower in Erlang/OTP 23. In this article, we are going to explore how I have debugged this problem and the three separate pull requests sent to the Erlang/OTP repository to improve compiler p … | Continue reading


@dashbit.co | 3 years ago

Warnings as errors and tests

Suppose we have this Elixir code: # lib/foo.ex defmodule Foo do def foo() do a = 42 end end when we compile it, we’ll see this helpful warning: $ mix compile Compiling 1 file (.ex) warning: variable "a" is unused (if the variable is not meant to be used, prefix it with an und … | Continue reading


@dashbit.co | 3 years ago

You may not need Redis with Elixir

Continue reading


@dashbit.co | 3 years ago

How we verify webhooks

Webhooks are widely used as a tool to communicate changes of state, to notify events and to trigger actions between HTTP services. But there is gap in the security side: if there is a proxy between the server and the client, it is possible that this proxy gets the request and cha … | Continue reading


@dashbit.co | 3 years ago

Automatic and manual Ecto migrations

Ecto ships with built-in support for database migrations via Mix tasks and the Ecto.Migrator module. Migrations are most commonly used for database schema changes like creating tables, columns, etc. In fact, migrations are often so convenient to use that developers use them even … | Continue reading


@dashbit.co | 3 years ago

The Beauty of (Phoenix) LiveView

Continue reading


@dashbit.co | 3 years ago

Introducing NimbleTOTP

We have already talked about authentication in an earlier article about mix phx.gen.auth. This short post follows up on the topic by describing the general idea behind Two-factor Authentication and how to use our recently released NimbleTOTP library to generate and validate Time- … | Continue reading


@dashbit.co | 3 years ago

Homemade Analytics with Ecto and Elixir

Continue reading


@dashbit.co | 3 years ago

Using Bootstrap Native with Phoenix LiveView

Over the last months we have been working on a LiveView app and we have decided to use Bootstrap with it. While Bootstrap is mostly focused on CSS, it does have some components that rely on JavaScript. In this article, we will cover how to make Bootstrap and LiveView work side by … | Continue reading


@dashbit.co | 3 years ago

Rewriting imports to aliases with compilation tracers

This article will explore how we used compilation tracers to implement a tool that automatically rewrote imports to aliases on the Hex.pm codebase, called import2alias. For example, to replace HexpmWeb.ViewHelpers imported calls with ViewHelpers, we used the script like this: cd … | Continue reading


@dashbit.co | 4 years ago

An upcoming authentication solution for Phoenix

Continue reading


@dashbit.co | 4 years ago

Speeding up re-compilation of Elixir projects

UPDATE #1: We have updated this article to mirror Elixir v1.11+’s best practices. Recently, one of our Elixir Development Subscription clients noticed their development feedback cycle felt a bit sluggish, they sometimes had to wait seconds, or tens of seconds, for a code change … | Continue reading


@dashbit.co | 4 years ago

Dashbit's DIY Elixir-based and database-free blog

Continue reading


@dashbit.co | 4 years ago

Kubernetes and the Erlang VM: orchestration on the large and the small

If you look at the features listed by Kubernetes (K8s) and compare it to languages that run on the Erlang VM, such as Erlang and Elixir, the impression is that they share many keywords, such as “self-healing”, “horizontal scaling”, “distribution”, etc. This sharing often leads to … | Continue reading


@dashbit.co | 4 years ago

Using Broadway at Hexdocs.pm

This is a quick blog post about our experience replacing Hexdocs.pm’s GenStage pipeline with Broadway. To give some background information, Hexdocs.pm started out as basically just static file hosting for documentation. With the introduction of private Hexdocs it became a distinc … | Continue reading


@dashbit.co | 4 years ago

Announcing MiniRepo, a minimal Hex server

n 2017 Hex.pm got support for Private packages and organizations, a way for teams to publish and manage packages without making them public. While this works great for many organizations, some have stricter compliance requirements and need to host packages on their own infrastruc … | Continue reading


@dashbit.co | 4 years ago

Updating Hex.pm to use Elixir releases

Elixir v1.9 will ship with releases support and in this blog post we want to show how we have used this exciting new feature on the Hex.pm project. Installing Elixir master (Update: This section is no longer relevant since v1.9 is already out!) Since Elixir v1.9 is not out yet, w … | Continue reading


@dashbit.co | 4 years ago

What's new in Elixir v1.9 (dev)

Hi everyone, we are back with another edition of What’s new in Elixir! Let’s get started. mix release has been added! Besides basic releases support, it supports runtime configuration, customization via templates files, custom steps, and more. A huge thank you to both Distiller … | Continue reading


@dashbit.co | 5 years ago

ExDoc v0.20: Keyboard shortcuts, autocompletion, full-text search, and more!

ExDoc v0.20 has been released with many exciting new features: keyboard shortcuts, search improvements, and more! Let’s take a look at some of the new capabilities. You can see them live at hexdocs.pm/elixir/master/ too! Keyboard shortcuts You can now press s to focus the search … | Continue reading


@dashbit.co | 5 years ago

Announcing Broadway

Today, we are glad to announce the first official release of this tool: Broadway v0.1. Broadway was mainly designed to help developers build concurrent, multi-stage data ingestion and data processing pipelines. It allows developers to consume data efficiently from different sourc … | Continue reading


@dashbit.co | 5 years ago

Building a new MySQL adapter for Ecto Part IV: Ecto Integration

Welcome to the “Building a new MySQL adapter for Ecto” series: Part I: Hello World Part II: Encoding/Decoding Part III: DBConnection Integration Part IV: Ecto Integration (you’re here!) After DBConnection integration we have a driver that should be usable on its own. Th … | Continue reading


@dashbit.co | 5 years ago

Building a new MySQL adapter for Ecto, Part III: DBConnection Integration

Welcome to the “Building a new MySQL adapter for Ecto” series: Part I: Hello World Part II: Encoding/Decoding Part III: DBConnection Integration (you’re here!) Part IV: Ecto Integration In the first two articles of the series we have learned the basic building blocks fo … | Continue reading


@dashbit.co | 5 years ago

Building a new MySQL adapter for Ecto, Part II: Encoding/Decoding

Welcome to the “Building a new MySQL adapter for Ecto” series: Part I: Hello World Part II: Encoding/Decoding (you’re here!) Part III: DBConnection Integration Part IV: Ecto Integration Last time we briefly looked at encoding and decoding data over MySQL wire protocol. … | Continue reading


@dashbit.co | 5 years ago

What's new in Elixir v1.8 (dev)

Hi everyone! We are back with another edition of “What’s new in Elixir”. This time we are working towards Elixir v1.8 which should be out next January. Here are some highlights of what have already made to master: mix test now supports the --max-failures flag ([commit](https:// … | Continue reading


@dashbit.co | 5 years ago

Building a new MySQL adapter for Ecto, Part I: Hello World

Writing a complete driver involves quite a bit of work. To name just a few things, we need to support: all protocol messages and data types, authentication schemes, connection options (TCP/SSL/UNIX domain socket), transactions and more. Rather than going through all of these in d … | Continue reading


@dashbit.co | 5 years ago

Updating Hex.pm to Ecto 3.0

Ecto 3.0 is just around the corner and as you may already know it reached stable API. To make sure everything works properly I thought I’ll try updating one of the first projects that ever used Ecto: Hex.pm. The whole upgrade was done in a single pull request, which we will break … | Continue reading


@dashbit.co | 5 years ago

A sneak peek at Ecto 3.0: performance, migrations and more

Welcome to the “A sneak peek at Ecto 3.0” series: Breaking changes Query improvements part 1 Query improvements part 2 Performance, migrations and more (you are here!) We are back for one last round! This time we are going to cover improvements on three main areas: perf … | Continue reading


@dashbit.co | 5 years ago

A sneak peek at Ecto 3.0: query improvements (part 2)

Welcome to the “A sneak peek at Ecto 3.0” series: Breaking changes Query improvements part 1 Query improvements part 2 (you are here!) Performance, migrations and more This time we are back to cover other improvements coming to Ecto.Query in Ecto 3.0. UNION, EXCEPT and … | Continue reading


@dashbit.co | 5 years ago

A sneak peek at Ecto 3.0: query improvements (part 1)

Welcome to the “A sneak peek at Ecto 3.0” series: Breaking changes Query improvements part 1 (you are here!) Query improvements part 2 Performance, migrations and more Let’s get started with the improvements to Ecto.Query APIs. The Ecto.Query API is the area that saw mo … | Continue reading


@dashbit.co | 5 years ago

A sneak peek at Ecto 3.0: breaking changes

Welcome to the “A sneak peek at Ecto 3.0” series: Breaking changes (you are here!) Query improvements part 1 Query improvements part 2 Performance, migrations and more We have spent the last 3 months working hard to release Ecto 3.0. As we get closer and closer to Ecto … | Continue reading


@dashbit.co | 5 years ago

What's new in Flow v0.14

One of the benefits of our Elixir Development Subscription service is that we can work with companies that are using our projects and gather direct feedback, which in turn we use to improve our tools and the overall community. With this in mind, Flow v0.14 has been recently relea … | Continue reading


@dashbit.co | 5 years ago