Catching (probably all) email SPAM with a really tasty honeypot
How we designed an email honeypot for our landing page that so far catches all SPAM emails: https://nobilisdata.com/blog/catching-email-spam-with-a-really-good-honeypot/
Two Sum Problem and Solution
Leetcode Two Sum solution with some details: https://readreplica.io/leetcode-two-sum-problem-elixir-solution/
Creating a Toggle Button in LiveView
How to create a toggle button in Phoenix LiveView: https://youtu.be/vBgZvQapqhs
Cachex v3.5 and v3.6 Released!
A long time coming, but Cachex has received some love and attention in the last month or two. A v3.5.0 release happened last month, with several fun things such as:
-
Better stack handling across
fetch/4calls - More efficient LRW operations
- Non-blocking cache warmers
-
Updating to use and enforce
mix format
Followed up in the last day or so with a v3.6.0 which (finally) introduces the ability to set an expiration from within a fetch/4 fallback function directly.
More to come later in a blog post, probably, but just wanted to put it out there so people know to update and check it out :)
ThinkingElixir 137: Upgrading to Phoenix 1.7
Episode 137 of Thinking Elixir. After covering the week’s news, we talk about upgrading our apps to Phoenix 1.7.0 and what the experience is like. We include tips and resources that we found helpful and talk about the backward compatibility of the project and what that means for both personal projects and working teams.
Using Github Actions with Elixir
Github actions is awesome because it automatically runs tests and checks during a pull request for your project, making your project more reliable. Learn how to implement Continuous Integration and Continuous Delivery(CI/CD) with Github Actions in this tutorial.
Phoenix 1.7's verified routes
I had questions about Phoenix’s new verified routes:
- Is it helpful with typos and undefined routes?
- How to use it in paths with arguments?
- What about Phoenix.Param protocol?
- How does it handle query params?
Decided to investigate and wrote a post about it 👇 https://germanvelasco.com/blog/phoenix-1-7-verified-routes
Rustler - Using Rust crates in Elixir
Didn’t find the Elixir package you wanted? Let’s see if Rust can help with that.
I recently needed a function to create and edit PDF files with Elixir for a small private project. I searched for some packages and the most notable one for Elixir is elixir-pdf, but it only offers to create PDFs without additional manipulation. That was fine by me since I wanted an excuse to do some more things in Rust anyway, and I found lopdf.
https://mainmatter.com/blog/2023/02/01/using-rust-crates-in-elixir/
Elixir/Phoenix Security Live Coding: Preventing SQL Injection in Ecto
Interested in Elixir and Phoenix security? Join the founder of Paraxial.io, Michael Lubas, for a live coding stream, “Preventing SQL Injection in Ecto”, Feb 15th.
What’s new in Livebook 0.8.1
In this blog post, we’ll take a look at some of the new features released with Livebook 0.8.1, such as the new file and audio inputs, support for capturing images from the camera, loading environment variables into Livebook secrets, and more.
https://news.livebook.dev/what-s-new-in-livebook-0.8.1-NSbeg
ThinkingElixir 136: Elixir around the Bonfire
Episode 136 of Thinking Elixir. The “fediverse” has become a hot topic of late. Fortunately, Mayel de Boniol joined to explain what federated means, what ActivityPub is, and more. Mayel is more than just knowledgeable in this area, he created Bonfire Networks as well! It’s written in Elixir and is a framework people can use to build their own federated servers to meet their specific needs, be that for tweet-like messages, meetup coordination, collaborative task lists or your own custom extensions. Being written in Elixir and OpenSource, he explains a number of libraries that can help those of us not even building a social app at all!
Tag all the things!
There are several ways to add a “tagging” feature to an app. Sometimes it requires multiple tables and joins to solve the problem. Sometimes a simpler approach is both better and easier. This article explores a simple approach to tagging with Postgres array fields, a GIN index, and Ecto to add tagging functionality to an Elixir system.
Building Twitter with Ash + LiveView + Creator of Ash Framework
Together with the creator of Ash Framework, Zach Daniel, we combo Ash + LiveView to build a fully-featured twitter clone, along with a working admin panel!
Embedding XML templates in Phoenix 1.7
I recently ran into a problem embedding XML templates in a Phoenix 1.7 application. It took me a while to figure out what was going wrong and so I thought I’d write up this blog post to try and save other people time in the future.
https://culttt.com/2023/01/27/embedding-xml-templates-phoenix-1-7
Copy to Clipboard With Phoenix LiveView
Jason Stiebs shows a couple ways for a LiveView to make it easy for users to click and copy an important value to their clipboard. He shows two handy JS approaches that make it nicely reusable in an app!
https://fly.io/phoenix-files/copy-to-clipboard-with-phoenix-liveview/
Oban v2.14 Released
Oban v2.14 is released with a smattering of enhancements and a few major features, namely:
- 🪶 SQLite3 support via the Lite engine
- 👩🔬 Smarter job fetching (no more “stuck” queues in any environment)
- 📡 Complete system tracking with telemetry enhancements
📰 See the for details, examples, and upgrade instructions https://hexdocs.pm/oban/2.14.0/changelog.html
Video object detection in Elixir using Nx and Bumblebee
In this tutorial we’re going to be building video object detection in Elixir using Nx and Bumblebee. We will parse a video and then run it through a neural network to make a prediction about the object that is displayed in the frame.
https://culttt.com/2023/01/26/video-object-detection-elixir-nx-bumblebee
How to Use Head and Tail in Elixir
This post covers the basics of how head and tail work with linked lists in general, as well as how to handle them specifically within Elixir. https://www.brewinstallbuzzwords.com/posts/elixir-head-tail/
Elixir Contexts in Action
I shared in this post some thoughts about organizing Elixir applications with contexts with real-world code examples.
Contexts are a simple yet powerful technique to handle complexities in an Elixir codebase. They are all about organizing applications through namespaces that group together the business logic for a specific domain or feature of the application, allowing us to break down the code into smaller and simpler chunks.
