195: Migrating from Next.js to Phoenix

Release Date:

In this compelling episode, we sit down with Ben Reinhart who shares his journey of transitioning from the JavaScript ecosystem, specifically migrating off of Next.js and Vercel, to Elixir and Phoenix, with Fly.io as the new host. Ben discusses his frustrations with the complexity and performance issues he faced, and how the switch to Elixir helped streamline operations and improve the efficiency of his AI-focused product at Axflow. He delves into his strategic choice for leveraging the operational simplicity and real-time features of Phoenix, while also acknowledging trade-offs such as rebuilding front-end components. Join us to explore Ben's story, learn about the features of Elixir that helped him, and discover how the move has influenced Axflow's path towards finding product-market fit, and more!
Show Notes online - http://podcast.thinkingelixir.com/195 (http://podcast.thinkingelixir.com/195)
Elixir Community News
- Update on the phoenixlivereload package to v1.5 containing useful tips.
- https://www.elixirstreams.com/tips/streamserverlogstoconsole (https://www.elixirstreams.com/tips/stream_server_logs_to_console?utm_source=thinkingelixir&utm_medium=shownotes) – Tips on how to stream Elixir server logs to the browser console.
- https://github.com/phoenixframework/phoenixlivereload?tab=readme-ov-file#streaming-serving-logs-to-the-web-console (https://github.com/phoenixframework/phoenix_live_reload?tab=readme-ov-file#streaming-serving-logs-to-the-web-console?utm_source=thinkingelixir&utm_medium=shownotes) – Documentation on streaming Elixir server logs to the web console using phoenixlivereload v1.5.
- Advise to change Appearance theme to "Dark" in the browser console for better readability of debug-level messages.
- https://github.com/phoenixframework/phoenixlivereload?tab=readme-ov-file#jumping-to-heex-function-definitions (https://github.com/phoenixframework/phoenix_live_reload?tab=readme-ov-file#jumping-to-heex-function-definitions?utm_source=thinkingelixir&utm_medium=shownotes) – Information on the new feature "Jumping to HEEx function definitions" in phoenixlivereload v1.5.
- https://blog.appsignal.com/2024/03/19/direct-file-uploads-to-amazon-s3-with-phoenix-liveview.html (https://blog.appsignal.com/2024/03/19/direct-file-uploads-to-amazon-s3-with-phoenix-liveview.html?utm_source=thinkingelixir&utm_medium=shownotes) – A new blog post by Joshua Plique about uploading files directly to S3 using Phoenix LiveView.
- https://hexdocs.pm/phoenixliveview/uploads-external.html (https://hexdocs.pm/phoenix_live_view/uploads-external.html?utm_source=thinkingelixir&utm_medium=shownotes) – Official Phoenix documentation on direct file uploads to external services like S3.
- https://x.com/whatyouhide/status/1768345597369532660 (https://x.com/whatyouhide/status/1768345597369532660?utm_source=thinkingelixir&utm_medium=shownotes) – Andrea Leopardi working on integrating Open Telemetry (OTel) with Sentry for the Elixir SDK.
- https://github.com/getsentry/sentry-elixir/issues/538 (https://github.com/getsentry/sentry-elixir/issues/538?utm_source=thinkingelixir&utm_medium=shownotes) – A Github issue discussing the integration of OTel with Sentry's Elixir SDK.
- https://twitter.com/TylerAYoung/status/1769741350126149857 (https://twitter.com/TylerAYoung/status/1769741350126149857?utm_source=thinkingelixir&utm_medium=shownotes) – Tyler Young's tip for keeping Elixir tests running faster and asynchronously by using the Process dictionary instead of Application environment.
- https://saltycrackers.dev/posts/bye-bye-async-false/ (https://saltycrackers.dev/posts/bye-bye-async-false/?utm_source=thinkingelixir&utm_medium=shownotes) – An article discussing how to avoid async false in tests by using the Process dictionary.
- https://github.com/jbsf2/process-tree (https://github.com/jbsf2/process-tree?utm_source=thinkingelixir&utm_medium=shownotes) – Introduction of a new Elixir library, ProcessTree, to navigate the process ancestry hierarchy and aid in better test configuration.
- Advice on using the process dictionary check only in MIX_ENV=test to prevent runtime overhead in production.
Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at show@thinkingelixir.com (mailto:show@thinkingelixir.com)
Discussion Resources
- https://axflow.dev/ (https://axflow.dev/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://twitter.com/benjreinhart/status/1758616465589014531 (https://twitter.com/benjreinhart/status/1758616465589014531?utm_source=thinkingelixir&utm_medium=shownotes)
- https://exercism.org/tracks/elixir (https://exercism.org/tracks/elixir?utm_source=thinkingelixir&utm_medium=shownotes)
- https://www.youtube.com/watch?v=JvBT4XBdoUE (https://www.youtube.com/watch?v=JvBT4XBdoUE?utm_source=thinkingelixir&utm_medium=shownotes)
- https://www.typescriptlang.org/ (https://www.typescriptlang.org/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://nextjs.org/ (https://nextjs.org/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://vercel.com/ (https://vercel.com/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://supabase.com/ (https://supabase.com/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://remix.run/ (https://remix.run/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://inertiajs.com/ (https://inertiajs.com/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://vitejs.dev/ (https://vitejs.dev/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/fidr/phoenixlivereact (https://github.com/fidr/phoenix_live_react?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/geolessel/react-phoenix (https://github.com/geolessel/react-phoenix?utm_source=thinkingelixir&utm_medium=shownotes)
- https://www.pinterest.com/ (https://www.pinterest.com/?utm_source=thinkingelixir&utm_medium=shownotes)
- https://fly.io/docs/gpus/ (https://fly.io/docs/gpus/?utm_source=thinkingelixir&utm_medium=shownotes)
Guest Information
- https://twitter.com/benjreinhart (https://twitter.com/benjreinhart?utm_source=thinkingelixir&utm_medium=shownotes) – Ben on Twitter
- https://twitter.com/axflow_dev (https://twitter.com/axflow_dev?utm_source=thinkingelixir&utm_medium=shownotes) – AxFlow on Twitter
- https://github.com/benjreinhart/ (https://github.com/benjreinhart/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github
- https://benreinhart.com/ (https://benreinhart.com/?utm_source=thinkingelixir&utm_medium=shownotes) – Blog
- https://axflow.dev/ (https://axflow.dev/?utm_source=thinkingelixir&utm_medium=shownotes) – AxFlow Website
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Message the show on Fediverse - @ThinkingElixir@genserver.social (https://genserver.social/ThinkingElixir)
- Email the show - show@thinkingelixir.com (mailto:show@thinkingelixir.com)
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- Mark Ericksen on Fediverse - @brainlid@genserver.social (https://genserver.social/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- David Bernheisel on Fediverse - @dbern@genserver.social (https://genserver.social/dbern)
- Cade Ward - @cadebward (https://twitter.com/cadebward)
- Cade Ward on Fediverse - @cadebward@genserver.social (https://genserver.social/cadebward)

195: Migrating from Next.js to Phoenix

Title
195: Migrating from Next.js to Phoenix
Copyright
Release Date

flashback