2023 and Beyond: Why Learning Elixir is Still a Smart Move for Developers
Supercharge Your App Development in 2023 and Beyond
Discover the Advantages of Elixir for Modern Application Development
https://blackode.in/2023-and-beyond-why-learning-elixir-is-still-a-smart-move-for-developers-65ea0c33ede2?sk=1080c17de0cdea9b26297668e3ded6f1
Elixir Adoption Survey
@teamlaunchscout is collecting information on Elixir adoption and will publish a report once it’s ready. If you want to contribute to that report, you can do so here! https://docs.google.com/forms/d/e/1FAIpQLScxQJV6twLVVoALSYTygthvkb8elvjmwoXCz_4Obm64q6ZJ1A/viewform
Build your own lazy operation evaluator in Elixir
I’m always fascinated by how Elixir’s Stream module handles operations lazily by storing them in a struct. So simple but so brilliant! 🤯
I wanted to see what it’d be like to write a simple implementation of a lazy math evaluator.
Hope you like it!
✍️ https://www.germanvelasco.com/blog/build-your-own-lazy-operation-evaluator-in-elixir
Live Event: Introduction to Elixir Security
Wednesday, May 17, 2pm EDT (New York) I’ll be hosting a live webinar on Elixir security, covering common issues such as SQL injection, Cross Site Scripting, Cross Site Request Forgery!
Empty values and Ecto changesets
I wanted to share an interesting bug I fixed this week with Ecto! If you ever noticed that empty strings sometimes look like a change to Ecto this post will explain why: https://0x7f.dev/post/empty_values/
NervesHub 2.0
We’re excited to announce that we’re actively working on NervesHub 2.0, an improved version of our IoT device firmware update and management platform for Nerves-based devices. Although NervesHub 1.0 is still available and maintained in the maint-v1.0 branch, we believe 2.0 will enable significant improvements to meet our evolving needs and those of the Nerves community.
See the introduction post for more! https://elixirforum.com/t/introducing-nerveshub-2-0/55531
Thinking Elixir News 150
Episode 150 of Thinking Elixir. News covers Chris McCord’s keynote speech on LiveView 1.0. We cover the EEF’s final election results, latest from the LiveView Native space, ex_cldr updates for localizing our apps, an OTP patch release, and more!
Monolith vs Microservices: With Elixir You Don't Need to Choose
In this blog post I’m chiming in on the microservices vs monolith debate that heated up again and show how with Elixir and Phoenix Framework you don’t need to even “choose” a side, looking at the features that make building hybrid applications in Elixir a breeze.
Deploying After Mix ecto.dump
At some point, large projects may choose to delete many old migrations and run mix ecto.dump
to generate a structure.sql file. But then how do you deploy to a new clean server or start a staging server? This post connects the dots to get a safe, repeatable, automated deployment process for setting up a database from a structure.sql file.
https://fly.io/phoenix-files/deploying-after-a-mix-ecto-dump/
How to check if two lists contain overlapping elements
Want to check if two lists have overlapping elements in Elixir?
Use some set theory! 💡
-
Turn the lists into MapSets with
MapSet.new(list)
-
See if the two sets are disjoint with
MapSet.disjoint?/2
Check it out: 👉 https://youtube.com/shorts/X9Gl-gd3tEg 👀
Upload Encrypted Files to S3
When uploading sensitive user files to S3, you better encrypt them or you risk data breaches and fines! This post explains how to encrypt, decrypt, upload, and download files from S3 and how to display them in LiveView. https://www.peterullrich.com/upload-encrypted-files-to-s3
Elixir code coverage with partition test
Export code coverage from different tests, run in a different runners using parallel option, to generate a code coverage report - https://medium.com/@speeddragon/coverage-with-partition-test-a7835a147b42
Cool, simple macro to turn structs in agents
I wrote a simple macro that when used within a module with a struct generates a sub module that is an Agent for keeping a map of those structs. It saves me quite some time.
Feel free to use!
https://gist.github.com/roehst/1dd4ff9a2d75a7285b144ca9b7150748
How Elixir Solves a Difficult Security Problem
Thread safety issues lead to complex and high severity security bugs. Learn how Elixir’s approach to concurrency eliminates this problem.
Building a Drag-and-Drop List With LiveView and SortableJS
Add drag-and-drop functionality to your Phoenix LiveView app with SortableJS and LiveView Hooks! This posts shows you how to create an interactive list component with draggable items. Plus, you’ll discover how to use Tailwind variants in LiveView to make your draggable items look stylish. https://fly.io/phoenix-files/liveview-drag-and-drop/
HEEX special `if` and `for` attributes
I only recently learned that you can inline if
and for
statements in HEEX templates because they’re special attributes.
It can reduce the amount of tags, but it might also make your HTML harder to read. Up to you if you want to use them. 🤷
Check it out! 👉 https://youtu.be/QCHwhUIRVQw 👀
Elixir's new Unified Logger
Episode 149 of Thinking Elixir. Hauleth (Łukasz Jan Niemier) takes us deeper into the Elixir and Erlang loggers. He recently closed a 3.5 year old bug on the ElixirLang Github project by unifying the Elixir logger with the logger that Erlang got in OTP 21. We touch on the history, why it took so long, what we should think of the new logging levels, and what the original goals were that he set out to achieve. We also get an introduction to the new logging filters and handlers along with some peeks into future Erlang logging features that may still be yet to come in Elixir!