Listen "166: Filtering, ordering and pagination via Flop"
Episode Synopsis
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 (http://podcast.thinkingelixir.com/166)
Elixir Community News
- https://bsky.app/profile/josevalim.bsky.social/post/3k56qd2q2xf2g (https://bsky.app/profile/josevalim.bsky.social/post/3k56qd2q2xf2g?utm_source=thinkingelixir&utm_medium=shownotes) – A tease about noticing something new.
- https://hexdocs.pm/elixir/main/GenServer.html (https://hexdocs.pm/elixir/main/GenServer.html?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir docs getting diagram support? 1.16.0-dev
- https://github.com/erlang/otp/issues/7292#issuecomment-1688181562 (https://github.com/erlang/otp/issues/7292#issuecomment-1688181562?utm_source=thinkingelixir&utm_medium=shownotes) – Followup on that OTP 26 “overrun stack and heap” bug
- https://github.com/phoenixframework/dns_cluster (https://github.com/phoenixframework/dns_cluster?utm_source=thinkingelixir&utm_medium=shownotes) – The dnscluster project was brought under the phoenixframework Github org
- https://fly.io/phoenix-files/beam-clustering-made-easy/ (https://fly.io/phoenix-files/beam-clustering-made-easy/?utm_source=thinkingelixir&utm_medium=shownotes) – Blog post about new Phoenix library dnscluster
- https://github.com/elixir-tools/next-ls/releases/tag/v0.10.0 (https://github.com/elixir-tools/next-ls/releases/tag/v0.10.0?utm_source=thinkingelixir&utm_medium=shownotes) – Next LS v0.10.0 Released
- https://open-vsx.org/extension/elixir-tools/elixir-tools (https://open-vsx.org/extension/elixir-tools/elixir-tools?utm_source=thinkingelixir&utm_medium=shownotes) – Next LS extension is listed on VSCode's open extension repository
- https://twitter.com/ashframework/status/1692767604622922152 (https://twitter.com/ashframework/status/1692767604622922152?utm_source=thinkingelixir&utm_medium=shownotes) – The Ash Framework announced the new release of a double-entry accounting project
- https://github.com/ash-project/ashdoubleentry (https://github.com/ash-project/ash_double_entry?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/ashdoubleentry/get-started-with-double-entry.html (https://hexdocs.pm/ash_double_entry/get-started-with-double-entry.html?utm_source=thinkingelixir&utm_medium=shownotes)
- https://thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/ (https://thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/?utm_source=thinkingelixir&utm_medium=shownotes) – Post that connects many ML libraries to their Python counterparts.
- https://twitter.com/akoutmos/status/1693669295585161394 (https://twitter.com/akoutmos/status/1693669295585161394?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir tip on using Elixir as a shell scripting solution
- https://twitter.com/akoutmos/status/1693322879230672905 (https://twitter.com/akoutmos/status/1693322879230672905?utm_source=thinkingelixir&utm_medium=shownotes) – Version 0.5.0 of DenoEx was released.
- https://github.com/akoutmos/deno_ex (https://github.com/akoutmos/deno_ex?utm_source=thinkingelixir&utm_medium=shownotes)
- https://deno.com/ (https://deno.com/?utm_source=thinkingelixir&utm_medium=shownotes) – Deno project is a "secure by default" Rust-based alternate JavaScript runtime
- https://twitter.com/PJUllrich/status/1693232219198726620 (https://twitter.com/PJUllrich/status/1693232219198726620?utm_source=thinkingelixir&utm_medium=shownotes) – Tip on how we can use tags to more cleanly customize tests.
- https://www.peterullrich.com/exunit-context-tags (https://www.peterullrich.com/exunit-context-tags?utm_source=thinkingelixir&utm_medium=shownotes)
- https://dagger.io/ (https://dagger.io/?utm_source=thinkingelixir&utm_medium=shownotes) – Dagger.io is a programmable CI/CD engine that runs your pipelines in containers.
- https://hex.pm/packages/dagger (https://hex.pm/packages/dagger?utm_source=thinkingelixir&utm_medium=shownotes) – Dagger.io now supports Elixir
Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at [email protected] (mailto:[email protected])
Discussion Resources
- https://github.com/woylie/flop (https://github.com/woylie/flop?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/woylie/flop_phoenix (https://github.com/woylie/flop_phoenix?utm_source=thinkingelixir&utm_medium=shownotes)
- https://scoville.jp/ (https://scoville.jp/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://en.wikipedia.org/wiki/Scoville_scale (https://en.wikipedia.org/wiki/Scoville_scale?utm_source=thinkingelixir&utm_medium=shownotes)
- https://elixirforum.com/t/flop-filtering-sorting-and-pagination-for-ecto/51750/25 (https://elixirforum.com/t/flop-filtering-sorting-and-pagination-for-ecto/51750/25?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/flop/Flop.Schema.html (https://hexdocs.pm/flop/Flop.Schema.html?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/flop/Flop.Filter.html#t:op/0 (https://hexdocs.pm/flop/Flop.Filter.html#t:op/0?utm_source=thinkingelixir&utm_medium=shownotes)
- https://relay.dev/graphql/connections.htm (https://relay.dev/graphql/connections.htm?utm_source=thinkingelixir&utm_medium=shownotes) – Specification used in Flop library for cursor pagination
- https://hexdocs.pm/flop/Flop.Relay.html (https://hexdocs.pm/flop/Flop.Relay.html?utm_source=thinkingelixir&utm_medium=shownotes) – Format the result sets in an Absinthe structure
- https://hexdocs.pm/flop/Flop.html#withnamedbindings/4 (https://hexdocs.pm/flop/Flop.html#with_named_bindings/4?utm_source=thinkingelixir&utm_medium=shownotes)
- https://slack.engineering/evolving-api-pagination-at-slack/ (https://slack.engineering/evolving-api-pagination-at-slack/?utm_source=thinkingelixir&utm_medium=shownotes) – Recommended resource on pagination
- https://hex.pm/packages/quarto (https://hex.pm/packages/quarto?utm_source=thinkingelixir&utm_medium=shownotes) – Other library that helps with filtering or pagination
- https://github.com/drewolson/scrivener (https://github.com/drewolson/scrivener?utm_source=thinkingelixir&utm_medium=shownotes) – Other library that helps with filtering or pagination
- https://elixirstream.dev/tips/cfc62b74-3ad9-427e-b9d2-8e8c768f8c57 (https://elixirstream.dev/tips/cfc62b74-3ad9-427e-b9d2-8e8c768f8c57?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/ectopsqlextras/readme.html#records_rank (https://hexdocs.pm/ecto_psql_extras/readme.html#records_rank?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/woylie/flop_phoenix#liveview-streams (https://github.com/woylie/flop_phoenix#liveview-streams?utm_source=thinkingelixir&utm_medium=shownotes) – flop_phoenix with streams
Guest Information
- https://github.com/woylie/ (https://github.com/woylie/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github
- https://www.mathiaspolligkeit.com (https://www.mathiaspolligkeit.com?utm_source=thinkingelixir&utm_medium=shownotes) – Blog
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Message the show on Fediverse - @[email protected] (https://genserver.social/ThinkingElixir)
- Email the show - [email protected] (mailto:[email protected])
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- Mark Ericksen on Fediverse - @[email protected] (https://genserver.social/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- David Bernheisel on Fediverse - @[email protected] (https://genserver.social/dbern)
- Cade Ward - @cadebward (https://twitter.com/cadebward)
- Cade Ward on Fediverse - @[email protected] (https://genserver.social/cadebward)
Show Notes online - http://podcast.thinkingelixir.com/166 (http://podcast.thinkingelixir.com/166)
Elixir Community News
- https://bsky.app/profile/josevalim.bsky.social/post/3k56qd2q2xf2g (https://bsky.app/profile/josevalim.bsky.social/post/3k56qd2q2xf2g?utm_source=thinkingelixir&utm_medium=shownotes) – A tease about noticing something new.
- https://hexdocs.pm/elixir/main/GenServer.html (https://hexdocs.pm/elixir/main/GenServer.html?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir docs getting diagram support? 1.16.0-dev
- https://github.com/erlang/otp/issues/7292#issuecomment-1688181562 (https://github.com/erlang/otp/issues/7292#issuecomment-1688181562?utm_source=thinkingelixir&utm_medium=shownotes) – Followup on that OTP 26 “overrun stack and heap” bug
- https://github.com/phoenixframework/dns_cluster (https://github.com/phoenixframework/dns_cluster?utm_source=thinkingelixir&utm_medium=shownotes) – The dnscluster project was brought under the phoenixframework Github org
- https://fly.io/phoenix-files/beam-clustering-made-easy/ (https://fly.io/phoenix-files/beam-clustering-made-easy/?utm_source=thinkingelixir&utm_medium=shownotes) – Blog post about new Phoenix library dnscluster
- https://github.com/elixir-tools/next-ls/releases/tag/v0.10.0 (https://github.com/elixir-tools/next-ls/releases/tag/v0.10.0?utm_source=thinkingelixir&utm_medium=shownotes) – Next LS v0.10.0 Released
- https://open-vsx.org/extension/elixir-tools/elixir-tools (https://open-vsx.org/extension/elixir-tools/elixir-tools?utm_source=thinkingelixir&utm_medium=shownotes) – Next LS extension is listed on VSCode's open extension repository
- https://twitter.com/ashframework/status/1692767604622922152 (https://twitter.com/ashframework/status/1692767604622922152?utm_source=thinkingelixir&utm_medium=shownotes) – The Ash Framework announced the new release of a double-entry accounting project
- https://github.com/ash-project/ashdoubleentry (https://github.com/ash-project/ash_double_entry?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/ashdoubleentry/get-started-with-double-entry.html (https://hexdocs.pm/ash_double_entry/get-started-with-double-entry.html?utm_source=thinkingelixir&utm_medium=shownotes)
- https://thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/ (https://thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/?utm_source=thinkingelixir&utm_medium=shownotes) – Post that connects many ML libraries to their Python counterparts.
- https://twitter.com/akoutmos/status/1693669295585161394 (https://twitter.com/akoutmos/status/1693669295585161394?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir tip on using Elixir as a shell scripting solution
- https://twitter.com/akoutmos/status/1693322879230672905 (https://twitter.com/akoutmos/status/1693322879230672905?utm_source=thinkingelixir&utm_medium=shownotes) – Version 0.5.0 of DenoEx was released.
- https://github.com/akoutmos/deno_ex (https://github.com/akoutmos/deno_ex?utm_source=thinkingelixir&utm_medium=shownotes)
- https://deno.com/ (https://deno.com/?utm_source=thinkingelixir&utm_medium=shownotes) – Deno project is a "secure by default" Rust-based alternate JavaScript runtime
- https://twitter.com/PJUllrich/status/1693232219198726620 (https://twitter.com/PJUllrich/status/1693232219198726620?utm_source=thinkingelixir&utm_medium=shownotes) – Tip on how we can use tags to more cleanly customize tests.
- https://www.peterullrich.com/exunit-context-tags (https://www.peterullrich.com/exunit-context-tags?utm_source=thinkingelixir&utm_medium=shownotes)
- https://dagger.io/ (https://dagger.io/?utm_source=thinkingelixir&utm_medium=shownotes) – Dagger.io is a programmable CI/CD engine that runs your pipelines in containers.
- https://hex.pm/packages/dagger (https://hex.pm/packages/dagger?utm_source=thinkingelixir&utm_medium=shownotes) – Dagger.io now supports Elixir
Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at [email protected] (mailto:[email protected])
Discussion Resources
- https://github.com/woylie/flop (https://github.com/woylie/flop?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/woylie/flop_phoenix (https://github.com/woylie/flop_phoenix?utm_source=thinkingelixir&utm_medium=shownotes)
- https://scoville.jp/ (https://scoville.jp/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://en.wikipedia.org/wiki/Scoville_scale (https://en.wikipedia.org/wiki/Scoville_scale?utm_source=thinkingelixir&utm_medium=shownotes)
- https://elixirforum.com/t/flop-filtering-sorting-and-pagination-for-ecto/51750/25 (https://elixirforum.com/t/flop-filtering-sorting-and-pagination-for-ecto/51750/25?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/flop/Flop.Schema.html (https://hexdocs.pm/flop/Flop.Schema.html?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/flop/Flop.Filter.html#t:op/0 (https://hexdocs.pm/flop/Flop.Filter.html#t:op/0?utm_source=thinkingelixir&utm_medium=shownotes)
- https://relay.dev/graphql/connections.htm (https://relay.dev/graphql/connections.htm?utm_source=thinkingelixir&utm_medium=shownotes) – Specification used in Flop library for cursor pagination
- https://hexdocs.pm/flop/Flop.Relay.html (https://hexdocs.pm/flop/Flop.Relay.html?utm_source=thinkingelixir&utm_medium=shownotes) – Format the result sets in an Absinthe structure
- https://hexdocs.pm/flop/Flop.html#withnamedbindings/4 (https://hexdocs.pm/flop/Flop.html#with_named_bindings/4?utm_source=thinkingelixir&utm_medium=shownotes)
- https://slack.engineering/evolving-api-pagination-at-slack/ (https://slack.engineering/evolving-api-pagination-at-slack/?utm_source=thinkingelixir&utm_medium=shownotes) – Recommended resource on pagination
- https://hex.pm/packages/quarto (https://hex.pm/packages/quarto?utm_source=thinkingelixir&utm_medium=shownotes) – Other library that helps with filtering or pagination
- https://github.com/drewolson/scrivener (https://github.com/drewolson/scrivener?utm_source=thinkingelixir&utm_medium=shownotes) – Other library that helps with filtering or pagination
- https://elixirstream.dev/tips/cfc62b74-3ad9-427e-b9d2-8e8c768f8c57 (https://elixirstream.dev/tips/cfc62b74-3ad9-427e-b9d2-8e8c768f8c57?utm_source=thinkingelixir&utm_medium=shownotes)
- https://hexdocs.pm/ectopsqlextras/readme.html#records_rank (https://hexdocs.pm/ecto_psql_extras/readme.html#records_rank?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/woylie/flop_phoenix#liveview-streams (https://github.com/woylie/flop_phoenix#liveview-streams?utm_source=thinkingelixir&utm_medium=shownotes) – flop_phoenix with streams
Guest Information
- https://github.com/woylie/ (https://github.com/woylie/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github
- https://www.mathiaspolligkeit.com (https://www.mathiaspolligkeit.com?utm_source=thinkingelixir&utm_medium=shownotes) – Blog
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Message the show on Fediverse - @[email protected] (https://genserver.social/ThinkingElixir)
- Email the show - [email protected] (mailto:[email protected])
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- Mark Ericksen on Fediverse - @[email protected] (https://genserver.social/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- David Bernheisel on Fediverse - @[email protected] (https://genserver.social/dbern)
- Cade Ward - @cadebward (https://twitter.com/cadebward)
- Cade Ward on Fediverse - @[email protected] (https://genserver.social/cadebward)
More episodes of the podcast Thinking Elixir Podcast
283: Erlang Turns 27 and React at Risk
16/12/2025
282: Type Systems and View Transitions
09/12/2025
281: Planning for the Unexpected
02/12/2025
280: Dark Matter Developers
25/11/2025
279: Hot Code Upgrades and Hotter AI Takes
18/11/2025
278: WAL-ing Through Database Changes
11/11/2025
277: Searching Across the Hexiverse
04/11/2025
276: Elixir v1.19 Types and Speed
28/10/2025
275: From Slop to Success?
21/10/2025
274: Protocols, Permissions, and Performance
14/10/2025
ZARZA We are Zarza, the prestigious firm behind major projects in information technology.