IntelliJ Elixir v11.11.0
- Fix Go To Declaration broken by JetBrains API change
-
Reference Resolution Round-Up
- All parts of Alias chains
- Functions, Assigns, and Aliases in LiveComponent/View LEEx templates.
- Ecto Query and API
- Types
How to Test WebSocket Clients in Elixir with a Mock Server
In this post, you’ll get a high-level overview of how to implement a long-running connection between two services with WebSocket, and then you’ll write unit tests for functionality.
ThinkingElixir 053: SOLID Elixir with Ilya Averyanov
In episode 53 of Thinking Elixir, Ilya Averyanov talks about how the SOLID principles, typically associated with OOP, can apply to Elixir. We talk about Ilya’s blog post where he applied these principles to his Github project and how that helped in PR discussions. We also talk about testing, architecture, and more.
https://thinkingelixir.com/podcast-episodes/053-solid-elixir-with-ilya-averyanov/
Onboarding to Elixir
I’ve worked with a number of clients on Elixir projects and I’ve onboarded myself, I’ve been onboarded and I’ve onboarded others. And compared to my experiences with PHP/Python/Javascript and my limited experience with C#/.Net I have experienced quite a difference.
Vetspire is hiring Senior Software Engineers & Senior DevOps Engineer (remote)
Vetspire is an Artificial Intelligence driven veterinary medical records and practice management platform. We’re a startup reimagining the way that veterinarians use technology, impacting every aspect of patient care from AI assistance in the exam room to managing client communications and clinical analytics. As part of our team, you’ll be designing the future of what veterinary technology should and can be, and you’ll be joining a founding team out of the Stanford Artificial Intelligence Laboratory building a research platform for evidence-based veterinary medicine.
Our backend is 100% written in Elixir, with Phoenix and Absinthe covering our business logic and a GraphQL API, which we use to build out the web app written in ReactJS and have our partners use the same API to build further tooling on top. It’s all relatively modern, built up from scratch over the last 4 years.
Senior Software Engineer: https://jobs.lever.co/vetspire/a13274ee-0037-410e-bd38-ee53ddbf0986
Senior DevOps Engineer: https://jobs.lever.co/vetspire/8453eadd-8a31-4d6a-acc1-7277aa921161
Paycheck, events, idempotency and Elixir
Example of modeling complex business scenario spanning across two separate contexts with event-driven architecture, Ecto and unique indexes.
https://appunite.com/blog/paycheck-events-idempotency-and-elixir
Pubray — blogging powered by Elixir, Phoenix, LiveView and React
REPL? PERL? Regardless of the acronym, the stack behind Pubray is really something else — an exciting yet pragmatic mix of the bleeding edge and the battle proven that should literally make engineers beg for a chance to work with it (I know I would 😀).
Read the introductory article with a sneak peek of tech behind Pubray as well as the all-new Pubray Engineering blog.
And since this is the very first time that I’m posting about Pubray to the Elixir community, feel invited to give it a shot and become early adopters or just share your thoughts. Thanks!
Three real-world examples of distributed Elixir (pt. 3)
👋🏼Hi, there!
Here’s is the third part of the Three real-world examples of distributed Elixir series, in which we will build a distributed download requester and progress tracker, thanks to libcluster, Horde, Phoenix.PubSub, and Phoenix.LiveView.
https://bigardone.dev/blog/2021/06/18/three-real-world-examples-of-distributed-elixir-pt-3
Happy coding!
Connecting Observer to Production
For a long time, I wanted an easy way to run Observer connected to my production environment. I finally have that on http://Fly.io! I wrote up how I did it and showed how playing “chaos monkey” exposed some UX problems on my project.
New Elixir 1.12 - The developer’s point of view
The Elixir 1.12 version introduced some significant changes.
The main one is the ability to create scripts and import dependencies via Mix.install. The interactive console can be more helpful in the software development, prototyping and debugging processes.
How to distribute Mnesia between multiple nodes
Mnesia is a distributed database that’s embedded in Erlang and is super-easy to access — you don’t have to rely on a third-party service because it’s already available with your Elixir app. In this article, we want to share how we scaled our Mnesia usage in our different services, how we coupled the performances of Mnesia, and the persistence that was required to deploy our services with multiple nodes running.
https://medium.com/@wttj_tech/elixir-how-to-distribute-mnesia-between-multiple-nodes-cb7c851b1ed1
ThinkingElixir 052: IOList and Postgres with Nathan Long
In episode 52 of Thinking Elixir, Nathan Long takes us on a deep dive into IOLists in Elixir. We cover what they are, how they work, the power they have when concatenating strings, and how they are used in Phoenix and Logger. We even talk about improper lists and why they exist. And no, it isn’t a bug. We then talk about PostgreSQL features like materialized views, triggers, and using denormalized tables for solving complicated caching situations. Nathan shares some tips for when to use them and provides some cautions worth hearing.
https://thinkingelixir.com/podcast-episodes/052-iolist-and-postgres-with-nathan-long/
Elixir in Production: Glific
What are the benefits of using Elixir for building an open-source communication platform? Find out in our interview with Donald Lobo, the founder and chief architect of Glific.
Pure Elixir deployment strategy
Deploying an Elixir app to a free GCP instance and getting no-downtime deploys without leaning on Docker, Distillery, or Nginx.
This is a big refactor of the article, which previously relied on Nginx/Certbot for SSL and no-downtime deployment.
https://damonvjanis.medium.com/optimizing-for-free-hosting-elixir-deployments-6bfc119a1f44
Hands-on Elixir & OTP: Create a cryptocurrency trading bot - Ep. 16 - Add end-to-end tests
Hi everyone!
I’m extremely happy to announce that I’ve released the 16th episode in the series dedicated to creating a cryptocurrency trading bot in Elixir. In this episode, we will focus on creating end-to-end tests and all the issues that you can see on the way in case of caching the Binance response as well as cyclic dependencies in your umbrella.
https://www.youtube.com/watch?v=UFjGQLNgVUQ&list=PLxsE19GnjC5Nv1CbeKOiS5YqGqw35aZFJ&index=17
PS. Update to the book will follow soon!
Enjoy!
Erebus - Elixir implementation of the envelope encryption paradigm, utilising Google KMS or local keys
Erebus is an implementation of the envelope encryption paradigm. It uses a separate key (called DEK, short for data encryption key) for each encrypted struct. The key is regenerated on each save, making key encryption barely necessary. During each encryption, the DEK is encrypted using the KEK (key encryption key).
The DEK is a symmetric key (Erebus uses AES-256 with Galois mode (AES-GCM) with AEAD), which guarantees both the security and the integrity of the data. The KEK is an asymmetric key – Erebus uses the public key for encryption (for performance reasons when using external key storage) and the private key for decryption. The specific implementation depends on the backend.
Dynamic Styles with Phoenix Live View
Exploring (simple) ways to generate dynamic styling for your Phoenix Live View projects
https://iacobson.medium.com/dynamic-styles-with-phoenix-live-view-848ceca261e0
Elixir Wizards S6E6 From Developer to Director of Engineering with Estelle DeBlois
Latest episode of Elixir Wizards is out today! Check it out here: https://smartlogic.io/podcast/elixir-wizards/s6e6-deblois/
Progressive Web Apps & Elixir Phoenix
Elixir Phoenix is one of the best choices out there for building server side web applications. So, how does one build progressive web apps on it?
Find out at https://iotready.co/blog/progressive-web-apps-elixir-phoenix/