3 ms·
Great screencast, Alex! The best tools are the ones you don’t even notice, and Elixir is an absolute pleasure. You get to focus on the problem with little cere
by bookercodes 9y ago
Great screencast, Alex!
The best tools are the ones you don’t even notice, and Elixir is an absolute pleasure. You get to focus on the problem with little ceremony. Chat is a really interesting application of Channels, too.
It’s especially interesting to me as my team and I are working on a hosted API called Chatkit that makes it equally easy to add real-time chat to your applications, no matter what technology you’re using: https://pusher.com/chatkit https://pusher.com/chatkit
In addition to basic chat data, we also manage, “Who’s online”, typing indicators, rich media... And more
I highlight those features in particular because I am especially curious what that would look like with Elixir and Pheonix? Managing chat data, especially at scale is quite a hairy problem.
By the way, it simple/clean to subscribe to Elixir Channels on other platforms like Android and iOS, for example? One place we think we can add a lot of value is X-platform client SDKs (JavaScript, Kotlin, Swift, etc.)
- dep_b 9y agoLibraries exist for Swift and JavaScript for sure but honestly the implementation in vanilla JS wasn’t that hard.
- elcritch 9y agoYou should read Discord’s experience with Elixir if you haven’t already [1]. They didn’t use Phoenix channels though AFAIK. Also the Phoenix channel implementation uses CRDTs behind the scenes from what I gather. They make problems like user presence much more tractable [2]. 1: https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b 2: https://github.com/phoenixframework/phoenix/blob/master/guides/docs/presence.md https://github.com/phoenixframework/phoenix/blob/master/guid...
- alekx 9y agoThanks! I'm glad you liked it.
- no_identd 9y agoYou likely want to read this, and my comment there: https://opkode.com/blog/slacks-bait-and-switch/#comment-3799191155 https://opkode.com/blog/slacks-bait-and-switch/#comment-3799...
- chrismccord 9y agoPhoenix has Phoenix Presence for managing the "Who's online" feature. We use replicated CRDTs to transparently manage the presence state across the cluster: https://dockyard.com/blog/2016/03/25/what-makes-phoenix-presence-special-sneak-peek https://dockyard.com/blog/2016/03/25/what-makes-phoenix-pres... As far as native platform clients, we have all major channel clients covered across community libs – Swift/objc/Java/C#