QFM022: Elixir Reading List June 2024
Everything that I found interesting last month about the Elixir ecosystem.
Tags: qfm, elixir, reading, list, june, 2024
Photo by Jan Ranft on Unsplash
We kick off this month’s Elixir reading list with Lars Wikman’s keynote at GigCityElixir 24 which advocates for simplicity in programming, a theme that Elixir can excel at.
We continue with the ongoing integration of machine learning into the Elixir ecosystem with tools like Numerical Elixir (Nx), Explorer, and Scholar, as well as taking a dive into computer vision with Walid Salah’s presentation at ElixirConf EU 2024 exploring the practical implementation of computer vision systems using Elixir.
We also explore the Actor Model as implemented in Elixir, and take a comparative look at Elixir versus Ruby further illustrating Elixir’s strengths in concurrency, fault tolerance, and scalability.
[.column] Finally, we have a look at Phoenix LiveView layouts and make an attempt to understand anti-patterns and best practices for updating Elixir structs. Then skim past innovative projects like Phoenix Playground and Orb that showcase how Elixir simplifies the development process and enhances functionality through live code reloading and WebAssembly module creation.
As always, the Quantum Fax Machine Propellor Hat Key will guide your browsing. Enjoy!
Lars Wikman at GigCityElixir 24: Simplicity (youtube.com): Lars Wikman, an experimental programmer, shared his enthusiasm for the BEAM ecosystem during his keynote at GigCityElixir 24, highlighting the importance of simplicity in programming across various applications from embedded systems to live view front ends. He emphasised how simplicity can transform the way developers approach and write code, making it more efficient and manageable.
#Elixir
#Programming
#GigCityElixir
#Coding
#TechTalks
Modeling Systems With Actors (eigr.io): The Actor Model, introduced by Carl Hewitt in 1973, offers a modular and scalable framework for concurrent computation by using independent entities called actors that communicate exclusively through message passing. This model enhances concurrency, fault tolerance, and modularity, making it ideal for cloud-native applications, e-commerce order processing, customer service systems, financial transactions, and multiplayer games.
#ActorModel
#Concurrency
#Scalability
#DistributedSystems
#CloudComputing
A Comprehensive Guide to Elixir vs Ruby (erlang-solutions.com): The article compares Elixir and Ruby, highlighting their histories, advantages, and best use cases. It explains that while Ruby is known for its ease of use and large community, Elixir offers superior performance, fault tolerance, and scalability, making it a strong candidate for projects requiring high concurrency and reliability.
#Programming
#Elixir
#Ruby
#WebDevelopment
#TechComparison
The Future Stack (underjord.io): The article discusses the evolution and future of web application development, particularly focusing on the trade-offs and abstractions involved in using Elixir and its associated tools like Phoenix LiveView. It highlights how Fly.io aims to simplify web app deployment with low latency by integrating geo-distributed object storage through Tigris, emphasising the importance of aligned trade-offs for efficient, scalable solutions.
#Elixir
#PhoenixLiveView
#Flyio
#WebDevelopment
#SoftwareEngineering
Elixir and Machine Learning in 2024 so far - MLIR, Apache Arrow, structured LLM, and more (dashbit.co): In 2024, the Elixir community made significant strides in integrating machine learning with Elixir through various projects, including updates to Numerical Elixir (Nx), Explorer, and Scholar, while introducing new tools like instructor_ex for structured prompting in LLMs. These advancements enhance Elixir’s capabilities in both traditional and deep learning, making it a robust ecosystem for data analysis and machine learning.
#Elixir
#MachineLearning
#DataScience
#LLM
#NxProject
End to end Computer Vision in Elixir - Making it work in Production - Walid Salah, ElixirConf EU 2024 (youtube.com): Walid Salah’s presentation at ElixirConf EU 2024 discusses implementing end-to-end computer vision systems using Elixir, emphasising practical strategies for deploying these systems in production environments.
#ElixirConfEU2024
#ComputerVision
#Elixir
#MachineLearning
#TechTalks
Mastering Layouts in Phoenix for Elixir LiveView Apps (osmanperviz.com): This article outlines the various layout options available in Phoenix for structuring Elixir LiveView applications, including root, normal, live, and page-specific layouts, highlighting their use cases and benefits in maintaining consistent design and dynamic content rendering. It emphasises the importance of selecting the appropriate layout for different parts of an application to optimise structure and user experience.
#Elixir
#LiveView
#PhoenixFramework
#WebDevelopment
#ProgrammingTips
This is a LiveView Native Augmented Reality app running on Apple Vision Pro (x.com): Brian Cardarella showcased a LiveView Native Augmented Reality app running on Apple Vision Pro, highlighting its functionality and sharing a template and event handler for developers. He also discussed the potential for future multiplayer features using pub/sub technology. Here is a glimpse at the code: Gist. And another nice example of a butterfly.
#AugmentedReality
#AppleVisionPro
#LiveViewNative
#ElixirLang
#TechInnovation
Elixir’s magic word-list sigil (exlirstreams.com): Elixir’s word-list sigil (~w
) simplifies the creation of lists by requiring only spaces between words, eliminating the need for commas and quotes, and it can convert words into a list of atoms with a simple modifier.
#ElixirLang
#CodingTips
#Programming
#Elixir
#FunctionalProgramming
Elixir Anti-Patterns - What Not to Do in Your Code: This article explores common anti-patterns in Elixir projects that developers should be aware of to avoid potential pitfalls. Examples include mass assignment vulnerabilities through Ecto changesets, SQL injection, and dynamic atom creation. Tips and solutions are provided to help developers write cleaner, more efficient Elixir code.
#Elixir
#Programming
#AntiPatterns
#Coding
#WebDevelopment
Creating Tabular Representation of Database Indexes using Elixir Mix Task: The article explores how to create a tabular representation of database indexes using an Elixir Mix task. The author shares steps to implement a custom Mix task to list all indexes in a database with a focus on fetching index details using Elixir and presenting them in a readable table format. The practical guide goes in-depth with coding examples for querying databases, calculating the longest column widths, and rendering the table rows.
#Elixir
#Database
#Programming
#TechTips
#WebDevelopment
The right way to update Elixir structs (and how not to do it 😁): In this article, you’ll learn the best practices for updating Elixir structs and the common mistakes to avoid. It delves into using Map.put/3
and highlights the potential pitfalls such as typos, demonstrating how Map.replace/3
and Map.replace!/3
can provide safer alternatives for struct updates.
#Elixir
#Programming
#CodingTips
#SoftwareDevelopment
#TechTutorials
A RAG for Elixir: This article is the second in a series discussing the use of Retrieval-Augmented Generation (RAG) information systems for codebases. This installment focuses on how Large Language Models (LLMs) can be used to read and understand Elixir code, adapting from the previous exploration of Ruby codebases. It delves into the technicalities of using LangChain for document parsing and chunking, aiming to facilitate more comprehensive conversations about Elixir codebases.
#LLM
#RAG
#AI
#Elixir
#LangChain
How Even The Simplest RAG Can Empower Your Team: This article is the first in a series exploring the use of a Retrieval Augmented Generation (RAG) information system for coding. It introduces a simple RAG system for Ruby using LanChain, JinaAI embeddings, and a local LLM served via Ollama, aimed at empowering development teams by aiding code retrieval effortlessly. Additionally, it explains the basic concepts of embedding models and retrieval processes, emphasizing the advantages of running these systems locally.
#RAG
#AI
#LLM
#Ruby
#InfoServer
Building the Cozystack Phoenix SaaS Starter 🚀: In this video, Jan Ehrhardt explains how to build a SaaS starter using the Cozystack Phoenix framework. It’s a 38-minute tutorial that covers everything from the setup to deploying a scalable SaaS application. Technical depth is moderately high, making it suitable for those with some programming experience.
#SaaS
#PhoenixFramework
#JanEhrhardt
#TechTutorial
#Cozystack
An end-to-end ES/CQRS example with EventStoreDB and Phoenix/LiveView: In this thorough exploration of implementing Event Sourcing (ES) and CQRS (Command Query Responsibility Segregation) systems using EventStoreDB and Phoenix/LiveView, Yevhenii Kurtov presents a detailed tutorial. The tutorial uses a loan processing system as an example and breaks down topics such as loan request validation, event handling, enriching commands, and setting up a read model for an underwriter dashboard. The article also covers advanced techniques like message delivery guarantees, projecting events for live updates, and setting up a distributed system architecture using EventStoreDB.
#ES
#CQRS
#EventSourcing
#PhoenixLiveView
#EventStoreDB
Metaprogramming Pitfalls: In this blog post, Benjamin Milde delves into the intricacies of metaprogramming in Elixir, a topic he first explored in a popular Elixir forum post. He extends his previous discussion on the usage of quote/2
and unquote/1
in Elixir’s metaprogramming to provide more detailed guidance, especially focusing on macros and their complexities. Through examples and explanations, the article aims to make the concept of generating code from code, and handling abstract syntax trees, more accessible to readers.
#ElixirLang
#Metaprogramming
#CodingTips
#Macros
#Programming
Orb: Orb is an innovative way to write WebAssembly by starting with its raw components and making them more convenient via the Elixir ecosystem. It allows writing WebAssembly modules using Elixir’s features such as macros, packages, and testing tools. Orb modules can be composed, reused, and dynamically compiled, providing a powerful, flexible approach to WebAssembly development.
#WebAssembly
#Elixir
#Programming
#Development
#Tech
naymspace/backpex: Backpex is a customisable administration panel for Phoenix LiveView applications, allowing users to create CRUD views for their data with configurable LiveResources, integrating seamlessly with existing Phoenix apps and offering features such as custom layouts, views, field types, and filters.
#PhoenixLiveView
#CRUD
#WebDevelopment
#Backpex
#AdminPanel
Scaling CLIP based Natural Language Media Search with Bumblebee and Broadway by Raj Rajhans: Raj Rajhans’ talk at Code BEAM Europe 2023 delves into scaling CLIP-based natural language media search using Bumblebee and Broadway. This 26-minute presentation is a technical deep dive discussing how organizations can enhance their media search capabilities efficiently.
#CodeBEAM
#NaturalLanguage
#MediaSearch
#TechTalks
#RajRajhans
Advanced Dependency Injection in Elixir with Rewire: This article dives deep into the topic of Dependency Injection (DI) in Elixir, focusing on the Rewire library. It outlines the benefits of using Rewire for a more structured and flexible implementation of DI in Elixir projects, enhancing testability and modularity. The article also provides practical examples and guides on how to set up and use Rewire and Mox in Elixir projects.
#Elixir
#DependencyInjection
#Rewire
#Programming
#Testing
Announcing Phoenix Playground: Phoenix Playground is a new tool that simplifies running single-file Phoenix applications, eliminating unnecessary boilerplate. It supports live code reloading and streams real-time server logs to the browser console, enhancing the development experience. The project was a collaboration between Wojtek Mach and @lubien, and it enables easy prototyping, sharing of code, and even submitting bug reports.
#PhoenixFramework
#LiveView
#ElixirLang
#WebDevelopment
#OpenSource
Learning Machine Learning in Elixir: Zack Siri shares his journey of learning machine learning using the Elixir programming language. He emphasizes the value of understanding the mathematical foundations behind AI and opts to translate course materials from Python to Elixir. Siri highlights various tools in the Elixir ecosystem, such as Nx, Livebook, and Axon, for working on machine learning projects. Despite facing challenges, he celebrates the improvements in Elixir’s tooling for machine learning and expresses satisfaction with his progress.
#MachineLearning
#ElixirLang
#AI
#Programming
#TechJourney
Regards,
[ED: If you’d like to sign up for this content as an email, click here to join the mailing list.]
Originally published on quantumfaxmachine.com.
Also cross-published on Medium and Slideshare:
20240702 QFM022 Elixir Reading List June 2024