POPULARITY
The Elixir Wizards welcome Jim Freeze, organizer of ElixirConf and creator of the Horizon library. Jim shares his journey from organizing Ruby conferences to founding and growing ElixirConf into the community cornerstone it is today. He reflects on the challenges of running a major conference, how COVID-19 shaped the event, and why the talks remain an evergreen resource for the Elixir ecosystem. We discuss Horizon, Jim's deployment library for Elixir and Phoenix applications with Postgres on FreeBSD. Driven by a need for simplicity and cost-effectiveness, Jim explains how Horizon minimizes external dependencies while delivering fault-tolerant and streamlined setups. He compares it to tools like Fly, Terraform, and Ansible, highlighting its low cognitive load and flexibility—key benefits for developers seeking more control over their deployment environments. Jim also unpacks the broader value of understanding and customizing your deployment stack rather than relying solely on managed services. He discusses the benefits of using FreeBSD, including its stability, security, and performance advantages, as well as its robust ZFS file system. Jim emphasizes the importance of coherent deployment workflows, community collaboration, and contributions to open-source projects like Horizon. He invites listeners to explore Horizon, share feedback, and own their deployments. Topics discussed in this episode: Jim Freeze's background organizing RubyConf and founding ElixirConf Reducing reliance on managed services and external dependencies Simplifying deployments with minimal tools and lower cognitive overhead The trade-offs of cutting-edge tools vs. stable, well-documented solutions The importance of customizing deployment tools to meet specific needs Addressing challenges with Tailwind compatibility Streamlining the FreeBSD installation process for Horizon users Community collaboration: contributing to open-source tools Jim's vision for Horizon: PKI support, hot standby features, and serverless potential Links mentioned Nine Minutes of Elixir (https://youtu.be/hht9s6nAAx8?si=ocrk1wQtGplSGL0B) https://www.youtube.com/@ElixirConf https://github.com/liveview-native https://github.com/elixir-nx/nx https://2024.elixirconf.com/ https://github.com/jfreeze/horizon https://hexdocs.pm/horizon/deploying-with-horizon.html#web-cluster-topology https://kamal-deploy.org/ https://fly.io/ https://aws.amazon.com/console/ https://www.digitalocean.com/ https://cloud.google.com/ https://www.cloudflare.com/ https://www.hetzner.com/ https://www.proxmox.com/en/ https://nginx.org/ https://github.com/openzfs/zfs Zettabyte File System https://en.wikipedia.org/wiki/ZFS https://www.postgresql.org/ https://www.terraform.io/ https://www.ansible.com/ https://docs.freebsd.org/ https://www.redhat.com/ https://ubuntu.com/ https://esbuild.github.io/ Listener's Survey: https://smr.tl/EWS13 Special Guest: Jim Freeze.
News includes a proof of concept for Phoenix Sync by José Valim, exciting new developments in Elixir's type system, Algora.tv's open-source Twitch for developers, Sean Moriarity's insights on the future of Nx, Axon, and Bumblebee, a powerful new feature in Livebook integrating with Fly.io, and more! Show Notes online - http://podcast.thinkingelixir.com/219 (http://podcast.thinkingelixir.com/219) Elixir Community News - https://github.com/josevalim/sync (https://github.com/josevalim/sync?utm_source=thinkingelixir&utm_medium=shownotes) – Phoenix Sync - A proof of concept of an Elixir/Phoenix node that runs PostgreSQL Replication to synchronize data with clients, as showcased at ElixirConf US 2024 keynote by José Valim. - https://x.com/TylerAYoung/status/1829248168908968220 (https://x.com/TylerAYoung/status/1829248168908968220?utm_source=thinkingelixir&utm_medium=shownotes) – Tyler Young's Twitter thread discussing the big idea behind Phoenix Sync which involves frontend applications syncing with backend using Phoenix channels and logical replication. - https://elixir-lang.org/blog/2024/08/28/typing-lists-and-tuples/ (https://elixir-lang.org/blog/2024/08/28/typing-lists-and-tuples/?utm_source=thinkingelixir&utm_medium=shownotes) – New ElixirLang blog post exploring how various Elixir idioms interact with the upcoming type system, especially focusing on lists and tuples. - https://x.com/josevalim/status/1829537976378159139 (https://x.com/josevalim/status/1829537976378159139?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's Twitter post about the mathematical soundness of set-theoretic types as discussed in the latest ElixirLang blog post. - https://github.com/algora-io/tv (https://github.com/algora-io/tv?utm_source=thinkingelixir&utm_medium=shownotes) – Algora.tv is trending as an open-source Twitch for developers using Membrane for real-time video processing. - https://dockyard.com/blog/2024/08/20/where-are-nx-axon-bumblebee-headed (https://dockyard.com/blog/2024/08/20/where-are-nx-axon-bumblebee-headed?utm_source=thinkingelixir&utm_medium=shownotes) – Sean Moriarity's blog post on DockYard discussing the current state of the AI space and future directions for Nx, Axon, and Bumblebee. - https://github.com/elixir-nx/nx/commit/ab8261180cd54ca95c0c34035a5380ade2805afb (https://github.com/elixir-nx/nx/commit/ab8261180cd54ca95c0c34035a5380ade2805afb?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's commit in Nx demonstrating how few lines of code are required to support compiling a machine learning model in one node and sending it to another for execution using Erlang erpc module. - https://x.com/cigrainger/status/1829822647489728679 (https://x.com/cigrainger/status/1829822647489728679?utm_source=thinkingelixir&utm_medium=shownotes) – New Livebook feature shared online integrates with Fly.io platform to run local notebooks on arbitrary hardware with a few clicks, allowing scalability and elasticity. - https://x.com/josevalim/status/1828781593387004065 (https://x.com/josevalim/status/1828781593387004065?utm_source=thinkingelixir&utm_medium=shownotes) – Image from Chris McCord's talk showing a Livebook connecting to a production node and getting intellisense for remote node code. - https://elixirstatus.com/p/wmpxg-code-beam-america-2025-call-for-talks-is-open- (https://elixirstatus.com/p/wmpxg-code-beam-america-2025-call-for-talks-is-open-?utm_source=thinkingelixir&utm_medium=shownotes) – Call for Talks for CodeBEAM America 2025 is open. Deadline for proposals is October 20, 2024. Conference dates are March 6-7, 2025, in San Francisco and Online. - https://codebeamamerica.com/#cft (https://codebeamamerica.com/#cft?utm_source=thinkingelixir&utm_medium=shownotes) – Official site for CodeBEAM America 2025 Call for Talks. - https://codebeamnyc.com/ (https://codebeamnyc.com/?utm_source=thinkingelixir&utm_medium=shownotes) – CodeBEAM NYC conference on November 15th, a one-day event. - Reflections on ElixirConf discussion. 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) 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)
This interview was recorded at GOTO Copenhagen for GOTO Unscripted.http://gotopia.techRead the full transcription of this interview hereSophie DeBenedetto - Staff Software Engineer at GitHub Andrea Leopardi - Elixir Core Team Member, Developer Advocate & Principal Engineer at VeepsRESOURCESSophiehttp://sophiedebenedetto.nychttps://twitter.com/sm_debenedettohttps://linkedin.com/in/sophiedebenedettohttps://github.com/SophieDeBenedettoAndreahttps://twitter.com/whatyouhidehttps://linkedin.com/in/anleopardihttps://andrealeopardi.comhttps://github.com/whatyouhidehttps://mas.to/@whatyouhideVideoshttps://youtu.be/mkGq1WoEvI4https://youtu.be/0ONhPnwKI1ohttps://youtu.be/-KCZvquEA6Ihttps://youtu.be/JvBT4XBdoUEhttps://youtu.be/Swj47CiK32whttps://youtu.be/PkHZPTn1brchttps://youtu.be/PEbQ-s19wKohttps://youtu.be/vS1_Z4xaeqQDESCRIPTIONSophie DeBenedetto and Andrea Leopardi in an illuminating discussion as they navigate the expansive horizons of Elixir, empowering frontend developers with Phoenix LiveView and unveiling the language's network programming prowess.This engaging conversation unveils practical applications, highlighting Elixir's elegance in crafting dynamic web solutions and addressing intricate networking challenges. Whether you're a seasoned developer or curious about Elixir's capabilities, this exploration promises a deep dive into the language's versatility.RECOMMENDED BOOKSSophie DeBenedetto & Bruce Tate • Programming Phoenix LiveViewAndrea Leopardi & Jeffrey Matthias • Testing ElixirSean Moriarity • Genetic Algorithms in ElixirSean Moriarity • Machine Learning in ElixirBruce Tate • Programmer Passport: ElixirFrancesco Cesarini & Steve Vinoski • Designing for Scalability with Erlang/OTPSaša Jurić • Elixir in ActionJoe Armstrong • Programming ErlangTwitterInstagramLinkedInFacebookLooking for a unique learning experience?Attend the next GOTO conference near you! Get your ticket: gotopia.techSUBSCRIBE TO OUR YOUTUBE CHANNEL - new videos posted daily!
In today's episode, Elixir Wizards Owen and Dan delve into the complexities of building advanced reporting features within software applications. They share personal insights and challenges encountered while developing reporting solutions for user-generated data, leveraging both Elixir/Phoenix and Ruby on Rails. The discussion zeroes in on crucial data modeling and architectural decisions that enhance reporting efficiency and flexibility. Owen and Dan explore tactics like materialized views, event sourcing, and database triggers to optimize data handling while being mindful of UX elements like progress indicators and background job management. They share insights on leveraging the Elixir/Beam ecosystem's strengths—like concurrency and streamlined deployment—to tackle common reporting, caching, and integration challenges. The episode highlights the impact of reporting features across all aspects of a software application's design and architecture. Key topics discussed in this episode: Reporting on assessment data, survey results, and user metrics Differences between reporting and performance/error monitoring Implementing reporting in Elixir/Phoenix vs. Ruby on Rails Displaying reports in web, printable, PDF, SVG, and CSV formats Challenges of generating PDFs for large data sets Streaming CSV data directly to the client Handling long-running report generation tasks Providing progress indicators and user notifications Strategies for canceling or abandoning incomplete reports Tradeoffs of pre-calculating report data vs. real-time generation Materializing views and denormalizing data for reporting Exploring event sourcing patterns for reporting needs Using database triggers and stored procedures for reporting Balancing data structure optimization for reports vs. day-to-day usage Caching report data for faster retrieval and rendering Charting and visualization integration in reporting systems Links mentioned: Prometheus monitoring system & time series database https://prometheus.io/ Thinking Elixir "FLAME with Chris McCord" https://podcast.thinkingelixir.com/181 Phoenix LiveView Uploads https://hexdocs.pm/phoenix/fileuploads.html https://hexdocs.pm/phoenixlive_view/Phoenix.LiveView.UploadWriter.html Postgrex PostgreSQL driver for Elixir https://hexdocs.pm/postgrex/Postgrex.html Ecto https://hexdocs.pm/ecto/Ecto.html Heroku cloud application platform https://www.heroku.com/ Elixir Wizards S9E12 Marcelo Dominguez on Command and Query Responsibility Segregation https://smartlogic.io/podcast/elixir-wizards/s9-e12-marcelo-dominguez-cqrs/ Commanded Elixir CQRS/ES applications https://github.com/commanded/commanded Tailwind CSS Framework https://github.com/tailwindlabs Memcached https://memcached.org/ Redis https://redis.io/ Oban https://hexdocs.pm/oban/Oban.html ETS https://hexdocs.pm/ets/ETS.html Capistrano remote server automation and deployment tool https://capistranorb.com/
The Elixir community has a new OpenSource CMS thanks to DockYard and Leandro Pereira! We talk with Leandro to better understand what the Beacon project is and what it can do. It's built using Phoenix LiveView and can be deployed standalone or as part of an existing Elixir Phoenix application. The Admin features include the ability for non-developers to edit content and immediately deploy changes without re-deploying the app. We talk about how BeaconCMS is positioned against Wordpress and static sites and where the greatest benefits are. A feature in development is the HEEx template editor which promises to be a very exciting tool for non-developers. Learn along with us! Show Notes online - http://podcast.thinkingelixir.com/174 (http://podcast.thinkingelixir.com/174) Elixir Community News - https://twitter.com/chris_mccord/status/1713894354962534808 (https://twitter.com/chris_mccord/status/1713894354962534808?utm_source=thinkingelixir&utm_medium=shownotes) – LiveView optimized DOM patching announced, resulting in significant speed improvements in browser's DOM patching time. - https://twitter.com/basilenouvellet/status/1713981828028133847 (https://twitter.com/basilenouvellet/status/1713981828028133847?utm_source=thinkingelixir&utm_medium=shownotes) – Real world test results demonstrating faster speeds due to LiveView's optimized DOM patching. - https://dashbit.co/blog/latency-rendering-liveview (https://dashbit.co/blog/latency-rendering-liveview?utm_source=thinkingelixir&utm_medium=shownotes) – New post on performance optimization in Phoenix LiveView by José Valim. - https://youtu.be/Ckgl9KO4E4M?si=UNf5sNShzl1oTZQS&t=1731 (https://youtu.be/Ckgl9KO4E4M?si=UNf5sNShzl1oTZQS&t=1731?utm_source=thinkingelixir&utm_medium=shownotes) – Chris McCord's ElixirConf keynote demo on LiveView's new dev tool features. Time signature for dev tools example - https://twitter.com/josevalim/status/1711756969814426066 (https://twitter.com/josevalim/status/1711756969814426066?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's explanation on LiveView's unreleased feature. - https://github.com/elixir-saas/clicktocomponent (https://github.com/elixir-saas/click_to_component?utm_source=thinkingelixir&utm_medium=shownotes) – An external library called "clicktocomponent" to support the Cmd+Click functionality in LiveView. - https://news.livebook.dev/remote-execution-smart-cell---launch-week-2---day-1-m3dv2 (https://news.livebook.dev/remote-execution-smart-cell---launch-week-2---day-1-m3dv2?utm_source=thinkingelixir&utm_medium=shownotes) – Announcement of Livebook's new feature - Remote execution Smart cell. - https://news.livebook.dev/speech-to-text-with-whisper-timestamping-streaming-and-parallelism-oh-my---launch-week-2---day-2-36osSY (https://news.livebook.dev/speech-to-text-with-whisper-timestamping-streaming-and-parallelism-oh-my---launch-week-2---day-2-36osSY?utm_source=thinkingelixir&utm_medium=shownotes) – Livebook's new features in their Whisper integration for improved speech-to-text performance. - https://news.livebook.dev/introducing-file-integration---launch-week-2---day-3-2HoFfa (https://news.livebook.dev/introducing-file-integration---launch-week-2---day-3-2HoFfa?utm_source=thinkingelixir&utm_medium=shownotes) – Livebook's introduction to File Integration. - https://news.livebook.dev/integration-with-snowflake-and-microsoft-sql-server---launch-week-2---day-4-2o4z9C (https://news.livebook.dev/integration-with-snowflake-and-microsoft-sql-server---launch-week-2---day-4-2o4z9C?utm_source=thinkingelixir&utm_medium=shownotes) – Livebook adds support for Snowflake and SQL Server. - https://news.livebook.dev/vim-and-emacs-key-bindings---launch-week-2---day- (https://news.livebook.dev/vim-and-emacs-key-bindings---launch-week-2---day-?utm_source=thinkingelixir&utm_medium=shownotes) – Livebook support for VIM & Emacs key bindings. - https://hexdocs.pm/ash_sqlite/get-started-with-sqlite.html (https://hexdocs.pm/ash_sqlite/get-started-with-sqlite.html?utm_source=thinkingelixir&utm_medium=shownotes) – Ash Framework's new AshSqlite library release. - https://oban.pro/releases/web/v2.10 (https://oban.pro/releases/web/v2.10?utm_source=thinkingelixir&utm_medium=shownotes) – Release of Oban Web 2.10.0. - https://github.com/emmanueltouzery/elixir-extras.nvim (https://github.com/emmanueltouzery/elixir-extras.nvim?utm_source=thinkingelixir&utm_medium=shownotes) – Release of a new Neovim Elixir plugin called elixir-extras.nvim. - https://twitter.com/samokhvalov/status/1714153676212949355 (https://twitter.com/samokhvalov/status/1714153676212949355?utm_source=thinkingelixir&utm_medium=shownotes) – PostgreSQL tip for setting a human-readable label for a connection session. - https://github.com/pgbouncer/pgbouncer/releases/tag/pgbouncer121_0 (https://github.com/pgbouncer/pgbouncer/releases/tag/pgbouncer_1_21_0?utm_source=thinkingelixir&utm_medium=shownotes) – Upcoming PgBouncer 1.21 release with support for prepared statements. - https://twitter.com/ElixirConfEU/status/1713929804062273663 (https://twitter.com/ElixirConfEU/status/1713929804062273663?utm_source=thinkingelixir&utm_medium=shownotes) – Announcement for call for talks for ElixirConf Europe 2024. - https://www.elixirconf.eu/ (https://www.elixirconf.eu/?utm_source=thinkingelixir&utm_medium=shownotes) – ElixirConf Europe 2024 conference details. 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://github.com/BeaconCMS/beacon (https://github.com/BeaconCMS/beacon?utm_source=thinkingelixir&utm_medium=shownotes) – The main Beacon CMS project - https://github.com/BeaconCMS/beacon_demo (https://github.com/BeaconCMS/beacon_demo?utm_source=thinkingelixir&utm_medium=shownotes) – Beacon CMS demo project - https://github.com/BeaconCMS/beaconliveadmin (https://github.com/BeaconCMS/beacon_live_admin?utm_source=thinkingelixir&utm_medium=shownotes) – Beacon CMS admin project - https://beaconcms.org/ (https://beaconcms.org/?utm_source=thinkingelixir&utm_medium=shownotes) - https://www.youtube.com/watch?v=5jk0fIJOFuc&list=PLqj39LCvnOWbHaZldxw_g02RaTQ4vQ1eY&index=16 (https://www.youtube.com/watch?v=5jk0fIJOFuc&list=PLqj39LCvnOWbHaZldxw_g02RaTQ4vQ1eY&index=16?utm_source=thinkingelixir&utm_medium=shownotes) – ElixirConf 2023 - Beacon - The next generation of CMS in Phoenix LiveView - https://mdxjs.com/ (https://mdxjs.com/?utm_source=thinkingelixir&utm_medium=shownotes) - https://hex.pm/packages/earmark (https://hex.pm/packages/earmark?utm_source=thinkingelixir&utm_medium=shownotes) - https://github.com/leandrocp/mdex (https://github.com/leandrocp/mdex?utm_source=thinkingelixir&utm_medium=shownotes) - https://github.com/BeaconCMS/livemonacoeditor (https://github.com/BeaconCMS/live_monaco_editor?utm_source=thinkingelixir&utm_medium=shownotes) – The code editor, based on the Livebook editor - https://github.com/leandrocp/mdex (https://github.com/leandrocp/mdex?utm_source=thinkingelixir&utm_medium=shownotes) – Markdown parser and formatter - https://github.com/leandrocp/autumn (https://github.com/leandrocp/autumn?utm_source=thinkingelixir&utm_medium=shownotes) – Syntax highlighter for code blocks - https://github.com/TheFirstAvenger/safe_code (https://github.com/TheFirstAvenger/safe_code?utm_source=thinkingelixir&utm_medium=shownotes) – Inspect HEEx for unsafe code - https://github.com/BeaconCMS/beacon/milestone/1 (https://github.com/BeaconCMS/beacon/milestone/1?utm_source=thinkingelixir&utm_medium=shownotes) – Beacon v0.1 release milestone - https://github.com/BeaconCMS/beaconliveadmin/milestone/1 (https://github.com/BeaconCMS/beacon_live_admin/milestone/1?utm_source=thinkingelixir&utm_medium=shownotes) Guest Information - https://twitter.com/leandrocesquini (https://twitter.com/leandrocesquini?utm_source=thinkingelixir&utm_medium=shownotes) – on Twitter - https://github.com/leandrocp/ (https://github.com/leandrocp/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github - hhttps://leandrocp.com.br (hhttps://leandrocp.com.br?utm_source=thinkingelixir&utm_medium=shownotes) – Blog - https://github.com/leandrocp/mdex (https://github.com/leandrocp/mdex?utm_source=thinkingelixir&utm_medium=shownotes) – Other project MDEx - A fast 100% CommonMark-compatible GitHub Flavored Markdown parser and formatter for Elixir. 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)
News includes José Valim's blog post about Elixir's "strong arrows" that expands on his keynote, the release of LiveView 0.20.0 with its myriad of updates and improvements, and a sneak peek into the upcoming Livebook features with a new "Authentication" section. Additionally, Wojtek Mach shares a success story using beammachine.cloud for a quick Erlang check, Sundi Myint shares a tip for 404 pages in LiveView when URLs are tweaked, and Lionel Aimerie demonstrates how to integrate Chart.js into Elixir Phoenix for visual impact in LiveView. All these, along with newly released ElixirConf videos, the upcoming SpawnFest contest, and more! Show Notes online - http://podcast.thinkingelixir.com/171 (http://podcast.thinkingelixir.com/171) Elixir Community News - https://elixir-lang.org/blog/2023/09/20/strong-arrows-gradual-typing/ (https://elixir-lang.org/blog/2023/09/20/strong-arrows-gradual-typing/?utm_source=thinkingelixir&utm_medium=shownotes) – Jose Valim's "Strong arrows - a new approach to gradual typing" post is published on the Elixir blog expanding on his keynote talk. - https://twitter.com/theerlef/status/1706352873926430813 (https://twitter.com/theerlef/status/1706352873926430813?utm_source=thinkingelixir&utm_medium=shownotes) – Jose appears on the Software Unscripted podcast to talk about Gradual vs Static Typing. - https://twitter.com/clarkware/status/1705263936491356325 (https://twitter.com/clarkware/status/1705263936491356325?utm_source=thinkingelixir&utm_medium=shownotes) – Mike Clark shares a CSS trick to display an empty state when rendering collections with a LiveView stream. - https://twitter.com/chris_mccord/status/1705297511408091627 (https://twitter.com/chris_mccord/status/1705297511408091627?utm_source=thinkingelixir&utm_medium=shownotes) – The release of LiveView 0.20.0 is announced. - https://github.com/phoenixframework/phoenixliveview/blob/main/CHANGELOG.md (https://github.com/phoenixframework/phoenix_live_view/blob/main/CHANGELOG.md?utm_source=thinkingelixir&utm_medium=shownotes) – The detailed changelog of newly released LiveView 0.20.0. - https://twitter.com/livebookdev/status/1705285257316983272 (https://twitter.com/livebookdev/status/1705285257316983272?utm_source=thinkingelixir&utm_medium=shownotes) – A sneak peek into the upcoming Livebook features with a new sidebar section titled “Authentication”. - https://github.com/livebook-dev/livebook/milestone/9 (https://github.com/livebook-dev/livebook/milestone/9?utm_source=thinkingelixir&utm_medium=shownotes) – Expectation of new features being a part of the upcoming v0.11 release of Livebook. - https://twitter.com/wojtekmach/status/1705915941056323853 (https://twitter.com/wojtekmach/status/1705915941056323853?utm_source=thinkingelixir&utm_medium=shownotes) – Success story shared by Wojtek Mach using the site https://beammachine.cloud/ to quickly check some Erlang stuff. - https://smartlogic.io/blog/phoenix-liveview-error-html-pages/ (https://smartlogic.io/blog/phoenix-liveview-error-html-pages/?utm_source=thinkingelixir&utm_medium=shownotes) – Detailed blog post by Sundi Myint for showing 404 page when URL is tweaked to invalid ID in LiveView situations. - https://medium.com/@lionel.aimerie/integrating-chart-js-into-elixir-phoenix-for-visual-impact-9a3991f0690f (https://medium.com/@lionel.aimerie/integrating-chart-js-into-elixir-phoenix-for-visual-impact-9a3991f0690f?utm_source=thinkingelixir&utm_medium=shownotes) – Lionel Aimerie's blog post about integrating Chart.js into Elixir Phoenix for visual impact in LiveView. - https://www.youtube.com/playlist?list=PLqj39LCvnOWbHaZldxw_g02RaTQ4vQ1eY (https://www.youtube.com/playlist?list=PLqj39LCvnOWbHaZldxw_g02RaTQ4vQ1eY?utm_source=thinkingelixir&utm_medium=shownotes) – Release of 5 more ElixirConf videos. Link to the video playlist. - https://spawnfest.org/ (https://spawnfest.org/?utm_source=thinkingelixir&utm_medium=shownotes) – Reminder for SpawnFest, a 48-hour online software development contest starting on 2023-10-28. 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) 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)
News includes a new "async" feature being added to LiveView, a new translation library called Kanta was announced, formatted logging, improved keyboard navigation in ExDocs, the Membrane framework released a pure Elixir H264 video plugin, and more! Show Notes online - http://podcast.thinkingelixir.com/168 (http://podcast.thinkingelixir.com/168) Elixir Community News - https://github.com/phoenixframework/phoenixliveview/pull/2763 (https://github.com/phoenixframework/phoenix_live_view/pull/2763?utm_source=thinkingelixir&utm_medium=shownotes) – New “async” features built-in to LiveView - https://elixirstatus.com/p/ElYf7-introducing-kanta---the-ultimate-open-source-solution-to-translations-in-elixir--phoenix-web-apps (https://elixirstatus.com/p/ElYf7-introducing-kanta---the-ultimate-open-source-solution-to-translations-in-elixir--phoenix-web-apps?utm_source=thinkingelixir&utm_medium=shownotes) – New translation library called Kanta - https://github.com/curiosum-dev/kanta (https://github.com/curiosum-dev/kanta?utm_source=thinkingelixir&utm_medium=shownotes) – User-friendly translations manager for Elixir/Phoenix projects. - https://blog.appsignal.com/2023/07/18/observe-your-phoenix-app-with-structured-logging.html (https://blog.appsignal.com/2023/07/18/observe-your-phoenix-app-with-structured-logging.html?utm_source=thinkingelixir&utm_medium=shownotes) – Structured logging post by Sophie DeBenedetto - https://github.com/akasprzok/logfmt_ex (https://github.com/akasprzok/logfmt_ex?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir library called logfmt_ex - https://mas.to/@angelikatyborska/110973663083838384 (https://mas.to/@angelikatyborska/110973663083838384?utm_source=thinkingelixir&utm_medium=shownotes) – Improved keyboard navigation in ExDocs v0.30.6 - https://twitter.com/ElixirMembrane/status/1697186141030490432 (https://twitter.com/ElixirMembrane/status/1697186141030490432?utm_source=thinkingelixir&utm_medium=shownotes) – Membrane project adds a pure Elixir H264 parser. - https://membrane.stream/learn/h264 (https://membrane.stream/learn/h264?utm_source=thinkingelixir&utm_medium=shownotes) – An article that covers the “H264 - what, why and how” - https://github.com/membraneframework/membraneh264plugin (https://github.com/membraneframework/membrane_h264_plugin?utm_source=thinkingelixir&utm_medium=shownotes) – The Membrane framework can now use it to stream in H264. - https://github.com/wojtekmach/req/releases/tag/v0.4.0 (https://github.com/wojtekmach/req/releases/tag/v0.4.0?utm_source=thinkingelixir&utm_medium=shownotes) – Req library v0.4.0 was released. Includes some breaking changes. - https://twitter.com/josevalim/status/1698675318238707820 (https://twitter.com/josevalim/status/1698675318238707820?utm_source=thinkingelixir&utm_medium=shownotes) – ElixirConf is starting and keynotes will hopefully be released soon after. 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) 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)
Securing our apps is our responsibility as developers. We are the custodians and the guardians of our user's data. We met up again with Michael Lubas to discuss some lesser known community security resources and helpful tips to get us started with securing our Elixir and Phoenix applications! Show Notes online - http://podcast.thinkingelixir.com/131 (http://podcast.thinkingelixir.com/131) Elixir Community News - https://erlangforums.com/t/otp-25-2-released/2166 (https://erlangforums.com/t/otp-25-2-released/2166) – Erlang/OTP 25.2 is the second maintenance patch package for OTP 25, with mostly bug fixes as well as improvements. - https://twitter.com/livebookdev/status/1603787699458113539 (https://twitter.com/livebookdev/status/1603787699458113539) – HuggingFace announced “spaces”, a feature that lets people run Docker images on HuggingFace. - https://huggingface.co/spaces/livebook-dev/singlefilephxbumblebeeml (https://huggingface.co/spaces/livebook-dev/single_file_phx_bumblebee_ml) – Elixir Phoenix was specifically shown as a Docker example on HuggingFace - https://twitter.com/sean_moriarity/status/1602817446875992066 (https://twitter.com/sean_moriarity/status/1602817446875992066) – Sean Moriarity added “negative prompts” feature to Nx's Stable Diffusion support. - https://github.com/elixir-nx/bumblebee/pull/109 (https://github.com/elixir-nx/bumblebee/pull/109) – PR adding "negative prompt" support - https://twitter.com/miruoss/status/1604849993130676225 (https://twitter.com/miruoss/status/1604849993130676225) – Michael Ruoss has a new Kino plugin for working with kubernetes pods - https://github.com/mruoss/kinok8sterm (https://github.com/mruoss/kino_k8s_term) – KinoK8sTerm - https://twitter.com/livebookdev/status/1603391808209391617 (https://twitter.com/livebookdev/status/1603391808209391617) – Livebook added two new neural network tasks to Bumblebee integration. - https://twitter.com/hanrelan/status/1603470678081929216 (https://twitter.com/hanrelan/status/1603470678081929216) – Customized Livebook Stable Diffusion shows intermediate steps when generating images. - https://blog.ftes.de/elixir-dijkstras-algorithm-with-priority-queue-f6022d710877 (https://blog.ftes.de/elixir-dijkstras-algorithm-with-priority-queue-f6022d710877) – Fredrik Teschke wrote a blogpost using Livebook to visualize Dijkstra's algorithm for finding the shortest path between nodes in a graph. - https://notes.club/ (https://notes.club/) – Notesclub is a website by Hec Perez that makes it easy to share and discover Livebook notebooks online. - https://twitter.com/louispilfold/status/1602740866602631170 (https://twitter.com/louispilfold/status/1602740866602631170) – Louis Pilfold announced his last full day at Nomio. He is now working full time on Gleam. - https://twitter.com/louispilfold/status/1600960290455113728 (https://twitter.com/louispilfold/status/1600960290455113728) – Louis Pilfold shared that Bumblebee, Nx and Axon work in Gleam thanks to Gleam's new Elixir support. - https://twitter.com/kipcole9/status/1604929772253229057 (https://twitter.com/kipcole9/status/1604929772253229057) – Kip Cole has a library called Image. He added Image.Classification.classify(image) using Bumblebee. - https://sessionize.com/code-beam-lite-stockholm-2023 (https://sessionize.com/code-beam-lite-stockholm-2023) – Code BEAM Lite Stockholm 2023, 12 May 2023, Stockholm, Sweden. Call for speakers is open until Feb 5th 2023. 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://paraxial.io (https://paraxial.io) - https://paraxial.io/blog/securing-elixir (https://paraxial.io/blog/securing-elixir) – Securing Elixir/Phoenix Applications - 5 Tips to Get Started - https://paraxial.io/blog/xss-phoenix (https://paraxial.io/blog/xss-phoenix) – Cross Site Scripting (XSS) Patterns in Phoenix - https://podcast.thinkingelixir.com/93 (https://podcast.thinkingelixir.com/93) – Previous interview with Michael - https://www.youtube.com/watch?v=w3lKmFsmlvQ (https://www.youtube.com/watch?v=w3lKmFsmlvQ) – ElixirConf 2017 - Plugging the Security Holes in Your Phoenix Application - Griffin Byatt - https://felt.com/blog/rate-limiting (https://felt.com/blog/rate-limiting) – Rate Limiting Algorithms for Client-Facing Web Apps by Tyler Young - https://github.com/podium/elixir-secure-coding (https://github.com/podium/elixir-secure-coding) – Elixir Secure Coding Training (ESCT) that runs in Livebook - https://github.com/rrrene/htmlsanitizeex (https://github.com/rrrene/html_sanitize_ex) - https://fly.io/phoenix-files/github-actions-for-elixir-ci/ (https://fly.io/phoenix-files/github-actions-for-elixir-ci/) – Blog post about Elixir CI/CD checks - https://github.com/mirego/mix_audit (https://github.com/mirego/mix_audit) – mix_audit - https://hexdocs.pm/mix/Mix.Tasks.Deps.Unlock.html (https://hexdocs.pm/mix/Mix.Tasks.Deps.Unlock.html) – mix hex.audit - https://erlef.github.io/security-wg/securecodinganddeploymenthardening/ (https://erlef.github.io/security-wg/secure_coding_and_deployment_hardening/) – Erlang Ecosystem Foundation resource - Secure Coding and Deployment Hardening Guidelines - https://github.com/slab/safeurl-elixir (https://github.com/slab/safeurl-elixir) – SafeURL hex package by Slab - https://slab.com/ (https://slab.com/) Guest Information - https://twitter.com/paraxialio (https://twitter.com/paraxialio) – on Twitter - https://github.com/paraxialio/ (https://github.com/paraxialio/) – on Github - https://paraxial.io/ (https://paraxial.io/) – Blog - michael@paraxial.io - https://genserver.social/paraxial (https://genserver.social/paraxial) – on Mastadon Find us online - Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir) - Message the show on Mastadon - @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 Mastadon - @brainlid@genserver.social (https://genserver.social/brainlid) - David Bernheisel - @bernheisel (https://twitter.com/bernheisel) - David Bernheisel on Mastadon - @dbern@genserver.social (https://genserver.social/dbern) - Cade Ward - @cadebward (https://twitter.com/cadebward) - Cade Ward on Mastadon - @cadebward@genserver.social (https://genserver.social/cadebward)
Peter Ullrich is Senior Elixir Engineer at Remote. He is also an experienced Elixir Developer, certified Blockchain Engineer, and Entrepreneur. He joins Allen and Adi to talk about his blog articles, THE COMPLETE GUIDE TO FULL-TEXT SEARCH WITH POSTGRES AND ECTO, and EFFICIENT NAME SEARCH WITH POSTGRES AND ECTO. He starts off the show by explaining what inspired him to write these articles. About this Episode Replacing "ElasticSearch" with "Full-Text search" Benefits of using Full-Text Search in Postgres Understanding Indexes in Postgres Sponsors AppSignal Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links THE COMPLETE GUIDE TO FULL-TEXT SEARCH WITH POSTGRES AND ECTO EFFICIENT NAME SEARCH WITH POSTGRES AND ECTO SQL for Devs PETER ULLRICH LinkedIn: Peter Ullrich Twitter: @PJUllrich Picks Allen - Actual E2E Testing with Cypress, Vue and Elixir/Phoenix, using Ecto sandbox Peter - Watch Inside Men | Netflix Peter - Smashing Security Peter - Building Table Views with Phoenix LiveView Sascha - Inscryption on Steam
Are you interested in building high-performance applications with Elixir & Phoenix? So you can't miss this episode. Tam Kbeili describes himself as "part entrepreneur, part programmer." He is a CTO at Aplicar and joined VanHackCON 2021 to talk about two interesting, relatively new coding languages, Phoenix and Elixir. Kbeili used these languages to build products for his companies Aplicar and CodeCast, which means he has lots of experience. Let's learn from him!
Want to see Elixir/Phoenix out in the wild? In this episode, Allen sits down with Erik Guzmán, a developer whose proficiency in Elixir/Phoenix enabled him to created instant closed captions for both Twitch and Zoom audiences. The two discuss why Elixir is so seamless in its scaling capabilities, how Elixir's ability to reveal errors sooner saved Erik's behind once or twice, and the biggest lessons Erik learned from burn out. “Because of how scalable and efficient things are, every client on Twitch is able to connect directly to my servers and get captions. I've been able to make a richer user experience.” - Erik In This Episode Why Erik moved from Ruby to Elixir and why it's seamless for scaling How Erik's live streaming programming for Twitch and Zoom is changing the game for speech-to-text What Erik learned from building code manually in Elixir/Phoenix, revealing something not-so-great about Ruby on Rails How Elixir reveals errors before they become life-threatening, saving Erik from a world of hurt What getting laid off and burnt out taught Erik about streaming, programming, and sharing Sponsors Top End Devs (https://topenddevs.com/) Picks Allen's: Cloudflare Workers: https://workers.cloudflare.com/ Erik's Ted Lasso show on AppleTV Connect with Erik: Twitch 1 https://twitter.com/talk2megooseman Erik Guzman - DEV Community Special Guest: Erik Guzmán.
Tej Pochiraju joins the mix to discuss Progressive Web Apps and how you can support them using Elixir and Phoenix. Tej is also an IoT developer, so he discusses how you can tie this all to IoT as well. Panel Allen Wyma Sascha Wolf Guest Tej Pochiraju Sponsors Dev Influencers Accelerator Level Up | Devchat.tv Links Progressive Web Apps & Elixir Phoenix GitHub: Tej Pochiraju ( tejpochiraju ) Twitter: Tej Pochiraju ( @tejpochiraju ) Picks Allen- MJML Allen- Foundation Sascha- You Got This Tej- Datasette Tej- Braid: Synchronization for HTTP Contact Allen: Plangora Plangora Limited Plangora – YouTube Plangora | Facebook Tech_Plangora Limited_Elixir | Instagram Twitter: Plangora ( @Plangora ) LinkedIn: Plangora – Web and Mobile Development Plangora – Reddit Flying High With Flutter Flying High With Flutter Flying High with Flutter – YouTube Flying High with Flutter | Facebook Flying High With Flutter | Instagram Twitter: Flying High with Flutter ( @fhwflutter ) Teach Me Code Teach Me Code Teach Me Code | Facebook TeachMeCode | Instagram Contact Sascha: Sascha Wolf
Tej Pochiraju joins the mix to discuss Progressive Web Apps and how you can support them using Elixir and Phoenix. Tej is also an IoT developer, so he discusses how you can tie this all to IoT as well. Panel Allen WymaSascha Wolf Guest Tej Pochiraju Sponsors Dev Influencers AcceleratorLevel Up | Devchat.tv Links Progressive Web Apps & Elixir PhoenixGitHub: Tej Pochiraju ( tejpochiraju ) Twitter: Tej Pochiraju ( @tejpochiraju ) Picks Allen- MJMLAllen- FoundationSascha- You Got This Tej- DatasetteTej- Braid: Synchronization for HTTP Contact Allen: Plangora Plangora LimitedPlangora – YouTubePlangora | FacebookTech_Plangora Limited_Elixir | InstagramTwitter: Plangora ( @Plangora )LinkedIn: Plangora – Web and Mobile DevelopmentPlangora – Reddit Flying High With Flutter Flying High With FlutterFlying High with Flutter – YouTubeFlying High with Flutter | FacebookFlying High With Flutter | InstagramTwitter: Flying High with Flutter ( @fhwflutter ) Teach Me Code Teach Me CodeTeach Me Code | FacebookTeachMeCode | Instagram Contact Sascha: Sascha Wolf Special Guest: Tej Pochiraju.
Diego Fernandes (CTO - Rocketseat) conversa sobre Elixir e tudo que envolve na complexidade de seu ecossistema com os devs Rachel Curioso (Software Consultant @ Erlang Solutions) e Rafael Camarda (Rocketseat). A conversa entrou em temas que circulam o ecossistema da linguagem, desde a influência do Ruby e a transição para consolidar uma linguagem relevante no mercado. Um papo bem técnico com profissionais entusiastas e especialistas em Elixir. O Faladev é um podcast feito por devs, para devs. A conversa é técnica, composta por uma mesa experiente e diversa, com o propósito de trazer discussões importantes que possam contribuir para o seu aprendizado. Passamos a maior parte do tempo escrevendo código. Agora chegou o momento de falar sobre isso.
Guest Mr Alistair Israel of YoungCTO Rafi Quisumbing Alistair Israel has over 25 years experience in the IT industry and has worked on a wide variety of platforms, technologies and languages for different industries. He is passionate about building innovative solutions using latest technology and best practices, and in helping others do the same. LINKEDIN: https://www.linkedin.com/in/alistairi... He started learning programming over 30 years ago, and is still learning. Specialties: Enterprise software, DevOps, Cloud, solutions architecture, Domain Driven Design, event-driven architecture, GraphQL, Rust, Elixir + Phoenix, Ruby + Rails, Java SRE team responsible for availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning. Plans, provisions, and configures the infrastructure and application delivery pipelines of the organisation using various tools and platforms such as AWS, Docker, Kubernetes, MongoDB, RabbitMQ, Terraform, Helm, Kustomize, and Gitlab CI. Monitors, responds to and performs post-mortem analysis of incidents using various tools/platforms including Datadog, PagerDuty, and Sentry.
We talk about the mental models we use for writing our Elixir code and for thinking about our Elixir systems (starting at 5:46). We cover transformations, plug, and Mark's "Workshop Model" (starting at 23:45). We also talk about LiveView, (starting at 31:20) how we approach it today, mistakes we've both made and seen. A fun discussion! We want to continue the discussion with you over on ElixirForum. Check the show notes for links to those topics! Elixir Community News - https://github.com/elixir-lang/elixir/blob/v1.11/CHANGELOG.md (https://github.com/elixir-lang/elixir/blob/v1.11/CHANGELOG.md) – Elixir 1.11.4 released - https://elixirstream.dev (https://elixirstream.dev) – ElixirSteam.dev soft launch experiment - https://twitter.com/elixirbookclub (https://twitter.com/elixirbookclub) – Elixir Book Club gearing up - https://pragprog.com/titles/jgotp/designing-elixir-systems-with-otp/ (https://pragprog.com/titles/jgotp/designing-elixir-systems-with-otp/) – Book Club selection "Designing Elixir Systems with OTP" - https://techcrunch.com/2021/03/16/sumup-which-helps-businesses-take-card-payments-raises-895m-to-double-down-on-growth/ (https://techcrunch.com/2021/03/16/sumup-which-helps-businesses-take-card-payments-raises-895m-to-double-down-on-growth/) – Techcrunch covered the London based startup SumUp for raising $895M - https://www.youtube.com/watch?v=3O_3X7InOw8 (https://www.youtube.com/watch?v=3O_3X7InOw8) – TailwindCSS update with experimental JIT for improved dev styles - https://github.com/tailwindlabs/tailwindcss-jit (https://github.com/tailwindlabs/tailwindcss-jit) – Experimental jit project - https://github.com/elixir-lang/ex_doc/blob/master/CHANGELOG.md (https://github.com/elixir-lang/ex_doc/blob/master/CHANGELOG.md) – ExDoc 0.24.0 released 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 - Mental models coming to Elixir - Phoenix pipelines and reconstructing plug - https://pragmaticstudio.com/courses/elixir (https://pragmaticstudio.com/courses/elixir) – The PragProg course Cade mentioned - It's all about data transformations - Code organization and namespace design discussion - Mark's mental model of the "The Workshop" starting at 23:45 - Modules are binders of instructions - Refactoring, namespace design, code organization is about getting your workshop organized. - LiveView, anti-patterns, making the mental shifts - The "Lift and shift" approach doesn't work well coming from OOP or React to Elixir - Live View components and passing left over arguments to the HTML makes it cleaner and easier - https://elixirforum.com/t/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393 (https://elixirforum.com/t/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393) – ElixirForum Discussion - Mental models you use for thinking about your Elixir and LiveView code Find us online - Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir) - Email the show - show@thinkingelixir.com (mailto:show@thinkingelixir.com) - Mark Ericksen - @brainlid (https://twitter.com/brainlid) - David Bernheisel - @bernheisel (https://twitter.com/bernheisel) - Cade Ward - @cadebward (https://twitter.com/cadebward)
Toutes les notes sont disponibles sur https://clever-cloud.com/fr/podcast/episode2/ Avec par ordre d'apparition: @geal @blackyoup @waxzce @ldoguin Gérer le temps dans les systèmes distribués https://medium.com/distributed-knowledge/time-synchronization-in-distributed-systems-a21808928bc8 Nouvelle release de Windows Subsystem for Linux https://devblogs.microsoft.com/commandline/announcing-wsl-2/ https://docs.microsoft.com/en-us/windows/wsl/install-win10 Nouvelle release du Windows Terminal https://devblogs.microsoft.com/commandline/introducing-windows-terminal/ https://github.com/microsoft/terminal/releases/tag/v1.0.1401.0 Espanso, nouveau text expander https://espanso.org/ Photon, Image processing en rust et wasm https://silvia-odwyer.github.io/photon/ Nouveau projet P2P Matrix https://matrix.org/blog/2020/06/02/introducing-p-2-p-matrix Problème d'expiration des CAs root https://scotthelme.co.uk/impending-doom-root-ca-expiring-legacy-clients/ Comprendre les premiers décodeurs Canal+ https://fabiensanglard.net/discret11/index.html IBM release un toolkit pour la crypto homomorphique https://www.ibm.com/blogs/research/2020/06/ibm-releases-fully-homomorphic-encryption-toolkit-for-macos-and-ios-linux-and-android-coming-soon/ https://github.com/homenc/HElib IBM arrêtes ses travaux sur la reconnaissance faciale.https://www.theverge.com/2020/6/8/21284683/ibm-no-longer-general-purpose-facial-recognition-analysis-software Talk de Randall Thomas “Yeah, But Should We….” https://www.youtube.com/watch?v=iTfh3WD09ZE
Long-time listener (and YouTube aficionado) Owen Bickford joins Jerod backstage to discuss his recent contribution to Changelog’s Elixir/Phoenix-based open source platform.
recorded on 2020-4-01 The mad scramble isn't over. Mark's bank closed his account, due to no action of his own. That sucks since he's halfway across the world during a pandemic. It was a rough couple of weeks, but ultimately he prevailed. The bank opened him a new account, reopened the debit card he had with him and connected the two. Justin's blood sugar has been in range and he's finished the "now" screen for Taskflow as well as the "next task" UI. Between that, the day job he's just generally been crushing it for the past couple of weeks, from the comfort of his mountain home. Diet part is at 19m and Taskflow demo at 23m. Justin's also considering launching a new Nugget batch. He's thinking that it might make sense to drop the prices due to the pandemic. There's also a question of how to make a "low-res" intro to help new students get a quicker overview before digging into the details of any part of the course. Pricing discussion starts at 40m. Mark's thinking about branching out a bit further from Elixir and making videos about other topics that would also serve the same audience and Justin was very bullish about the idea. It probably wasn't optimal to make videos about Tailwind that assumed Elixir + Phoenix knowledge of its viewers. A few videos higher in the funnel that can bring new people to the channel is probably a good idea. Goals discussion starts at 51m Mark's goals for next time 2 workouts, 2 runs Record a screencast for AC and work through some Vue School lessons. Justin's goals for next time Get blood sugar reading down to 7.1 Create "Add task" functionality in Taskflow Video version at: https://youtu.be/QxCra7EaPQc
Gotta admit, once I got the auth working and the deployment going, I was a bit hesitant to start adding to the project again. Because that meant, failed builds, unknown errors, and a general sense of failing. We just got things working! But's the sayin' "if it's not broken, you're not working hard enough"? So back at it I guess.
Кто ходит в гости к нам в подкаст, тот поступает мудро. В данном выпуске у нас было двое мудрецов, которые, надеемся, превратятся в постоянных посетителей. С ними мы расставили точки над темой Full-Stack, немного поспорили про необходимость async-await, погрузились в тему Fat Controllers. Ссылки: Demystifying Async/Await: https://chrisstclair.co.uk/demystifying-async-await/?utm_source=csharpdigest&utm_medium=email&utm_campaign=featuredО том, как из C# я перешел в Elixir/Phoenix: https://habr.com/en/post/435796/When to use C# LINQ with Query Syntax over Method Syntax: https://michaelscodingspot.com/when-to-use-c-linq-with-query-syntax-over-method-syntax/?utm_source=csharpdigest&utm_medium=email&utm_campaign=featuredVisualizing thin ASP.NET Controllers via SOLID Principles: https://makingloops.com/visualizing-thin-controllers/?utm_source=csharpdigest&utm_medium=email&utm_campaign=featured6 types of code you shouldn’t have inside your .NET controllers: https://makingloops.com/fat-controller-causes/?utm_source=csharpdigest&utm_medium=email&utm_campaign=featured Скачать: https://dotnetmore.ru/wp-content/uploads/2019/04/DotNetAndMore-11-FatControllers.mp3 https://dotnetmore.ru/wp-content/uploads/2019/04/DotNetAndMore-11-FatControllers.mp3
Chris is joined by Paul Smith to discuss Crystal, a statically-typed and compiled language with a Ruby inspired syntax. Paul has spent much of the past few years exploring Crystal and building a new web framework called Lucky. Paul's infectious enthusiasm for the Crystal language shines through in this discussion covering some of the unique features of Crystal & Lucky, but there is plenty to enjoy even if you're not specifically interested in Crystal. With Lucky, Paul has done a great job of taking the best of what has been built in other frameworks and bring it to Crystal, drawing inspiration from Ruby & Rails, Elixir & Phoenix, and even PHP and the Laravel framework. There's something in this episode for everyone! Crystal If You Gaze Into nil, nil Gazes Also Into You Elm Scala Elixir Elixir Phoenix Laravel Laravel Mix Lucky on GitHub Render HTML pages in Lucky Actions and Routing in Lucky Browser tests with LuckyFlow Dusk selectors Guido Van Rossum, Python BDFL, Stepping down VS Code BikeShed episode w/ German Velasco disucssing Elixir
Episode Notes Welcome to the first episode of the podcast. I introduce myself, the podcast, and ramble a bit about how I implemented users in an Elixir Phoenix project. It can only get better from here! Twitter: @sudocodes Email: carter@indielixer.com
Pense em uma linguagem bacana, funcional, que usa toda a plataforma já existente para uma outra linguagem e que é sucesso internacional. Essa é a Elixir. Mais ainda: criada por um brasileiro. Um episódio para lá de técnico. Participantes: Paulo Silveira, host do Hipsters, não entende muita coisa de funcional Mauricio Linhares, o cohost da treta que não quis deixar barato pro Valim! José Valim, cofundador da Plataformatec e um dos criadores da Elixir Lucas Mazza, desenvolvedor na Plataformatec e um dos primeiros autores da Casa do Código Links: PlataformaTec, consultoria e desenvolvimento com uma equipe incrível Site oficial da Elixir Phoenix, o framework web para Elixir ElixirConf, uma conferência grandona nos EUA Free Lunch is Over, artigo sobre a virada na necessidade de programar para multicore. Livro de Elixir da Casa do Código Produção e conteúdo: Alura Cursos online de Tecnologia Caelum Ensino e Inovação Edição e sonorização: Radiofobia Podcast e Multimídia
Pense em uma linguagem bacana, funcional, que usa toda a plataforma já existente para uma outra linguagem e que é sucesso internacional. Essa é a Elixir. Mais ainda: criada por um brasileiro. Um episódio para lá de técnico. Participantes: Paulo Silveira, host do Hipsters, não entende muita coisa de funcional Mauricio Linhares, o cohost da treta que não quis deixar barato pro Valim! José Valim, cofundador da Plataformatec e um dos criadores da Elixir Lucas Mazza, desenvolvedor na Plataformatec e um dos primeiros autores da Casa do Código Links: PlataformaTec, consultoria e desenvolvimento com uma equipe incrível Site oficial da Elixir Phoenix, o framework web para Elixir ElixirConf, uma conferência grandona nos EUA Free Lunch is Over, artigo sobre a virada na necessidade de programar para multicore. Livro de Elixir da Casa do Código Produção e conteúdo: Alura Cursos online de Tecnologia Caelum Ensino e Inovação Edição e sonorização: Radiofobia Podcast e Multimídia
Pense em uma linguagem bacana, funcional, que usa toda a plataforma já existente para uma outra linguagem e que é sucesso internacional. Essa é a Elixir. Mais ainda: criada por um brasileiro. Um episódio para lá de técnico. Participantes: Paulo Silveira, host do Hipsters, não entende muita coisa de funcional Mauricio Linhares, o cohost da treta que não quis deixar barato pro Valim! José Valim, cofundador da Plataformatec e um dos criadores da Elixir Lucas Mazza, desenvolvedor na Plataformatec e um dos primeiros autores da Casa do Código Links: PlataformaTec, consultoria e desenvolvimento com uma equipe incrível Site oficial da Elixir Phoenix, o framework web para Elixir ElixirConf, uma conferência grandona nos EUA Free Lunch is Over, artigo sobre a virada na necessidade de programar para multicore. Livro de Elixir da Casa do Código Produção e conteúdo: Alura Cursos online de Tecnologia Caelum Ensino e Inovação Edição e sonorização: Radiofobia Podcast e Multimídia
В этом году мы записываем серию подкастов со спикерами конференции RailsClub 2016. 22 октября, Москва, подробности и регистрация на сайте конференции. В этот раз мы поговорили с Владимиром Дементьевым про Action Cable, обучение и open source. Ссылки Профиль Владимира на Github первый проект Владимира – Teachbase Универсальный RPC фреймворк Brainwashing – Курс по Ruby on Rails Rubocop Первый open-source коммит в pry-byebug InfluxDB - БД написанная на языке Go Influxer - InfluxDB ActiveRecord-style Telegraf - сборщик логов Thinknetica Расшифровка эпизода, опубликованная на Habrahabr Расскажи немножко о себе? В Ruby сообщество я пришел не так давно. Примерно 4 года назад я в первый раз попробовал рельсы, поигрался. Мне понравилось. но проект, на котором я тогда работал, их не использовал. Поэтому пришлось отложить до очередной реинкарнации проекта Teachbase, нашего стартапа. Teachbase - это SaaS система для организации управления обучением, она позволяет вам сделать собственную Coursera в рамках компании или проекта. Когда я пришел, это был страшный проект на PHP, а я тогда мало что умел. Кодил, что говорили. Потом я познакомился с рельсами и с того момента, как стал техническим директором, начал вынашивать идею написать новую классную версию системы на продвинутой технологии. Такая возможность представилась в 2014 году, и тогда мы полностью перешли на рельсовый стэк в части веб-приложения. С тех пор я начал активно этим заниматься. Как ты смог убедить заказчика перейти на Rails? Все очень просто - я сам себе заказчик. Я один из основателей этого стартапа, двое моих партнеров не имели достаточной технической экспертизы, поэтому доверяли мне. Надеюсь, они не ошиблись и не жалеют об этом :) Выбор технологий был за мной. Вопрос был только в том, чтобы найти время на переход с одной версии на другую. Ну и деньги, естественно. Когда момент настал, мы переписали все на рельсы, и вот эта третья (или четвертая) версия системы работала быстро, четко, все были довольны - как мы, так и клиенты. Она и сейчас работает? Да, она продолжает работать. Мы довели проект до очень хорошего состояния, когда делать новую версию имеет смысл уже не по технологическим причинам, а скорее идеологическим. Не знаю, какие у ребят планы на данный момент. Пока они занимаются поддержкой этой системы, продажей. Все идет неплохо, проект жив, работает. Teachbase довольно большой проект на рельсах. Причем это были рельсы 4.1, на 4.2 мы не стали переходить, хотя планировали. Год с небольшим назад было объявлено о выходе 5 рельс осенью 2015, в этот момент мы решили, что нет смысла переходить на 4.2, когда можно сразу перейти на 5. Все знают, что потом было :). Прошел еще год, пятые рельсы уже вышли, но сейчас переходить на них, наверное, еще опасно. Надо подождать хотя бы 5.0.1, а лучше 5.1, тогда можно будет переходить. Мы понадеялись на релиз-планы команды разработчиков рельс, они не оправдались, поэтому наш проект до сих пор висит на 4.1. И особых проблем с этим нет. То есть, с точки зрения технологий проект закончен, и вы делаете что-то новое когда понимаете, что это нужно бизнесу? Да. Есть планы переделать значительную часть логики, и это, скорее всего, будет новый проект на новых рельсах, а может и не рельсах. В нашем стеке всегда был Erlang, так как мы занимались видеоконференциями, соответственно, нужен был стриминговый сервис, который работал бы с протоколом RTMP. Он нужен, чтобы люди, используя технологию flash (которую все ненавидят), могли общаться в браузере, проводить вебинары на большое количество людей и так далее. Бэкендом для всего этого служил сервис на эрланге, который отпочковался от довольно известного проекта Erlyvideo. Вы взяли форк, который был еще в open source? Да, это был open source, версия примерно 2.18. Происходило это в 2011 году. Сначала мы его просто использовали, потом стали вскрывать баги и править их, адаптировать все под нашу историю. А потом Макс Лапшин закрыл код и начал разрабатывать платный Flussonic. Нам это, в принципе, не мешало. Так у нас появился опыт в Erlang, и мы начали делать некоторые другие второстепенные сервисы для системы на эрланге. Наш стэк обрел второй основной язык Но найти разработчика на эрланге не очень просто. Тот единственный эрлангист, который у нас был, пришел студентом, он знал С и отлично знал математику, у него было олимпиадное прошлое и он хотел работать. Как эрлангиста мы его воспитывали с нуля. Он, кстати, до сих пор работает в проекте. Но больше таких людей не появлялось, поэтому в начале этого года, когда я еще работал в Teachbase, мы начали программу знакомства с Elixir (как для тех, кто программировал на Ruby, так и для тех кто программировал на Erlang). Был отдельный подпроект, в котором было 2 разработчика: рубист и эрлангист. Они должны были осваивать технологию вместе, используя каждый свои сильные стороны. Один лучше знает Ruby и его парадигму, знает Rails, которые похожи с Phoenix в части MVC. А второй человек, который знает Erlang, делал на Elixir какие-то более близкие к этой парадигме вещи. Проект пока не доделан, но он очень интересный. Мы начали переходить на этот стек, скорее из-за его популярности, чтобы было проще в дальнейшем жить и нанимать новых сотрудников. А не хотели все перевести на Phoenix? Полностью отказаться от Ruby, оставить Erlang, поверх него Elixir, а сверху еще Phoenix? Когда стоял вопрос о переходе на Rails, был альтернативный вариант сразу переходить на Erlang. Я готов был это сделать. Наверное, мы бы дольше стартовали, но вероятно это было бы лучше с точки зрения эффективности. Хорошо, что мы этого не сделали: наши нагрузки не требуют каких-то жутких оптимизаций, и рельса вполне справляется, а скорость разработки дает намного большую. Сейчас я не думаю, что Phoenix можно полностью заменить рельсы именно с точки зрения построения бизнес-логики, слоя работы с данными. Все что касается запросов, сокеты (это отдельный разговор мы к нему вернемся) - с этим в Phoenix все неплохо. Но Active Record (или его альтернативы) и экосистема вокруг него пока гораздо удобнее, чем все, что есть в Elixir. Это логично, там другая парадигма, там не так просто сделать удобный для использования инструмент. Поэтому, на мой взгляд, Elixir и прочие, с Phoenix или без, - это скорее технологии для идеологии микросервисов. Нужно использовать их в какой-то тяжелой части, в которую стучится очень много клиентов, с какими-то задачами, запросами. Такие части можно писать Elixir, решать их несколькими разными сервисами. А основная логика должна, мне кажется, оставаться в рельсах, если изначально была написана на них. Но даже если бы я сейчас начинал проект с нуля, я бы все равно не стал делать все на Elixir. Ты говоришь о Teachbase и своей роли CTO в нем, как о прошедшей истории. Сейчас, насколько я знаю, ты работаешь в Evil Martians, работаешь просто разработчиком. Почему ты перешел от управления к разработке? Чаще наоборот, люди хотят пройти путь от разработчика до управленца. Считаешь ли ты это шагом назад, или это какой-то промежуточный этап? Во-первых, долгое время я был в Teachbase единственным разработчиком. Я начал набирать команду только в последнюю пару лет, когда у нас появилась такая возможность. Проблема для меня, как для разработчика, была в том, что я много всего попробовал, много нового узнал, но в основном на собственном опыте. Я никогда не работал в команде под руководством кого-то, кто был опытнее меня и имел какие-то знания, которых у меня не было. Это была одна из причин: мне было скучно, я понимал, что мой самостоятельный рост в Teachbase будет идти тяжело. Особенно, когда проект стабилизировался, не было каких-то супер интересных задач, только текучка типа добавления фич, нет воли творчеству. Я рассматривал марисан, в первую очередь, так как я был знаком с некоторыми ребятами, я был на курсе Brainwashing, с тех пор у меня остались самые приятные впечатления об этой команде. Мне очень хотелось поработать с такими людьми, поделиться опытом, поделиться своими идеями. Когда я работал в Teachbase, мне не с кем было обсудить какие-то технические идеи, не было людей, которые разбирались бы хорошо в технических аспектах. Поэтому я хотел попасть в сильную команду. То, что в Teachbase у меня была “власть”, а теперь я рядовой сотрудник, не страшно. Наверное. Хотя моя жена говорит, что после того, как я перестал руководить, я пытаюсь немножко чаще руководить дома. Компенсирую :) Мне нравится отсутствие вертикали, можно со всеми спокойно общаться, разговаривать, спорить, ругаться иногда. Мне нужно было попасть в среду, скажем так. Мы начали говорить про Rails и долгожданную 5 версию, в которой много всего появилось. Например, Action Cable, про который ты и будешь рассказывать на конференции. Чего еще тебе не хватает в Rails? Я бы поставил вопрос по-другому: что в рельсе лишнее, что мешает. Да, это хороший вопрос В прошлом подкасте мы говорили с Алексеем Тактаровым о том, стоит ли выкинуть фронтовую часть. А что бы ты выкинул? Фронтовая часть и сборка ассетов с помощью Sprockets, на мой взгляд, уже устаревшая схема. Фронт сейчас пишется со своими сборщиками, там своя очень развитая экосистема. Которая работает, по моему опыту, гораздо приятнее, чем Sprockets. Это быстро, удобно, куча дополнительных возможностей, тонкая настройка и так далее.. Тот же автопрефиксер вставить в Sprockets, конечно, можно. Но если вставить еще 20 аналогичных плагинов, то ассеты, скорей всего, будут собираться очень долго. Я использовал рельсу, по большей части, неклассическим образом, с серверным рендерингом, используя javascript шаблоны и подобные вещи для обновления странички. Я использовал Rails практически в API режиме, только JSON. HTML-странички отдавались также рельсами, но была идея избавиться и от этого, грузить статику отдельно, так как динамического рендеринга был минимум, например, : вставка логотипа налету. Все фишки типа шаблонов,Turbolinks, вот это все, должны быть отдельными примочками к рельсам. Если хочешь - добавляй. В свое время Sprockets был настоящим прорывом. Возможно, сейчас эта технология устарела, потому что фронт развивается какими-то сумасшедшими темпами. Потому что на тот момент во фронте был популярен только Grunt, ужасный и монструозный, на мой взгляд. Он долго меня отталкивал от использования всего этого, пока не появились более приятные глазу альтернативы. Если говорить про текущий момент: если бы я сейчас начинал новый проект и брал бы в качестве бэкенда рельсу, я бы, учитывая, что у нас в Rails 5 есть встроенный API режим, сразу бы делал так, чтобы отдельно один проект делали фронты, отдельно бэкенды. Это очень удобно и с точки зрения разработки. Незачем фронту поднимать сервер, копаться там. Пусть он делает фронтовую работу и не знает, что на сервере. Пусть просто работает по спецификации, которую дают бэкенды. Ты поднял интересную тему: если сейчас делать проект на рельсе. А если не на рельсе, то на чем бы ты делал? Все зависит от того, какой проект, конечно. Давай как пример возьмем Teachbase. API, взаимодействие по JSON. Выкидываем Action View, выкидываем что-то еще. Может стоит использовать альтернативы на Ruby, но не Rails? Или вообще другой язык? Хороший вопрос. Если вопрос стоит как “что-нибудь другое на Ruby” - то нет. Во первых, у меня нет особого опыта. Я пробовал микрофреймворки типа Cuba, Sinatra. Такие микро-микросервисы, просто экспериментировал и смотрел, что это и зачем. Большие альтернативы, типа Trailblazer или Hanami, я не пробовал, они меня, в принципе, не заинтересовали. Я пока не понял, зачем они мне. Да, я видел бенчмарки, там все классно, быстро. Но рельсы и руби выбираются не для того, чтобы было быстро, а для того, чтобы было удобно. Поэтому такой аргумент для меня не самый важный. Да, у Hanami есть один очень большой недостаток: его никто не использует. Вот! Сложно тягаться в Rails, на котором пишут все, с них многие начинают свой путь в Ruby. Реальные конкуренты рельсам сейчас не внутри Ruby, а Elixir и Phoenix, которые набирают обороты. На мой взгляд это происходит отчасти потому, что Elixir хорошо пиарят. Его научились продавать командам разработчиков, говорят что Elixir классный, у вас все будет быстро. Даже в России уже есть люди, которые используют гибридный стек - часть рельсы, часть эликсира, все хотят его попробовать. И главное все хотят продать разработку на Elixir заказчику. Как коммерческий проект Elixir - очень классная штука. Он проще Erlang, хотя лично я бы все равно предпочел Erlang. Да, будет немножко больно, местами будет больше кода, хотя и это можно оптимизировать. Если отвечать на вопрос “что, если не Rails”. Я бы выбрал Erlang, но только в том случае, если мне дали бы пару разработчиков и чуть больше времени. В основном, все упирается в наличие разработчиков: их мало. С Elixir тоже проблема: многие, кто начал изучать Elixir и что-то на нем сделали, сразу считают, что они знают Erlang. Это примерно та же история, как когда люди, потыкавшие в рельсы, потом говорят, что они знают Ruby. Скорее всего, рынок пострадает от этого. Найти хорошего разработчика на эрланге будет еще сложнее, потому что будет много левого мусора. Во фронте сейчас похожие проблемы: если люди, которые выучили Angular, но не понимают, что такое JavaScript. Теперь везде есть такая проблема. Мы начали говорить про альтернативы Ruby. У тебя большой опыт работы с Erlang, ты писал на PHP, насколько я знаю, ты еще пишешь на go. На каких еще языках ты что-то пробовал делать и что хотел бы попробовать? Давай говорить хронологически. В школы и университете были Pascal, C, Basic, Assembler. Но в университете я пропускал программирование, оно мне очень не нравилось. Я до сих пор удивляюсь, как я так случайно стал программистом. Начинал я с ActionScript. То есть Flash? Да. Я начинал со второго ActionScript, он был ужасен. А вот в третьем появилось очень много изменений: нормальные классы, прокси объекты, которые все так ждут сейчас в JavaScript (но пока там не очень хорошо с поддержкой). Много всего классного, удобного. Как язык он был прикольным. Со своими минусами в виде не очень простой компиляции, в которой, если у тебя не Flash Builder от Adobe, приходится много колдовать. У меня был очень большой проект в рамках Teachbase, когда мы начали делать свое решение для вебинаров. Оно состоит из двух частей: клиентской и серверной. В серверной был Erlang, а в клиентской - большое ActionScript приложение. Это был мой первый большой проект, я продумывал его с нуля, с серьезной архитектурой, там было много классных идей. Это приложение до сих пор работает. В нем нет багов, я последний раз его правил два года назад! С тех пор оно классно работает. И это очень хорошо, потому что я даже не знаю, как мне его теперь собрать, запустить и так далее, у меня нет никаких систем сборки, и я уже плохо помню, как там все устроено. Подожди, третий ActionScript вышел очень давно, он старый. Около 10 лет. Он вообще развивается? Да, он очень старый, но еще жив, на нем пишут. Особенно много используют в игровой индустрии, сделали очень много оптимизаций с точки зрения графики, рендеринга, использованием GPU и так далее. На нем можно писать классные игры. Кажется, какая-то из популярных онлайн игр, типа танков, была изначально на flash. Сейчас не знаю, может, до сих пор. Был период, когда эти технологии были во всем реалтайме, когда, например, нужно было сделать видеочат, когда не было и намека на другие технологии, flash был везде. Это сейчас он мало у кого стоит. На Flash раньше было реализовано то, что сейчас есть в Web RTC, peer-to-peer. Этот проект в итоге был заброшен. Изначально он назывался Stratus, мы даже делали на нем побочный проект - портал для психологов с возможностью консультации онлайн. Работало через раз. Сейчас те вебинары, которые существуют и работают просто в браузере, заявляют, что используют Web RTC, но в большинстве случаев это не так. Именно для стриминга по прежнему используется flash, rtmp. Там он еще жив. Я очень хорошо знал ActionScript, но сейчас не сказал бы, что я в нем эксперт. И не планирую им заниматься. А теперь вернемся к нашему вопросу: что было после ActionScript? Потом был php. Не помню, какая там была версия, с ним были разные замуты. А как ты познакомился с Rails? Все получилось случайно и просто. Есть такая замечательная площадка Coursera, когда она только появилась, там было где-то пять курсов, один из них был про SaaS разработку и так далее. Этот курс, фактически, был таким введением в Rails, тогда еще 3. Не сказать, чтобы я выучил рельсы по этому курсу. Это был очень простой курс, вывод одной страницы и поиск по элементам из базы. Но там было хорошо рассказано про тестирование, про все его уровни. После этого я написал какой-то микро-микросервис для нашей системы. Очень страшный, некрасивый, он даже был запущен через rails s в development режиме. Но он работал, практически не падал. Сложно сказать, в какой момент я начал изучать и что-то делать, переключаться. Сильным толчком был поход на Brainwashing. Когда я туда шел, я практически ничего не знал именно про Rails: что там, как там. А на курсе получил пинок, скажем так. Сел и начал разрабатывать. Можно сказать что Равиль и Газай оказали на тебя большое влияние? Да, они подкинули вдохновения в этом направлении. Если дальше говорить о языках, потом был Erlang. Сейчас я иногда использую Golang для разных вещей. Язык довольно простой, можно выбирать его, если надо что-то быстро набросать. Он компилируется в исполняемый файл и его можно использовать. Еще я очень много занимался фронтом, сейчас уже меньше. Не тянет во фронт? Перейти темную сторону. Хороший вопрос. Наверное, нет. Я так себе фронетенд, потому что я не очень силен во всем, что касается стилей, верстки и прочего. Особенно с новыми замутами: какие-то CSS модули, CSS 4, все меняется очень быстро, не успеваю за этим следить. Мне никогда это не нравилось, я всегда считал верстку работой для каких-то…как-бы без расизма обойтись…не буду говорить :) Это черновая работа. Практически всегда мы отдавали ее на аутсорс. Нам присылали верстку, мы ее интегрировали. Один раз я предложил не мучиться, и все сделать самостоятельно. Тогда я начал этим заниматься. Спасибо Андрею Ситнику, который рассказал всякие интересные штуки и показал как делать не надо, дал некоторый вектор. И я начал делать много фронта, в итоге у нас в Teachbase основная логика на клиенте - это написанный мною фреймворк. Мы начинали еще до того, как React стал популярен, Angular еще не был особо популярен, но уже существовал. Я решил, что мне быстрее написать самому, я понимал как работает JavaScript, и не хотел тратить время на то, чтобы разбираться как работает Angular. Я ни разу не жалею об этом, потому что Angular работал в первой версии ужасно, на мой взгляд слишком неочевидно. Хотя кому-то это может казаться понятным. Во второй версии может быть что-нибудь поменялось. У меня был свой велосипед, он до сих пор работает, ребята его используют. В свободное от работы врем я пытался написать его новую версию на es6, но свободного времени оказалось не так много. Поэтому на гитхабе висит две недоделанных версии моего фреймворка :) Там прикольные идеи, но учитывая, что я тратил на это один день в месяц, они сильно отстают от тенденций, которые сейчас есть во фронте. Мы начали тему своих велосипедов. Как ты участвуешь в open source? Есть ли проекты, на которые ты хотел бы, чтобы ребята обратили внимание? Классный проект, но его никто не замечает. Свои проекты или чужие - не важно. Снова прорекламирую Brainwashing :) Open source для меня начался там, я сделал свой первый коммит в OS. В рамках курса ребята наткнулись на баг в pry-byebug, который был в экстеншене на C. Я его нашел, пофиксил, отправил и получил свой первый pull request, получил от этого удовольствие и немного подсел :) Начал этим заниматься. Если говорить про чужие проекты: я очень много работал над Rubocop, это проект Божидара Батсова. Мне очень нравится этот проект и в целом идея, что код должен быть стилизован. Я это везде пропагандирую, где есть возможность. Но ты же не используешь дефолтный конфиг rubocop? Конечно, я всегда там что-то правлю, что-то отключаю, что-то включаю. А меняются настройки из проекта в проект? У тебя есть сложившиеся настройки, которые ты всегда используешь или считаешь, что каждый раз нужно договариваться с другими разработчиками в проекте? По-разному. Сейчас я, например, пришел в проект с большой кодовой базой и мы прикрутили обязательную проверку rubocop’ом, но там у нас очень минимальный конфиг, который проверяет на очень плохие вещи, типа забытого дебага в коде или фокусы в спеках и так далее. И еще у нас включено несколько оптимизационных копов. Вещи типа длины строки, количества строк в методе и так далее мы в этом проекте не проверяем. А ты приверженец истории про 80 символов, 120 или просто отключаешь эту проверку? Я поддерживаю эту тему, обычно я ставлю 100. Это число получилось опытным путем: я долгое время работал на 21-дюймовом iMac и разрабатывал со сплитскрином. Я делал так, чтобы в обеих частях экрана входили все строчки. Это как раз примерно 100 символов. Логика выбора длины строки была такая, потому что горизонтальный скролл это очень неудобно. Про длину методов или длину класса… нет. Комментарий в начале строки, enter в конце Пустую строку в конце я всегда ставлю. Делаю это, потому что так удобно перейти в конец файла. Есть некоторый отступ снизу, тебе не надо попадать в границу дисплея. Я где-то читал, какими историческими ограничениями это правило было вызвано, в каких-то старых системах. Точно уже не воспроизведу, что там было. И сейчас гитхаб постоянно это подсвечивает в диффах, ругается когда у тебя нет пустой строки - это не очень приятно. В моем дефолтном конфиге на нулевом проекте многое включено, но эти параметры сложности немного увеличены. Если где-то очень большая сложность, и я не хочу рефакторить какой-то метод осознанно, то я просто отключаю этот коп локально, да и все. Но во всех гемах, которыми я занимаюсь, или в которые я активно контрибьютил, внедрял это дело. Про rubocop понятно. На какие еще проекты стоит обратить внимание? В каких ты принимал участие? Я много работал над проектами из экосистемы InfluxDB. Это база данных для хранения временных рядов. Интересный проект, сейчас он вырос в InfluxData, у них свой стек, это что-то похожее на стек от Elasticsearch, где у тебя есть сборщик логов, визуализатор, сама база, но он заточен не на логи, а на какие-то временные метрики. Я начал его использовать в Teachbase, он тогда был не очень известен, это было примерно полтора года назад. Их история очень похожа на историю с Rails 5: была версия 0.8, они обещали через месяц выпустить следующую, более стабильную и с багфиксами, с кластеризацией и так далее. Я даже с ними списывался, мне отвечали что работа идет, версия скоро будет. Было довольно рискованно использовать не очень production ready историю, пару раз все очень страшно падало. Но в итоге, обещанная версия вышла, как и Rails, только в начале этого года. Мы прожили год на нестабильной версии, пришлось все-таки с ней работать. Один из моих больших open source проектов, как раз известен тем, кто работает с этой базой. Я написал адаптер для работы с этой базой в стиле Active Record. Проект называется Influxer. Он очень похож на ActiveRecord: определяется некоторый класс, говоришь какие у него есть атрибуты (это атрибуты этих меток в базе), и он позволяет делать запросы, такой синтаксический сахар. InfluxDB поддерживает SQL-подобный язык, и вместо того, чтобы писать на нем можно использовать вот такую обертку. Это удобно, там есть некоторые фишечки, связи с моделями и так далее. Он активно использовался в Teachbase, для этого он и делался. Я и сейчас продолжаю его поддерживать, в связи с выходом новых версий базы и изменением API, там все более или менее актуально. Проект кто-то использует, есть несколько десятков звездочек. Помимо Influxer я занимался другими проектами для этой экосистемы. До какого-то момента весь код был открыт, сама база и все второстепенные сервисы, которые там использовались. В этом году они ввели коммерческий вариант. Часть кода, естественно, уже не в open source, особенно то, что касается кластеризации. Все остальное открыто, и разработчики рады, когда туда приходят люди и контрибьютят. Там все написано на go, и мой первый опыт с go получился именно там. Я делал пару патчей в проект, который называется Telegraf : это сборщик логов, что-то типа Logstash или новых beats от Elasticsearch. Проект очень активно развивается, до стабильной версии далеко. Если вы хотите попробовать go и поучаствовать в open source, знайте, что там довольно просто сделать pull request. Расскажи еще про Thinknetica. Ты там играешь роль наставника, что это значит? Какой опыт ты оттуда вынес? Сколько обучил человек? Да, слово наставник мне нравится больше. Раньше мы называли друг друга менторы, но это как-то не по-русски. Я работаю там 1,5 года, но с перерывами. Мы берем группу, занимаемся, потом делаем перерыв и так далее. Я обучил человек 50, может чуть больше. Из них процентов 20 очень классные ребята, которые хорошо трудоустроились после курса. Много кто из выпускников устраивается потом на профильные вакансии, но я не сильно слежу за этим. Когда обучаешь довольно простым вещам (мы не учим чему-то сложному), это расширяет кругозор, не дает глазам замылиться. Ты видишь разный код очень разных людей. Ты видишь разные ошибки, прежде всего. Некоторые ты встречаешь первый раз в жизни, то как люди пишут, странные баги. Очень много интересной информации для мозга. Не даешь себе засохнуть. Нравится ли тебе быть наставником? Когда ученики хорошие - нравится, когда плохие - нет. Я очень нервный человек, мне хочется всех послать. В этом плане я скорее тренер, чем учитель, я довольно жесткий. При этом мне нравится общаться с теми, в ком я вижу интерес. Не обязательно должно получаться, но когда ребята стараются, это очень классно, с ними можно поговорить, мы периодически встречаемся лично. Они задают интересные вопросы, которые меня самого заставляют подумать. В целом, любой вид преподавания, особенно если ты преподаешь что-то связанное с твоей профессиональной деятельностью, - это бОльшая прокачка для того кто преподает, чем для тех, кто учится. Помимо знаний, которые получаешь по Ruby, про то как общаться с людьми, можно оттачивать свое ораторское искусство, общение с публикой по ту сторону кабеля, когда проводишь вебинары. Плюсов в этой деятельности много, минусы тоже есть. Есть рутина, когда ты третий раз ведешь один и тот же курс, тебе не так интересно. Ждешь, когда ученики уже дойдут до интересных тем, чтобы с ними было о чем поговорить, а то все какую-то фигню делают :). Вот и мы дошли до интересной темы :) Лейтмотив нашего интервью - RailsClub, ты там будешь рассказывать про Action Cable. В основном, все ему рады. Есть недостатки, не все еще клево, он подтекает; бывает, что два треда пишут в один канал. Но в целом, все очень довольны. И только от тебя я слышу скепсис. Расскажи о чем будешь докладывать? Не хочется спойлерить, но я чувствую, что у тебя на эту тему есть боль. Поделишься? Давай вернемся в весну 2015. За некоторое время до того, как состоялась конференция, на которой DHH объявил об этой замечательной фиче. Это для тебя действительно замечательная фича или такая “замечательная фича”, в кавычках? У меня к ней двойственное отношение. В чем-то замечательная, в чем-то “замечательная”. В любом случае, это громкая фича. В Teachbase вебсокеты использовались. Естественно, они были поддержаны эрлангом, потому что это был наш стек. У нас были планы по тесной интеграции сервиса, который обрабатывал данные с веб сокетов, с рельсой. Готовые решения, которые были в рельсе, мы не рассматривали, потому что людям, у которых есть вебсокет сервис написанный на эрланге, зачем-то пихать вебсокеты на Ruby было бы странно. Это как дать дворнику игрушечный совок. У нас была собственная идея (она реализована, выложена в open source и работает), как подружить рельсы с сокетами. И вот, в марте или апреле выходит Action Cable. Я посмотрел видео, посмотрел примеры, которые были. Первое впечатление было: “Вау, ничего себе! Это круто, это выглядит очень классно, удобно, красиво - прямо то, что я бы хотел использовать”. Это был дополнительный аргумент, чтобы не мигрировать на 4.2, а ждать Rails 5, чтобы в новой сделать что-то, используя кабель, сделать все классно. Хорошее впечатление от Action Cable относилось в первую очередь к каналам, к тому, что сделано непосредственно в Rails, обертке бизнес-логики. Мне очень понравилось, как все сделано: очень rails way, все как надо. Но была и вторая мысль - а на чем это будет? Это мысль пришла мне в голову, когда репозиторий самого кабеля в исходниках отдельно выложили на гитхаб. Тогда это работало на Celluloid, если я правильно помню. То есть это было реализовано на Ruby, что, конечно, не круто. У меня предвзятое, но распространенное мнение, что писать конкурентные программы на Ruby не нужно. Это не то, для чего этот язык был создан, особенно если говорить о масштабируемости и эффективности с точки зрения потребления ресурсов. Тогда у меня возникла идея подумать над тем, как же нам взять хорошее от Action Cable и хорошее от того, что на тот момент уже было реализовано в сервисе на Erlang. А там было уже много всего: горизонтальная масштабируемость, различные авторизации и так далее. Тогда я еще не знал про Phoenix. Как потом выяснилось, это было очень похоже на то, с чего начинался Phoenix. Но только сделано на живом Erlang. Хотя по факту под капотом все мы используем один и тот же Cowboy как эрланговский веб сервер. За год в кабеле произошло, конечно, очень много изменений. Все они, пожалуй, положительные. Во-первых избавились от Celluloid в пользу nio4r (который тем не менее и к Celluloid имеет отношение).Добавили очень много различных возможностей синхронизации, адаптеры и прочее.Но основные проблемы уходить не спешат. Буквально недавно был нашумевший баг с утекающей памятью, незакрывающимися соединениями. Довольно странно, что он возник уже после релиза 5.0. Еще висит несколько багов, связанных с производительностью. Все это говорит о том, что Action Cable сейчас не подходит для продакшена в какую-то большую систему, не блог с посещаемостью 100 человек, а реально большую систему с нагрузкой в тысячи и сотни тысяч людей. Это не тот инструмент, который может решить задачу. Тогда возникает вопрос, а какие вообще проблемы может решать Action Cable? Все мы знаем, что все нововведения в Rails появляются ради одного всем известного проекта на букву B. Я проверил, там действительно используется Action Cable, насколько это возможно определить, просто посмотрев логи браузера. Там используется там не тот Action Cable, который сейчас предлагается в рельсе, а, видимо, какая-то его предыдущая версия. А может это вообще не Action Cable? Может быть. По крайней мере, протокол веб сокетов подписан как ActionCable, но в какой сервер он стучится - мы не знаем. Протокол очень похож. К сожалению, инсайдерской информации оттуда нет. Но я не удивлюсь, если на самом деле там работает какой-нибудь сервер, который просто работает по тому же протоколу, может быть общается с рельсой, хотя на самом деле для того, что они делают, это и не нужно делают они буквально два сценария: отправить изменения, которые произошли на странице (кто-то написал комментарий, отправил тудушечку и так далее). Это бродкаст, первый сценарий. И сценарий, который, наоборот, от клиента отправляет информацию серверу о том, что человек делает на страничке. Она передается в несколько зашифрованном виде, но там примерно следующее: перешел на страничку или закрыл вкладку, трекинг активности некоторый. То есть, у них это все используется не очень нагружено? Да. И в этом случае Action Cable хватает. С одной стороны. А с другой стороны возникает вопрос: а зачем тут рельса? Я вижу единственный момент, который точно там используется, это аутентификация. Нам нужно как-то подтвердить право человека подключиться к сокету, подписаться на конкретный канал и так далее. Вот тут они наверное взаимодействуют с приложением. Но не факт, может быть и нет. Все остальное имеет малое отношение к бизнес логике. Я делал нечто подобное, у меня как раз веб сокеты использовались для трекинга активности. Все эти данные не писались в основное приложение, они там вообще не нужны, по крайней мере в сыром виде. Они писались в отдельную систему, там уже обрабатывались и потом вытягивались, когда нужно. В данном контексте не очень понятно: нужен там Action Cable или нет? Используется он или нет? Но раз это квакает как Action Cable, давайте допустим, что это он. Больше я не знаю реальных примеров. И я думаю, пока нет известных проектов, которые используют Action Cable. Наверное, многие хотят его использовать, но вопрос в объемах. Он очень хорош в том, в чем хороши все рельсы - быстро собрать MVP, показать кому-то первую версию проекта. Тебе не нужно ничего тащить, все есть в коробке, набросал realtime и работает. Но когда ты начинаешь это дело развивать, и появляются клиенты, нагрузка и так далее - что делать с Action Cable? Можно, в принципе, плодить инстансы, он выносится отдельно, как какой-нибудь фоновый Sidekiq и прочие побочные сервисы, которые есть у нас в приложении. Но насколько это эффективно - не знаю, пока у меня есть на этот счет большие сомнения. На твой доклад я очень хочу сходить. По моим ожиданиям это будет один из самых клевых докладов. Какие у тебя ожидания от RailsClub’а? Я первый раз ходил на конференцию в прошлом году. Чего-то о прямо очень зацепившего не было. Но были хорошие докладчики, например Claudio Baccigalupo, который говорил про Rails 5. Доклад Koichi Sasada про garbage collector, историю с поколениями, был очень сильный и интересный. Я понимал, наверное, процентов 70, но это было очень круто. Но я думаю, что любая конференция ценна не столько докладами, а тем, что происходит в кулуарах. Поэтому такого общения я и жду, учитывая что у нас приезжают “звезды”. Не знаю, насколько они будут готовы выйти в народ пообщаться, но это интересно. То есть ты бы задал пару вопросов Матцу? Честно говоря, у меня к нему нет вопросов :) Я бы послушал, что он будет отвечать на вопросы других, обычно я делаю так, редко сам спрашиваю. На прошлой конференции я общался с тобой, после доклада о микросервисах (Андреем Дерябиным, ведущим подкаста). И немного общался с Клаудио. Еще на прошлом RailsClub я узнал про Crystal, это довольно интересно, я теперь слежу за этим проектом. Подумываю над тем, чтобы как-нибудь где-нибудь его применить, написать на нем какой-нибудь экстеншен для Ruby, благо есть такая возможность. Какое-нибудь узкое место, может быть даже в проекте, над которым я сейчас работаю. Жду, когда выдастся свободный денек, чтобы разобраться и поиграть с этим делом. Про RailsClub этого года пока не опубликована информация о докладах, есть только люди. Посмотрим, что нас ждет. Мы выражаем огромную благодарность Лене Могильниковой за помощь с организацией этого выпуска.