166: Filtering, ordering and pagination via Flop

Most of us have created our own filtering, sorting and pagination code before in one project after the other. Mathias Polligkeit got tired of doing that too and created the flop library to wrap it all into a portable and reusable solution. We talk with Mathias to learn what it can do and are pleased to learn it's surpassed our own solutions. He also created a flop_phoenix package with heex components to help build filter forms and tables. A fun look into an interesting library! Show Notes online - http://podcast.thinkingelixir.com/166 Elixir Community News https://bsky.app/profile/josevalim.bsky.social/post/3k56qd2q2xf2g – A tease about noticing something new. https://hexdocs.pm/elixir/main/GenServer.html – Elixir docs getting diagram support? 1.16.0-dev https://github.com/erlang/otp/issues/7292#issuecomment-1688181562 – Followup on that OTP 26 “overrun stack and heap” bug https://github.com/phoenixframework/dns_cluster – The dns_cluster project was brought under the phoenixframework Github org https://fly.io/phoenix-files/beam-clustering-made-easy/ – Blog post about new Phoenix library dns_cluster https://github.com/elixir-tools/next-ls/releases/tag/v0.10.0 – Next LS v0.10.0 Released https://open-vsx.org/extension/elixir-tools/elixir-tools – Next LS extension is listed on VSCode's open extension repository https://twitter.com/ashframework/status/1692767604622922152 – The Ash Framework announced the new release of a double-entry accounting project https://github.com/ash-project/ash_double_entry https://hexdocs.pm/ash_double_entry/get-started-with-double-entry.html https://thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/ – Post that connects many ML libraries to their Python counterparts. https://twitter.com/akoutmos/status/1693669295585161394 – Elixir tip on using Elixir as a shell scripting solution https://twitter.com/akoutmos/status/1693322879230672905 – Version 0.5.0 of DenoEx was released. https://github.com/akoutmos/deno_ex https://deno.com/ – Deno project is a "secure by default" Rust-based alternate JavaScript runtime https://twitter.com/PJUllrich/status/1693232219198726620 – Tip on how we can use tags to more cleanly customize tests. https://www.peterullrich.com/exunit-context-tags https://dagger.io/ – Dagger.io is a programmable CI/CD engine that runs your pipelines in containers. https://hex.pm/packages/dagger – Dagger.io now supports Elixir Do you have some Elixir news to share? Tell us at @ThinkingElixir or email at show@thinkingelixir.com Discussion Resources https://github.com/woylie/flop https://github.com/woylie/flop_phoenix https://scoville.jp/ https://en.wikipedia.org/wiki/Scoville_scale https://elixirforum.com/t/flop-filtering-sorting-and-pagination-for-ecto/51750/25 https://hexdocs.pm/flop/Flop.Schema.html https://hexdocs.pm/flop/Flop.Filter.html#t:op/0 https://relay.dev/graphql/connections.htm – Specification used in Flop library for cursor pagination https://hexdocs.pm/flop/Flop.Relay.html – Format the result sets in an Absinthe structure https://hexdocs.pm/flop/Flop.html#with_named_bindings/4 https://slack.engineering/evolving-api-pagination-at-slack/ – Recommended resource on pagination https://hex.pm/packages/quarto – Other library that helps with filtering or pagination https://github.com/drewolson/scrivener – Other library that helps with filtering or pagination https://elixirstream.dev/tips/cfc62b74-3ad9-427e-b9d2-8e8c768f8c57 https://hexdocs.pm/ecto_psql_extras/readme.html#records_rank https://github.com/woylie/flop_phoenix#liveview-streams – flop_phoenix with streams Guest Information https://github.com/woylie/ – on Github https://www.mathiaspolligkeit.com – Blog Find us online Message the show - @ThinkingElixir Message the show on Fediverse - @ThinkingElixir@genserver.social Email the show - show@thinkingelixir.com Mark Ericksen - @brainlid Mark Ericksen on Fediverse - @brainlid@genserver.social David Bernheisel - @bernheisel David Bernheisel on Fediverse - @dbern@genserver.social Cade Ward - @cadebward Cade Ward on Fediverse - @cadebward@genserver.social Sponsored By:Fly.io: Fly.io is a great place to deploy your next Phoenix application! Check them out!

Om Podcasten

The Thinking Elixir podcast is a weekly show where we talk about the Elixir programming language and the community around it. We cover news and interview guests to learn more about projects and developments in the community. Whether you are already experienced with Elixir or just exploring the language, this show is created with you in mind. We discuss community news, Functional Programming, transitioning from OOP, coding conventions, and more. Guests visit the show to help challenge our assumptions, learn about new developments and grow in the process. Subscribe to join us on this journey!