Skip to content

Commit

Permalink
manual podcast update
Browse files Browse the repository at this point in the history
  • Loading branch information
danivovich committed Dec 21, 2023
1 parent 803220b commit a509d73
Show file tree
Hide file tree
Showing 5 changed files with 622 additions and 1 deletion.
206 changes: 206 additions & 0 deletions _data/elixir_wizards_episodes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,212 @@
some of the topics we’ll be covering.</p>\n\n<p>Learn more about how SmartLogic
uses <a href=\"https://smr.tl/2Hyslu8\" rel=\"nofollow\">Phoenix and Elixir.</a></p>\n
\ "
- title: Actor Model and Concurrent Processing in Elixir vs. Clojure and Ruby with
Xiang Ji & Nathan Hessler
slug: s11-e10-actor-model-concurrency-elixir-ruby-clojure
link: https://smartlogic.io/podcast/elixir-wizards/s11-e10-actor-model-concurrency-elixir-ruby-clojure
guid: a017c45b-4f07-4c00-b4ed-f7c4bf616af2
pubDate: Thu, 21 Dec 2023 07:00:00 -0500
pubDateFriendly: December 21, 2023
description: "In this episode of Elixir Wizards, Xiang Ji and Nathan Hessler join
hosts Sundi Myint and Owen Bickford to compare actor model implementation in Elixir,
Ruby, and Clojure. \nIn Elixir, the actor model is core to how the BEAM VM works,
with lightweight processes communicating asynchronously via message passing. GenServers
provide a common abstraction for building actors, handling messages, and maintaining
internal state. In Ruby, the actor model is represented through Ractors, which
currently map to OS threads. \nThey discuss what we can learn by comparing models,
understanding tradeoffs between VMs, languages, and concurrency primitives, and
how this knowledge can help us choose the best tools for a project.\nTopics discussed
in this episode:\nDifference between actor model and shared memory concurrency\nIsolation
of actor state and communication via message passing\nBEAM VM design for high
concurrency via lightweight processes\nGenServers as common abstraction for building
stateful actors\nGenServer callbacks for message handling and state updates\nAgents
as similar process abstraction to GenServers\nShared state utilities like ETS
for inter-process communication\nGlobal Interpreter Lock in older Ruby VMs\nRactors
as initial actor implementation in Ruby mapping to threads\nPlanned improvements
to Ruby concurrency in 3.3\nAkka implementation of actor model on JVM using thread
scheduling\nLimitations of shared memory concurrency on JVM\nProject Loom bringing
lightweight processes to JVM\nBuilding GenServer behavior in Ruby using metaprogramming\nCSP
model of communication using channels in Clojure\nDifferences between BEAM scheduler
and thread-based VMs\nComparing Elixir to academic languages like Haskell\nRemote
and theScore are hiring!\nLinks mentioned in this episode:\ntheScore is hiring!
https://www.thescore.com/\nRemote is also hiring! https://remote.com/\nComparing
the Actor Model and CSP with Elixir and Clojure (https://xiangji.me/2023/12/18/comparing-the-actor-model-and-csp-with-elixir-and-clojure/)
Blog Post by Xiang Ji\nComparing the Actor model & CSP concurrency with Elixir
& Clojure (https://www.youtube.com/watch?v=lIQCQKPRNCI) Xiang Ji at ElixirConf
EU 2022\nClojure Programming Language https://clojure.org/ \nAkka https://akka.io/
\nGo Programming Language https://github.com/golang/go \nProto Actor for Golang
https://proto.actor/ \nRabbitMQ Open-Source Message Broker Software  https://github.com/rabbitmq
\nJVM Project Loom https://github.com/openjdk/loom \nRactor for Ruby  https://docs.ruby-lang.org/en/master/ractor_md.html\nSeven
Concurrency Models in Seven Weeks: When Threads Unravel (https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/)by
Paul Butcher\nSeven Languages in Seven Weeks (https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/)
by Bruce A. Tate\nGenServer https://hexdocs.pm/elixir/1.12/GenServer.html\nets
https://www.erlang.org/doc/man/ets.html \nElixir in Action (https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/)
by Saša Jurić\nRedis https://github.com/redis/redis \nDesigning for Scalability
with Erlang/OTP (https://www.oreilly.com/library/view/designing-for-scalability/9781449361556/)
by Francesco Cesarini & Steve Vinoski\nDiscord Blog: Using Rust to Scale Elixir
for 11 Million Concurrent Users (https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users)\nXiang's
website https://xiangji.me/ \nFeeling Good: The New Mood Therapy (https://www.thriftbooks.com/w/feeling-good-the-new-mood-therapy-by-david-d-burns/250046/?resultid=7691fb71-d8f9-4435-a7a3-db3441d2272b#edition=2377541&idiq=3913925)
by David D. Burns Special Guests: Nathan Hessler and Xiang Ji.\n"
author: SmartLogic LLC
embedUrl: https://fireside.fm/player/v2/IAs5ixts+ohqohjyI
enclosure:
url: https://aphid.fireside.fm/d/1437767933/03a50f66-dc5e-4da4-ab6e-31895b6d4c9e/a017c45b-4f07-4c00-b4ed-f7c4bf616af2.mp3
length: '92974479'
type: audio/mpeg
itunes:
episodeType: full
season: '11'
author: SmartLogic LLC
subtitle: 'In this episode of Elixir Wizards, Xiang Ji and Nathan Hessler join
hosts Sundi Myint and Owen Bickford to compare actor model implementation, concurrent
processing, and GenServers in Elixir, Ruby, and Clojure. '
duration: '47:57'
explicit: 'no'
keywords: Elixir, Ruby, Clojure, Erlang, JVM, Ruby on Rails, programming language,
software engineering, computer science, technology trends, programming community,
software podcasts, tech podcasts, coding, programming frameworks, system design,
tech industry, software development, tech education, programming education,
developer community, coding practices, software best practices, tech innovation,
programming innovation, tech solutions, software solutions, tech strategies,
programming strategies, tech analysis, software analysis, tech development,
programming development, tech expertise, software expertise, tech knowledge,
programming knowledge, tech learning, programming learning, tech skills, software
skills, tech tips, programming tips, tech updates, software updates, tech advice,
programming advice, tech experience, software experience, tech exploration,
programming exploration, tech ideas, software ideas, tech information, programming
information, tech news, software news, tech opinions, programming opinions,
tech perspectives, software perspectives, tech resources, programming resources,
tech skills development, software skills development, tech studies, programming
studies, tech techniques, programming techniques, tech theories, programming
theories, tech thoughts, software thoughts, tech tools, programming tools, tech
training, programming training, tech trends, software trends, tech tutorials,
programming tutorials, tech wisdom, software wisdom, tech workshops, programming
workshops, open-source software, web development, application development, software
architecture, concurrency models, virtual machines, functional programming,
object-oriented programming, procedural programming, software lifecycle, agile
methodologies, software testing, software deployment, cloud computing, distributed
systems, microservices, API development, data structures, algorithms, software
optimization, software security, database management, user interface design,
user experience design, DevOps, machine learning, artificial intelligence, data
science, big data, internet of things, blockchain technology, quantum computing,
augmented reality, virtual reality, mobile development, game development, software
compliance, software standards, tech entrepreneurship, tech startups, tech leadership,
tech mentorship, tech diversity, tech inclusion, remote work, digital transformation,
tech sustainability, tech ethics, tech policy, tech regulation.
image: https://assets.fireside.fm/file/fireside-images/podcasts/images/0/03a50f66-dc5e-4da4-ab6e-31895b6d4c9e/episodes/a/a017c45b-4f07-4c00-b4ed-f7c4bf616af2/cover.jpg
summary: "\n <p>In this episode of Elixir Wizards, Xiang Ji and Nathan
Hessler join hosts Sundi Myint and Owen Bickford to compare actor model implementation
in Elixir, Ruby, and Clojure. </p>\n\n<p>In Elixir, the actor model is core
to how the BEAM VM works, with lightweight processes communicating asynchronously
via message passing. GenServers provide a common abstraction for building actors,
handling messages, and maintaining internal state. In Ruby, the actor model
is represented through Ractors, which currently map to OS threads. </p>\n\n<p>They
discuss what we can learn by comparing models, understanding tradeoffs between
VMs, languages, and concurrency primitives, and how this knowledge can help
us choose the best tools for a project.</p>\n\n<h3>Topics discussed in this
episode:</h3>\n\n<ul>\n<li>Difference between actor model and shared memory
concurrency</li>\n<li>Isolation of actor state and communication via message
passing</li>\n<li>BEAM VM design for high concurrency via lightweight processes</li>\n<li>GenServers
as common abstraction for building stateful actors</li>\n<li>GenServer callbacks
for message handling and state updates</li>\n<li>Agents as similar process abstraction
to GenServers</li>\n<li>Shared state utilities like ETS for inter-process communication</li>\n<li>Global
Interpreter Lock in older Ruby VMs</li>\n<li>Ractors as initial actor implementation
in Ruby mapping to threads</li>\n<li>Planned improvements to Ruby concurrency
in 3.3</li>\n<li>Akka implementation of actor model on JVM using thread scheduling</li>\n<li>Limitations
of shared memory concurrency on JVM</li>\n<li>Project Loom bringing lightweight
processes to JVM</li>\n<li>Building GenServer behavior in Ruby using metaprogramming</li>\n<li>CSP
model of communication using channels in Clojure</li>\n<li>Differences between
BEAM scheduler and thread-based VMs</li>\n<li>Comparing Elixir to academic languages
like Haskell</li>\n<li>Remote and theScore are hiring!</li>\n</ul>\n\n<h3>Links
mentioned in this episode:</h3>\n\n<p>theScore is hiring! <a href=\"https://www.thescore.com/\"
rel=\"nofollow\">https://www.thescore.com/</a><br>\nRemote is also hiring! <a
href=\"https://remote.com/\" rel=\"nofollow\">https://remote.com/</a><br>\n<a
href=\"https://xiangji.me/2023/12/18/comparing-the-actor-model-and-csp-with-elixir-and-clojure/\"
rel=\"nofollow\">Comparing the Actor Model and CSP with Elixir and Clojure</a>
Blog Post by Xiang Ji<br>\n<a href=\"https://www.youtube.com/watch?v=lIQCQKPRNCI\"
rel=\"nofollow\">Comparing the Actor model &amp; CSP concurrency with Elixir
&amp; Clojure</a> Xiang Ji at ElixirConf EU 2022<br>\nClojure Programming Language
<a href=\"https://clojure.org/\" rel=\"nofollow\">https://clojure.org/</a> <br>\nAkka
<a href=\"https://akka.io/\" rel=\"nofollow\">https://akka.io/</a> <br>\nGo
Programming Language <a href=\"https://github.com/golang/go\" rel=\"nofollow\">https://github.com/golang/go</a>
<br>\nProto Actor for Golang <a href=\"https://proto.actor/\" rel=\"nofollow\">https://proto.actor/</a>
<br>\nRabbitMQ Open-Source Message Broker Software  <a href=\"https://github.com/rabbitmq\"
rel=\"nofollow\">https://github.com/rabbitmq</a> <br>\nJVM Project Loom <a href=\"https://github.com/openjdk/loom\"
rel=\"nofollow\">https://github.com/openjdk/loom</a> <br>\nRactor for Ruby 
<a href=\"https://docs.ruby-lang.org/en/master/ractor_md.html\" rel=\"nofollow\">https://docs.ruby-lang.org/en/master/ractor_md.html</a><br>\n<a
href=\"https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/\"
rel=\"nofollow\">Seven Concurrency Models in Seven Weeks: When Threads Unravel
</a>by Paul Butcher<br>\n<a href=\"https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/\"
rel=\"nofollow\">Seven Languages in Seven Weeks</a> by Bruce A. Tate<br>\nGenServer
<a href=\"https://hexdocs.pm/elixir/1.12/GenServer.html\" rel=\"nofollow\">https://hexdocs.pm/elixir/1.12/GenServer.html</a><br>\nets
<a href=\"https://www.erlang.org/doc/man/ets.html\" rel=\"nofollow\">https://www.erlang.org/doc/man/ets.html</a>
<br>\n<a href=\"https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/\"
rel=\"nofollow\">Elixir in Action</a> by Saša Jurić<br>\nRedis <a href=\"https://github.com/redis/redis\"
rel=\"nofollow\">https://github.com/redis/redis</a> <br>\n<a href=\"https://www.oreilly.com/library/view/designing-for-scalability/9781449361556/\"
rel=\"nofollow\">Designing for Scalability with Erlang/OTP</a> by Francesco
Cesarini &amp; Steve Vinoski<br>\nDiscord Blog: <a href=\"https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users\"
rel=\"nofollow\">Using Rust to Scale Elixir for 11 Million Concurrent Users</a><br>\nXiang&#39;s
website <a href=\"https://xiangji.me/\" rel=\"nofollow\">https://xiangji.me/</a>
<br>\n<a href=\"https://www.thriftbooks.com/w/feeling-good-the-new-mood-therapy-by-david-d-burns/250046/?resultid=7691fb71-d8f9-4435-a7a3-db3441d2272b#edition=2377541&idiq=3913925\"
rel=\"nofollow\">Feeling Good: The New Mood Therapy</a> by David D. Burns</p><p>Special
Guests: Nathan Hessler and Xiang Ji.</p>\n "
contentEncoded: "\n <p>In this episode of Elixir Wizards, Xiang Ji and Nathan
Hessler join hosts Sundi Myint and Owen Bickford to compare actor model implementation
in Elixir, Ruby, and Clojure. </p>\n\n<p>In Elixir, the actor model is core to
how the BEAM VM works, with lightweight processes communicating asynchronously
via message passing. GenServers provide a common abstraction for building actors,
handling messages, and maintaining internal state. In Ruby, the actor model is
represented through Ractors, which currently map to OS threads. </p>\n\n<p>They
discuss what we can learn by comparing models, understanding tradeoffs between
VMs, languages, and concurrency primitives, and how this knowledge can help us
choose the best tools for a project.</p>\n\n<h3>Topics discussed in this episode:</h3>\n\n<ul>\n<li>Difference
between actor model and shared memory concurrency</li>\n<li>Isolation of actor
state and communication via message passing</li>\n<li>BEAM VM design for high
concurrency via lightweight processes</li>\n<li>GenServers as common abstraction
for building stateful actors</li>\n<li>GenServer callbacks for message handling
and state updates</li>\n<li>Agents as similar process abstraction to GenServers</li>\n<li>Shared
state utilities like ETS for inter-process communication</li>\n<li>Global Interpreter
Lock in older Ruby VMs</li>\n<li>Ractors as initial actor implementation in Ruby
mapping to threads</li>\n<li>Planned improvements to Ruby concurrency in 3.3</li>\n<li>Akka
implementation of actor model on JVM using thread scheduling</li>\n<li>Limitations
of shared memory concurrency on JVM</li>\n<li>Project Loom bringing lightweight
processes to JVM</li>\n<li>Building GenServer behavior in Ruby using metaprogramming</li>\n<li>CSP
model of communication using channels in Clojure</li>\n<li>Differences between
BEAM scheduler and thread-based VMs</li>\n<li>Comparing Elixir to academic languages
like Haskell</li>\n<li>Remote and theScore are hiring!</li>\n</ul>\n\n<h3>Links
mentioned in this episode:</h3>\n\n<p>theScore is hiring! <a href=\"https://www.thescore.com/\"
rel=\"nofollow\">https://www.thescore.com/</a><br>\nRemote is also hiring! <a
href=\"https://remote.com/\" rel=\"nofollow\">https://remote.com/</a><br>\n<a
href=\"https://xiangji.me/2023/12/18/comparing-the-actor-model-and-csp-with-elixir-and-clojure/\"
rel=\"nofollow\">Comparing the Actor Model and CSP with Elixir and Clojure</a>
Blog Post by Xiang Ji<br>\n<a href=\"https://www.youtube.com/watch?v=lIQCQKPRNCI\"
rel=\"nofollow\">Comparing the Actor model &amp; CSP concurrency with Elixir &amp;
Clojure</a> Xiang Ji at ElixirConf EU 2022<br>\nClojure Programming Language <a
href=\"https://clojure.org/\" rel=\"nofollow\">https://clojure.org/</a> <br>\nAkka
<a href=\"https://akka.io/\" rel=\"nofollow\">https://akka.io/</a> <br>\nGo Programming
Language <a href=\"https://github.com/golang/go\" rel=\"nofollow\">https://github.com/golang/go</a>
<br>\nProto Actor for Golang <a href=\"https://proto.actor/\" rel=\"nofollow\">https://proto.actor/</a>
<br>\nRabbitMQ Open-Source Message Broker Software  <a href=\"https://github.com/rabbitmq\"
rel=\"nofollow\">https://github.com/rabbitmq</a> <br>\nJVM Project Loom <a href=\"https://github.com/openjdk/loom\"
rel=\"nofollow\">https://github.com/openjdk/loom</a> <br>\nRactor for Ruby  <a
href=\"https://docs.ruby-lang.org/en/master/ractor_md.html\" rel=\"nofollow\">https://docs.ruby-lang.org/en/master/ractor_md.html</a><br>\n<a
href=\"https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/\"
rel=\"nofollow\">Seven Concurrency Models in Seven Weeks: When Threads Unravel
</a>by Paul Butcher<br>\n<a href=\"https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/\"
rel=\"nofollow\">Seven Languages in Seven Weeks</a> by Bruce A. Tate<br>\nGenServer
<a href=\"https://hexdocs.pm/elixir/1.12/GenServer.html\" rel=\"nofollow\">https://hexdocs.pm/elixir/1.12/GenServer.html</a><br>\nets
<a href=\"https://www.erlang.org/doc/man/ets.html\" rel=\"nofollow\">https://www.erlang.org/doc/man/ets.html</a>
<br>\n<a href=\"https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/\"
rel=\"nofollow\">Elixir in Action</a> by Saša Jurić<br>\nRedis <a href=\"https://github.com/redis/redis\"
rel=\"nofollow\">https://github.com/redis/redis</a> <br>\n<a href=\"https://www.oreilly.com/library/view/designing-for-scalability/9781449361556/\"
rel=\"nofollow\">Designing for Scalability with Erlang/OTP</a> by Francesco Cesarini
&amp; Steve Vinoski<br>\nDiscord Blog: <a href=\"https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users\"
rel=\"nofollow\">Using Rust to Scale Elixir for 11 Million Concurrent Users</a><br>\nXiang&#39;s
website <a href=\"https://xiangji.me/\" rel=\"nofollow\">https://xiangji.me/</a>
<br>\n<a href=\"https://www.thriftbooks.com/w/feeling-good-the-new-mood-therapy-by-david-d-burns/250046/?resultid=7691fb71-d8f9-4435-a7a3-db3441d2272b#edition=2377541&idiq=3913925\"
rel=\"nofollow\">Feeling Good: The New Mood Therapy</a> by David D. Burns</p><p>Special
Guests: Nathan Hessler and Xiang Ji.</p>\n "
- title: Static Code Analysis in Elixir vs. Ruby with René Föhring & Marc-André Lafortune
slug: s11-e09-static-code-analyzer-elixir-credo-ruby-rubocop
link: https://smartlogic.io/podcast/elixir-wizards/s11-e09-static-code-analyzer-elixir-credo-ruby-rubocop
Expand Down
Loading

0 comments on commit a509d73

Please sign in to comment.