Episode 99
Slipstream and Tree-Sitter with Michael Davis
May 17th, 2022
43 mins 49 secs
Tags
About this Episode
Michael Davis explains Slipstream, a Phoenix channels websocket client library that enables Elixir applications to become a client of a Phoenix channel on another server. Out of this work, an underlying websocket library was created built on mint, which has now officially become part of the mint project. We talk about other libraries in the same space and why Slipstream was created. Michael was also involved in the recent Tree-Sitter Elixir work that Github celebrated and he shares some insight into that work as well!
Show Notes online - http://podcast.thinkingelixir.com/99
Elixir Community News
- https://twitter.com/remote_ruby/status/1522546728922226691 – José Valim was a guest on the Remote Ruby podcast talking about his history as a Rails core contributor and the creation of Elixir.
- https://share.transistor.fm/s/7dc8e2e3 – Remote Ruby podcast
- https://github.com/kipcole9/image – New image-processing library called Image that leverages libvips though NIF bindings.
- https://github.com/libvips/libvips
- https://github.com/lucasvegi/Elixir-Code-Smells – Elixir Code Smells project
- https://github.com/lucasvegi/Elixir-Code-Smells/blob/main/code_smells.livemd – Elixir Code Smells Livebook notebook
- https://litestream.io/ – Litestream project for SQLite replication
- https://fly.io/blog/all-in-on-sqlite-litestream/ – Ben Johnson joined Fly.io and will continue work on Litestream
- David's wife had a baby girl! Congrats! Now has 2 kids.
- Next episode is 100 and will be the final visit José Valim in our series. Also covers future development.
Do you have some Elixir news to share? Tell us at @ThinkingElixir or email at show@thinkingelixir.com
Discussion Resources
- https://github.com/NFIBrokerage/slipstream – Slipstream Phoenix channels websocket client library
- https://github.com/NFIBrokerage/mint_web_socket – Separate library that uses Mint and supports websockets.
- https://github.com/NFIBrokerage/slipstream/blob/main/guides/implementation.md
- https://github.com/Azolo/websockex – Pure Elixir websockets implemented as a special OTP process
- https://github.com/ninenines/gun – Popular Erlang HTTP/WebSocket client library from the same group of dependencies as cowboy, the underlying HTTP/WebSocket server for Phoenix
- https://github.com/jeremyong/websocket_client – WebSocket client that underlies phoneix_client and phoenix_gen_socket_client. Appears to be inactive and it no longer compiles on OTP25.
- https://hex.pm/packages/phoenix_channel_client – Retired library by Justin Schneck
- https://hex.pm/packages/phoenix_client – by Justin Schneck “Elixir Phoenix Client for Channels”
- https://github.com/J0/phoenix_gen_socket_client – Another Phoenix Channel client
- https://elixirforum.com/t/slipstream-a-slick-elixir-websocket-client-for-phoenix-channels/37456 – ElixirForum post on Slipstream
- https://github.com/nerves-hub/nerves_hub_link – A more prominent dependent of Slipstream. Slipstream is used as the default communication system for embedded devices to talk to the nerves hub (which provides firmware updates)
- https://twitter.com/whatyouhide/status/1521381183229210624 – mint_web_socket was just moved under the elixir-mint organization
- https://twitter.com/josevalim/status/1521390714025758720 – Jose Valim recently credited NFIBrokerage for bringing even more contributions to the Elixir community
- https://helix-editor.com/
- https://clojure.org/
- https://github.com/NFIBrokerage
- https://www.eventstore.com/eventstoredb
- https://github.com/elixir-mint/mint
- https://github.com/elixir-lang/gen_stage
- https://grpc.io/
- https://github.com/tree-sitter/tree-sitter
- https://github.com/elixir-lang/tree-sitter-elixir
- https://elixir-lang.org/tree-sitter-elixir/
- https://github.com/jonatanklosko – Jonatan Kłosko did the majority of the work on the Elixir Tree-Sitter library
- https://github.com/gleam-lang/tree-sitter-gleam/
- https://github.com/ninenines/gun
- https://github.com/Azolo/websockex
- https://hex.pm/packages/phoenix_client
- https://github.com/nerves-hub/nerves_hub_link
- https://en.wikipedia.org/wiki/HTTP/2
- https://github.com/NFIBrokerage/spear
Guest Information
- https://github.com/the-mikedavis – on Github
- https://github.com/NFIBrokerage – Work Github organization
Find us online
- Message the show - @ThinkingElixir
- Email the show - show@thinkingelixir.com
- Mark Ericksen - @brainlid
- David Bernheisel - @bernheisel
- Cade Ward - @cadebward