ThinkingElixir 120: Localize and Personalize Your Elixir Apps
Episode 120 of Thinking Elixir. Localizing and personalizing an application is separate from the language used in the interface. Kip Cole explains how the mismatch of computers with the culture of our audience creates friction we may not even be aware of. In fact, our benign app may be unintentionally offensive to millions of people! Kip created the libraries ex_cldr, money and tempo to help Elixir developers localize applications in a culture aware way. What does that mean? It means using minimal information we can infer how names should appear, how numbers are represented, the assumed numeric rounding rules, first day of the week, the calendar being used, and more!
Phoenix LiveView 0.18: New Special HTML Attributes
Let’s check out Phoenix LiveView 0.18’s new special HTML attributes to help you write cleaner HTML. https://blog.appsignal.com/2022/10/11/phoenix-liveview-018-new-special-html-attributes.html
Cursor Based Pagination
Episode 152: Cursor Based Pagination with Paginator
https://elixircasts.io/cursor-based-pagination-with-paginator
Plucking the "A" from PETAL
This post asks if we can remove Alpine from the PETAL stack. Can we do everything we need with just LiveView? Also, let’s explore an area where LiveView can still improve.
Chat Bots as UI from ElixirConf Africa 2022
For people that want Chat Bots with Elixir, or experimental talk presentations and video production. https://www.youtube.com/watch?v=DFGHaER6_j4
Prevent double-bookings with Exclusion Constraints in Postgres using Ecto
Exclusion constraints in Postgres can efficiently detect overlapping bookings, appointments, and schedules and block their creation. This blog post explains how to implement them using Ecto.
https://www.peterullrich.com/prevent-overlapping-schedules-with-ecto-and-postgres
Adding Elixir to Erlang via Rebar3
Adding Elixir to Erlang via Rebar3 - https://itnext.io/adding-elixir-to-erlang-via-rebar3-2ad83476b627
IntelliJ Elixir v13.2.1
Changelog
v13.2.1
Bug Fixes
-
Ignore
PsiErrorElementwhen collecting doc comments. - Fix README typos.
- Log before and after setting mirror for decompiled files. Parsing complex decompiles can freeze the IDE. Logging before parsing the decompiles will give a chance of finding the file and recovering the decompiled code to find the error or complexity that needs to be suppressed.
-
Use
Options.truncateDecompiledBodyz on Elixir decompiled bodies too. Previously, this was only used for Erlang functions. Fixes parsing decompiled code causing freezes for some files. * Ignoreauthors: …for documentation when injecting Markdown. * StopprependQualifierswhen reaching a qualified bracket operation (Alias.function[key]). * Skip-1and other unary operations when resolving types. * Ignore maps at the root of files when collecting doc comments. * ReturnemptySequencefromchildExpressionswhenPsiElementhas nofirstChildorlastChild. * Don’t descend inside struct literal when resolving types. * Ignore injecting Markdown in calls that read the text from a file, such as in@moduledoc File.read!(Path.join([DIR, “..”, “README.md”]))* Ignore undocumented script code at root of files. * Alias used in qualified call. * Integers * Floats * Tuples * StopancestorTypeSpeconQualifiedMultipleAliases. * Ignore pipelines for injecting Markdown in doc comments. * Ignore uselesswarn_missinginedeliver‘sdistillery` dep. * Stop accumulating qualifiers when bracket operation is hit either as qualifier or argument. Installation Instructions
Doing expensive things only once in Elixir
A simple solution to the stampeding herd problem and a library that wraps it up: https://dev.to/palm86/doing-things-only-once-in-elixir-4hdg
Expose GraphQL operation in logs with Absinthe
We always use named operations in our GraphQL requests, so we thought it would be a good idea to include the operation name in logs so instead of:
20:33:56.107 request_id=… [info] POST /graphql
20:33:56.239 request_id=… [info] Sent 200 in 84ms
We have
20:33:56.107 request_id=… [info] POST /graphql
20:33:56.239 request_id=… graphql_operation_name=UserProfile [info] Sent 200 in 84ms
We used Absinthe’s powerful middleware feature to achieve this: https://craft.mirego.com/2022-10-06-expose-graphql-operation-in-logs-with-absinthe
Elixir vs Cybersecurity - is Elixir Language a Safe Technology?
In this post, I will introduce you to the world of cybersecurity and tell you how Elixir programming language works in this environment. https://curiosum.com/blog/elixir-cybersecurity-safe-technology
Detecting SQL Injection in Phoenix with Sobelow
Learn how Ecto encourages you to write secure code, what a function vulnerable to SQL injection looks like, and how Sobelow prevents this vulnerabliity.
What is App Scaling and why Elixir is Perfect for Scalable Applications?
No more rewriting code,
No more loading delays
No more limiting the number of users
Elixir is one of those languages that works great for MVP, but also allows you to scale your application without disrupting its operation.
In this blog post, I explained what app scaling is and why Elixir is the perfect language for scalable apps.
https://curiosum.com/blog/what-is-app-scaling-why-elixir-perfect-scalable-app
ThinkingElixir 119: NPM CLI Maintainer Moves to Phoenix and Rust
Episode 119 of Thinking Elixir. Kat Marchán was the maintainer of NPM CLI for 5 years but now works at Microsoft on the VisualStudio product. Kat is passionate about Rust and uses Elixir and Phoenix to build a new Banchan Art site to serve artists. It helps connect artists with clients who want to commission custom artwork. The goal is to create a platform that does not exploit artists like many of the existing options. Amazingly, the Banchan Art Elixir project is OpenSource as well!
Faster XML Parsing with Elixir
Explore how you can parse XML effectively with Elixir using a few different methods. https://blog.appsignal.com/2022/10/04/faster-xml-parsing-with-elixir
Q&A with Sasa Juric! FREE & ONLINE
The 10th edition of Elixir Meetup hosted by Curiosum on Wednesday, October 12, 2022 at 18 CET!
During the special edition, Joshua Plicque will talk about 3 Secrets to Unlocking Elite Developer Productivity and you will have the unique opportunity to ask Sasa Juric about anything you want in an hour-long Q&A!
Join the event! https://curiosum.com/meetups/elixir
Probuild-ex : Create a league of legends pro players build trackers with elixir Part 2
Second part of a series to create a probuild tracker for the game league of legends. Together we will build probuild-ex using elixir, phoenix, liveview and friends.
Infinitely Scroll Images in LiveView
We see plenty of examples around the web of infinite scrolling content. Phoenix LiveView gives us some nifty abilities to do this elegantly and smoothly without needing any frontend frameworks.
In this post we’re going to build a very simple infinite scroll page with LiveView, using TailwindCSS for the grid layout. Check out the Demo app and the code if you want to follow along.
By Jaeyson Anthony Y.
https://fly.io/phoenix-files/infinitely-scroll-images-in-liveview/
Optimize Ecto's insert_all with Placeholders
Learn how to never sent duplicate data to your database again with insert_all/3 calls using placeholders.
https://www.peterullrich.com/optimize-ectos-insert-all-with-placeholders
