automation| elixirschool.com
Managing releases can be one of the most tedious aspects of maintaining an Elixir project (or any project). Manually updating version numbers in mix.exs, crafting changelogs, creating GitHub releases, and ensuring consistency across your project can quickly become overwhelming as your project grows. What if we could automate all of that while also improving your development workflow? | elixirschool.com
The Elixir community has no shortage of high-quality learning material, which leads to a problem: purchasing every Elixir book published while| elixirschool.com
You’d think the answer to this question would be a simple Google search away. Unfortunately, that wasn’t the case for me this afternoon, working on a Phoenix project with a newly-added Ecto backend. In an effort to save others (and let’s be honest, future me) the same frustration, here’s the most straight-forward solutions I found.| elixirschool.com
When starting with Elixir, I was amazed how easy it was to write tests in Elixir with ExUnit and be able to do true TDD. This was fine till I was working on my own projects where the size was small and didn’t have many components. But as I got to working full time, it became difficult to test specific functionalities that I wrote in a big codebase. | elixirschool.com
I’m quite sure most of you have already interacted with live view components. You may have created components to reuse in your live view application. However, sometimes you may feel stuck when creating reusable components more so when you want to pass in common attributes with different values in your component’s markup.| elixirschool.com
:odbc and and Efficient Querying With Streams| elixirschool.com
The umbrella application is a powerful tool available to us that a lot of users are unfamiliar with.| elixirschool.com
TIL: Cleaner queries with Ecto map| elixirschool.com
Now With More Elixir| elixirschool.com
January 17th was like any other day until something exciting happened: José gave Elixir 1.6 to the people.| elixirschool.com
Welcome, Bem-vindo, Bienvenido!| elixirschool.com
Welcome to the first post in our new series reviewing various learning material available for Elixir.| elixirschool.com
There’s been a lot of discussion about configuration in the community lately.| elixirschool.com
Ecto is fantastic tool that provides us with a great degree of flexibility.| elixirschool.com
Our first review was quite popular and the feedback we received has been wonderful!| elixirschool.com
What is it?| elixirschool.com
Ecto.Multi is a set of utilities aimed at composing and executing atomic operations, usually (but not always, as you’ll see soon) performed against the database. Furthermore, it handles rollbacks, provides results on either success or error, flattens-out nested code and saves multiple round trips to the database.| elixirschool.com
For the next part of this series, we are reviewing 6 decks from Elixircards| elixirschool.com
JSON Web Tokens, or JWTs, allow us to authenticate requests between the client and the server by encrypting authentication information into a secure, compact JSON object that is digitally signed. In this post, we’ll use the Joken library to implement JWT auth in a Phoenix app. We’ll focus on JWTs that are signed using a ECDSA private/public key pair, although you can also sign JWTs using an HMAC algorithm.| elixirschool.com
If you’ve ever found yourself debugging Elixir then you’re probably familiar with IO.inspect/2 but just in case let’s see an example of how we might use it:| elixirschool.com
Have you ever run mix test and seen red error messages being logged when, in fact, all your tests are passing? This can often occur when adding test coverage for “sad path” code flows that include calls to Logger.error/1.| elixirschool.com
If you’re working on an Elixir umbrella app with multiple children, then you know that running the tests for the entire umbrella app isn’t always ideal. It could take a while to run and it can be hard to zero in on one particular set of failures when deving on just of the child apps.| elixirschool.com
If we want to use the popular messaging system Kafka with our Elixir projects, we have a few wrappers we can choose from. This blogpost covers integrating one of them, Kaffe, which doesn’t have a lot of resources and therefore can be tricky to troubleshoot.| elixirschool.com
“Recursion” can be a scary word for those of us unfamiliar with its applications. In this post, we’ll de-mystify the concept of recursion and gain a deeper understanding of how and why to use it by writing our very own recursive function in Elixir.| elixirschool.com
The project| elixirschool.com
Executing code later or creating reoccurring tasks can be tricky but did you know we can accomplish this in Elixir with just a process?| elixirschool.com
In our previous post, Building web apps with Plug.Router we built a website using just Plut.Router.| elixirschool.com
What happens when starting up your GenServer requires executing a long-running process? We don’t want the execution of that process to block the GenServer from completing start-up. We also don’t want to execute that process asynchronously in a way that creates a race condition between the running of the process and other messages arriving in our GenServer’s inbox. In this post, we’ll take a closer look at these two problems and understand how OTP 21’s GenServer.handle_continue/2 is ...| elixirschool.com
One of the things that makes OTP and Elixir unique is the model of supervisor behaviour that applications can take with different processes they start.| elixirschool.com
It’s here! Phoenix LiveView leverages server-rendered HTML and Phoenix’s native WebSocket tooling so you can build fancy real-time features without all that complicated JavaScript. If you’re sick to death of writing JS (I had a bad day with Redux, don’t ask), then this is the library for you!| elixirschool.com
Developers want to create the best applications they can for their users. In the process, they want to make sure to give good feedback to their users when data doesn’t get saved into the database. In Elixir, there is a great tool on top of the database that helps – Ecto! It can put validations and constraints onto specific fields to ensure data integrity.| elixirschool.com
In an earlier post, we used the brand new (still pre-release at time of writing) Phoenix LiveView library to build a real-time feature with very little backend code and even less JavaScript. LiveView allowed us to easily connect our client to the server via a socket and push updates down to our client. In an app that allows users to “deploy” a repo to GitHub, we achieved the following real-time functionality:| elixirschool.com
Erlang ports provide us an interface for communicating with external processes by sending and receiving messages. The Elixir Port module is built on top of Erlang’s ports and makes it easy to start and manage OS processes.| elixirschool.com
We have some very exciting news to announce today!| elixirschool.com
After playing with LiveView and leveraging Phoenix PubSub to broadcast messages to all of a live view’s clients, I wanted to try incorporating Phoenix Presence to track the state of these clients. So this past weekend I built a chat app using Phoenix LiveView, PubSub and Presence. The LiveView clocks in at 90 lines of code, and I was able to get the Presence-backed features up and running in no time! Keep reading to see how it works.| elixirschool.com
LiveView has given us the ability to implement flexible and responsive UX almost entirely with server-side code. But what happens when our need for a responsive UI surpasses what LiveView seemingly offers? When the demands of a particular feature have us reaching for JavaScript? It is possible to incorporate custom JS into the LiveView life cycle with the help of a custom LiveView channel and a Registry. Keep reading to see how we did it!| elixirschool.com
Last year, it was my first time ever participating in the conference. I wanted to go off and see what this community had to offer me, as Elixir is the first language I have seriously considered working with as a professional. So, 2019 being my second back-to-back participation, I think can provide a direct comparison on how things have fared in our European join.| elixirschool.com
Working with Elixir and Ecto, I’ve run into scenarios where I needed to retrieve data from a table plus maybe a field or two from an unassociated table. In the past, whenever this happened, I’d usually spin up something I wasn’t totally satisfied with – maybe updating the schema(s), breaking it up into multiple queries, or building a multi-select statement if I was feeling fancy.| elixirschool.com
This year’s ElixirConf, in Colorado, really reflected the growing and thriving nature of the Elixir community. It was a jam-packed two days of workshops and two days of multi-track talks that showcased the increasingly diverse and innovative people and technologies that Elixir has to offer.| elixirschool.com
The prelease of Elixir 1.9 earlier this year introduced some powerful new tools. mix release allows us to build a release without Distillery; configuration for our umbrella child apps has been moved to the parent application; the addition of the Config module deprecates Mix.Config and makes it easy to configure our releases, and configuration has been further simplified with the addition of functions like System.fetch_env!.| elixirschool.com
LiveView makes it easy to solve for some of the most common UI challenges with little to no front-end code. It allows us to save JavaScript for the hard stuff––for complex and sophisticated UI changes. In building out a recent admin-facing view that included a table of student cohorts at the Flatiron School, I found myself reaching for LiveView. In just a few lines of backend code, my sortable table was up and running. Keep reading to see how you can leverage LiveView’s live_link/2 and ...| elixirschool.com
If you didn’t know, Elixir School has its own Slack where contributors can gather to discuss our organization’s content and projects but most importantly, support one another in our Elixir journey. When we set out to create our own Slack we wanted to address a big concern with many public Slacks: the signal to noise ratio is bad, there’s just too much spam.| elixirschool.com
LiveView Can Get Messy| elixirschool.com
Table Of Contents| elixirschool.com
The recent release of the LiveDashboard library allows us to visualize our application metrics, performance and behavior in real-time. In this post, we’ll add LiveDashboard to our Phoenix app, examine the out-of-the-box features and take a look under the hood to understand how LiveDashboard hooks into Telemetry events in order to visualize them.| elixirschool.com
Table Of Contents| elixirschool.com
Table Of Contents| elixirschool.com
Table Of Contents| elixirschool.com
This post is inspired by some of my work, together with Bruce Tate, on Pragmatic Bookshelf’s upcoming book on LiveView. Elixir School is happy to be able to offer a give-away of a small number e-books once they are published, so stay tuned for updates!| elixirschool.com
One of the features that fascinate me most about Elixir is pattern matching. I always wonder if there is a way to solve what I need using it and I love exploring it. When you combine the beauty of pattern matching with the power of immutability some things almost seem magical but they are not!| elixirschool.com
Intro| elixirschool.com