Elixir Meetup #5 ▶ hosted by Curiosum ▶ Miguel Cobá & Michał Buszkiewicz
5th Elixir Meetup hosted by Curiosum We discussed 2 presentations of our Elixir experts:
- Miguel Cobá: Elixir, Kubernetes and minikube
- Michał Buszkiewicz: A Framework for Unified Authorization in Elixir
Check the video!
▶ https://curiosum.com/sl/e38klg5u
REGISTER FOR THE NEXT ELIXIR MEETUP: ▶ https://curiosum.com/meetups/elixir
Using IO.puts and IO.inspect in ExUnit tests
By default in the test env, Phoenix doesn’t show IO.puts/IO.inspect outputs in the console. Debugging without access to these two functions may be a pain in the neck. Fortunately, there is a simple solution, you can apply in just a few seconds. Check the TIL: https://curiosum.com/til/io-puts-and-inspect-in-exunit-tests
Elixir is taking over! 5 Elixir Meetups behind us - check how was it!
Five Elixir Meetups are behind us! Who were the speakers, how many people attended, what is the idea? https://curiosum.com/blog/elixir-is-taking-over-meetups-curiosum-behind
Read raw request body from Plug.Conn after parsers
If you ever tried to use Plug.Conn.read_body/2 and it returned nil, you now know that it can only be used once. If you have :json in your Plug.Parsers, you cannot read the raw body again, because it was already used by the parser. That’s a trick Plug does to save memory as request bodies can be of any size. However there’s a way to cache the raw body when you need it:
Read more: https://vinibrasil.com/plugrawbody
Showing how to use LiveView with Nerves
These are a few of my favorite things, as they say. I had no voice but it turned out quite artistic. Love to my editor for that. https://youtu.be/Fude1tM3kg0
ThinkingElixir 100: 10 Years of Elixir with José Valim
The 100th episode of Thinking Elixir is spent with José Valim celebrating 10 years of Elixir. We close out our 5-part series talking about the recent 1.13 release, the upcoming 1.14 release and looking into the future and v2.0. We learn that many features were created with Nx in mind but are still broadly helpful to Elixir developers. José gives a 1-minute explanation of how ex_unit works, explains what usually makes it into a point release, and how adding stepped ranges meant changes to many Enum functions and so much more! In addition to Elixir, we talk about his journey with Dashbit and we end up learning how the song “The Final Countdown” by Europe might actually be teaching functional programming and recursion?? A super packed episode!
Livebook for Elixir: Just What the Docs Ordered
Check out some top tips for using Livebook in Elixir and find out how to create interactive docs. https://blog.appsignal.com/2022/05/24/livebook-for-elixir-just-what-the-docs-ordered.html
Using parcel as the build tool for Phoenix
I have written a walk-through for integrating parcel
as the build tool in phoenix applications. https://blog.cvkmohan.com/using-parcel-as-build-tool-for-phoenix
Phosphoricons Elixir
Published an hex.pm package for the fantastic @_phosphoricons. Now you can use them juicy icons in LiveViews and Surface. Special thanks to @mveytsman for paving the way with the @HeroIcons lib. https://hex.pm/packages/phosphoricons
Owl v0.3.0 - a toolkit for writing command-line user interfaces in Elixir
A new version of the library has been released.
Links:
Changelog
Enhancements
-
Support marking args in
Owl.System.cmd/3
as secret -
Add
Owl.System.shell/2
-
Change order of arguments in
Owl.IO.puts/2
-
Add
Owl.IO.inspect/3
-
Support ranges in
Owl.IO.multiselect/2
-
Add
solid_rounded
borders style -
Add
Owl.Data.slice/3
-
Add
Owl.Data.truncate/2
-
Add
Owl.System.daemon_cmd/4
andOwl.Task.run/1
Fixes
-
Send
:rendered
immediately on empty buffer - Don’t recreate timer on empty buffer
- Printing tag structs in autoselect
Shining Access
Blogged on how Access
is great, and how it has been used to produce LazyMap
, the structure which allows lazy evaluation of values, with caching and transparent access.
▸ https://rocket-science.ru/hacking/2022/05/21/shining-access
10 Years of Elixir
This event celebrates the tenth anniversary of the Elixir programming language. https://adolfont.github.io/service/events/10YearsOfElixir/
TIL: Cancel the scheduled send_after message
Sending a message to yourself as a process is an easy way to schedule an action to retry. However, it is not always necessary to send this message. Find out how easy it is to cancel a scheduled message.
More on: https://bartoszgorka.com/til-cancel-scheduled-send-after-message
Ecto's uniqueness constraint vs Rails' uniqueness validation
I really like how Ecto’s uniqueness constraints integrate with our database’s unique index. Having come from Rails, it was a pleasant surprise to know we could use the power of database constraints from within our app.
With Rails, we can add uniqueness validations, but there’s always a chance we’ll have race conditions. So, it always felt like a somewhat incomplete solution. Ecto solves that nicely by rescuing the database error and turning it into a nice error message.
✍️ https://www.germanvelasco.com/blog/ecto-uniqueness-constraint-vs-rails-uniqueness-validation
ThinkingElixir 099: Slipstream and Tree-Sitter with Michael Davis
In episode 99 of Thinking Elixir, Michael Davis explains Slipstream, a Phoenix channels websocket client library that enables Elixir applications to become a client of a Phoenix channel on another server. Out of this work, an underlying websocket library was created built on mint, which has now officially become part of the mint project. We talk about other libraries in the same space and why Slipstream was created. Michael was also involved in the recent Tree-Sitter Elixir work that Github celebrated and he shares some insight into that work as well!
(pt-BR) Criando aplicação com Phoenix Channels and NodeJS https://youtu.be/hdS7a8x5vdE
Criamos uma aplicação usando Phoenix Channels https://youtu.be/hdS7a8x5vdE
React and Phoenix LiveView in 2022
ReactJS in a LiveView world https://blog.nootch.net/post/react-and-phoenix-liveview-2022/
A library for writing readable regexes in functional style
Elixir library for writing regular expressions in functional style.
Features:
- Readable and human-friendly.
- Less error-prone.
- 100% compile-time, no overhead in runtime.
- Will fallback to runtime if needed (if you use dynamic content like variables).
- Well documented with lots of examples.
- Optimized and readable output.
Elixir meetup talk: Elixir, Kubernetes, and minikube
This Wed, May 11th, at 18:00 CET I’ll present my talk:
“Elixir, Kubernetes, and minikube”
This is a free & online meetup so you can join from everywhere.
I’ll have a surprise for the attendants, so don’t miss it.
Classifying Data Center IP Addresses in Phoenix with Radix Trees
When a new client connects to your web application, are they coming from a data center IP address? This is a common signal the client is a bot, and not a human user. If you own a ticket sales website, and hundreds of clients from data center IP addresses are buying tickets before real users, that’s a problem. Learn how to solve it in this blog post!