Keynote: Evolution of real-time, AnyCable Pro and... me


Summarized using AI

Keynote: Evolution of real-time, AnyCable Pro and... me

Irina Nazarova • September 11, 2024 • Sarajevo, Bosnia and Herzegovina • Keynote

The keynote titled "Evolution of real-time, AnyCable Pro and... me" presented by Irina Nazarova at EuRuKo 2024, explores the development and journey of the AnyCable Pro, a performant alternative to Action Cable designed for Rails developers focusing on real-time applications.

Key Points Discussed:

- Genesis of AnyCable: AnyCable was introduced in 2016 as an open-source replacement for Action Cable, initially providing more efficient memory management and lower latency through its Go server capabilities.

- Transition to Pro Version: Launched in 2021, AnyCable Pro added features such as GraphQL integration and long-polling capabilities, catering to the needs of larger companies and industries requiring real-time functionality.

- Market Shifts: The speaker recounted significant market changes from GraphQL to Hotwire and the rise in demand for collaboration tools and AI-powered applications during the pandemic.

- Delivery Guarantees and Reliability: Key advancements included the introduction of delivery guarantees for messages in web sockets and the ability to create resumable sessions, enhancing the overall reliability of real-time applications.

- Evolution of Customer Needs: Feedback from customers led to understanding their demands for long-polling in corporate environments and specific use cases like EV charging stations and AI interactions via Twilio.

- Managed AnyCable: Recently launched, Managed AnyCable simplifies deployment and aims to reach non-Rails applications, broadening its applicability and maintaining its focus on ease of use.

- Telemetry in Open Source: Emphasis on comparing metrics between open-source and pro versions to understand user interactions and improve both product offerings.

Conclusions and Takeaways:

- The open-source community's collaboration has fostered the growth of AnyCable, proving its viability in solving complex real-time problems.

- Future challenges lie in providing higher-level abstractions and making integration simpler for developers, with the growing need for solutions that connect seamlessly across different platforms.

- Trust and support from the community were highlighted as critical factors for success in evolving AnyCable products further.

Overall, Irina's insights reflect on the past experiences of AnyCable while forecasting its future trajectory in the ever-evolving landscape of real-time technology.

Keynote: Evolution of real-time, AnyCable Pro and... me
Irina Nazarova • Sarajevo, Bosnia and Herzegovina • Keynote

Date: September 11, 2024
Published: January 13, 2025
Announced: unknown

We started AnyCable Pro with a few Pro features on top of AnyCable, which was built as a performant replacement for Action Cable for Rails developers, and we needed to make it commercially successful for Evil Martians. So we focused on building what people wanted and saw their priorities shift from GraphQL to Hotwire, from chats to collaboration, and to AI-powered voice apps. With the initial value proposition in performance, we switched to solving data reliability in WebSockets, building session and data recovery, fallbacks and much more, to allow engineers to focus on their business logic, not the specific realtime issues. AnyCable became language and framework agnostic, with a much more simple initial setup and deploy. Finally we launched Managed AnyCable earlier this year. Let's reflect on our story three years in: what worked, what didn't, and our most precious learnings. And what does the future look like for AnyCable and realtime?

The talk will weave together two narratives: our experience building and growing AnyCable Pro, and the evolution of real-time applications as we've observed.

Part 1: AnyCable Pro Journey

Launching a Commercial Version: Strategies for introducing a commercial version of an open-source product while keeping it low-code, simple, and cost-effective. Telemetry and Insights: Setting up telemetry and using it to make informed decisions. Marketing Tactics: Using blog posts, case studies, newsletters, social media, and conference talks to promote the product. On-Premise Considerations: Key factors in making on-premise products user-friendly. Managed Service Launch: How to build an MVP of a managed service.

Part 2: Evolution of Real-Time Applications

Observing the shift from GraphQL to Hotwire, from chat apps to collaborative tools, and to AI-powered voice applications.

The talk will conclude with thoughts on the future of real-time applications and AnyCable.

EuRuKo 2024

00:00:07.319 it's a huge honor to be closing the first day and I think I I got a like a double
00:00:14.519 honor because I'm doing two things with you uh so we're going to start with this talk and then we're going to have a um
00:00:23.240 discussion about uh sustainable open source so let's
00:00:31.599 let's get am I all
00:00:37.360 set all right it
00:00:42.920 works right just uh seeing a bunch of people coming in but I'm gonna um I'm G
00:00:48.960 to be I'm going to be starting yeah super nice to see so many familiar faces yeah
00:00:56.480 thank you thank you all for coming um all
00:01:02.399 right let's begin so welcome to the evolution of real time any cable Pro and
00:01:11.400 a little bit about my own so when we think about real
00:01:19.600 time uh we think about web technology right so it All Began years ago of
00:01:27.880 course Java if anybody remembers
00:01:34.119 flash ah you just dated yourself guys uh but of course um there was uh
00:01:43.079 some technologies and then at some point around 2015 or around
00:01:49.159 2011 something started happening here uh you can call it camber and
00:01:55.920 explosion of different products different Technologies um and this is happening of course and
00:02:02.880 even accelerating to this day so what happened in
00:02:11.840 2011 some point I asked people on my Twitter if they recognize this
00:02:18.200 logger now I want to try it with you guys this is a little bit scary because
00:02:23.480 this is a online poll it can crash but can you please use theq
00:02:32.400 code and by the way we are using this this platform po
00:02:39.280 everywhere I'm going to tell you a few things about that they were um in White
00:02:45.680 commor in one of the first batches in 2008 they are built with
00:02:51.720 rails and guess what they're running on any cable Pro so
00:03:00.760 let's see so right now each one of you please
00:03:08.920 don't don't say any curse words there each one of you sending a response
00:03:15.360 is connecting to any cable go server running somewhere on the infrastructure
00:03:22.080 owned by pole everywhere all right it's a little bit
00:03:28.920 crazy but it's interesting nope nope is still
00:03:36.480 winning
00:03:42.760 to all right well I'll give it a couple more
00:03:48.120 seconds and we'll go let me check if there's the right
00:03:54.720 answer okay I hear I see it
00:04:04.200 this is a bit crazy but uh this is real time technology all right first of all I'm
00:04:12.200 relieved it didn't nothing
00:04:18.880 crashed pineapple yeah it looks a little like pineapple it looks a little like like
00:04:24.960 what uh maybe like a bird let's go
00:04:32.639 um 80% of people on my Twitter also didn't know this is the logo of
00:04:40.400 websockets so websocket is um the protocol that was that is relatively new
00:04:45.960 compared to others um and and this is the
00:04:51.840 protocol that steered this whole innovation in real time
00:04:57.520 Tech we're going to be talking about one particular item on this list and this is
00:05:04.560 any cable any cable is a realtime infrastructure built by um co-founded by
00:05:11.199 Vladimir Deen VA DV uh who is the head of beend at theil Mars and um era nazara
00:05:20.680 you can call me era uh I'm the CEO at evil
00:05:25.960 martians uh just a few words about us if you don't know we are a distributed team
00:05:33.919 we have a team in Japan in Portugal and here in the states and in other places
00:05:38.960 as well and we consult startups our customers are products for engineers
00:05:44.199 startups on Rails uh real time and collaboration heavy products and now
00:05:50.280 local first apps as well so we do a bunch of things of them from design to development uh scaling performance many
00:05:58.680 things so my vision for our work in open source is this if you are a startup
00:06:07.000 using rails and you have a hard problem you should come to us and have this problem fixed it's can be either with
00:06:13.240 our open source with our content or with our services either way uh and there is
00:06:19.199 a link where we collect all the uh kind of relevant and the best tools for
00:06:25.360 startups on Rails uh and of course you might might know us because of some of our work I
00:06:32.479 hope so uh I'm also uh running San Francisco Ruby Meetup I just decided to share this
00:06:41.000 with you I I moved to San Francisco in January and
00:06:49.319 uh we one of the meetups we hosted at Y combinator and this is the partner at YC
00:06:55.520 explaining how rails played this huge amazing huge role in why combinators uh
00:07:02.639 history and they they they still love rails so you are building with rails don't hesitate to apply but we are
00:07:10.280 running uh monthly meetups it's it's amazing it's amazing crowd and um just
00:07:17.319 wanted to share this bit with you because it making me super excited that we we have
00:07:23.440 that okay let's start the story um uh The Story begins in 2015
00:07:30.120 in 2015 um and it begins with rails rails introduces action cable and there are a
00:07:37.680 few Frameworks that introduced first class uh support for
00:07:43.319 websockets including of course alexir Phoenix uh Jango and laral only this
00:07:50.599 year uh and the idea is well to be honest like back in 2015 when we want to
00:07:57.680 build Real Time with Ruby you have a little bit of a
00:08:03.199 problem so in 2016 vaa brings any cable
00:08:08.240 uh this is a go server uh built as a drop-in replacement for Action cable
00:08:13.919 it's open source it's using the same uh for example the same the same protocol
00:08:19.280 and it's also using radius just like U action cable any cables
00:08:26.120 um is adding complexity to the system and originally it had this setup of with
00:08:33.880 three components there is there by the way you can now recognize uh the
00:08:39.240 logo I guess I hope uh there is a web socket server which is which is any
00:08:45.440 cable go there is a rails component any cable rails which is RPC component and
00:08:52.640 finally there is R is so it's a lot but um the motto is we we bu build uh
00:09:00.079 performant websockets and performance first of all in terms of memory usage because websocket connections are
00:09:07.519 persistent connections they uh they are not you know HTTP
00:09:14.000 connection it it is given you the response and it disconnects web websocket connection
00:09:21.120 stays alive until somebody wants to break it that's why memory management is very
00:09:29.399 tricky go is a bit better positioned for that so we got 10 times more memory
00:09:35.800 efficient solution and also uh the broadcasting latency of any
00:09:43.360 cable is very stable and indeed real time while uh action cables latency is
00:09:50.160 quickly becoming seconds so not really real time
00:09:55.920 so this was the idea action Cable says you can build real-time features in the
00:10:02.240 comfort of your framework and any cable says you can scale
00:10:17.200 missing okay it was Co so in uh during the pandemic we saw
00:10:26.839 an increase of applications build with uh realtime features in mind why I mean
00:10:34.839 because everybody was forced into online so this is uh one of our Consulting
00:10:42.639 customers from those days and to the till this day to be honest uh VTO VTO is
00:10:48.040 built by team who built Tito and Tito is
00:10:53.200 the platform we all use to buy tickets to Tech conferences t.to
00:10:59.639 right so Tito is built with rails VTO is also built with rails and V is an online
00:11:06.639 and community and events platform of course during the pandemic offline events died out
00:11:13.279 and that's that's why um this platform made a lot of sense um and U any cable
00:11:21.279 is so they essentially asked us to help them migrate to any cable because they
00:11:26.480 had this kind of huge concur huge number of uh thousands and thousands of users During
00:11:31.800 certain events uh they are updating uh content in real time and they have chat
00:11:38.800 uh so this is all happening through web sockets uh just just remembered some of
00:11:45.120 the other Consulting projects that reached out because of Any keable this was tag blits our one of our beloved
00:11:53.279 Consulting customers online Ed so we basically we're learning a lot
00:12:00.720 from our Consulting customers we were learning about different cases for websockets including GPS
00:12:08.720 coordinates of course virtual events ad teag collaboration collaboration and Def
00:12:14.959 tools and as the result we launched uh any cable
00:12:20.240 1.0 the other learning we had from those days that we didn't expect
00:12:27.040 was this I tried to explain this with the analogy
00:12:33.040 um anybody remembers Diop ah you again dated yourself no
00:12:41.440 no me too though um so if you remember
00:12:47.519 when you call your phone when there was a stationary phone and normally people
00:12:53.440 use it to make short calls you call you get your information you hang up but
00:12:59.199 when you're using that phone line for inter to get into the internet this
00:13:04.760 stays connected for ours right so um in my
00:13:13.920 case this is my sister roughly that same
00:13:19.440 time um our grand we were addicted to internet and our Grandmom couldn't get
00:13:28.000 through to just kind of call our home because the line was always occupied by this
00:13:35.440 dialab connection and this is what I'm trying what I'm trying to say this is what we saw um among our customers scale
00:13:42.800 in websockets the problem was if HTTP requests and websockets are
00:13:48.360 serviced and scaled uh like similarly from basically
00:13:55.240 serviced from one server then websockets always win and they always mean all the
00:14:00.560 resources and that's why we realized that actually scaling any cable um
00:14:06.800 independently and making as little um as little as possible to go
00:14:14.120 through rails is is making a lot of sense finally because we had big use
00:14:20.959 cases we realized that a lot of ecosystem is missing uh we wrote this uh
00:14:26.800 KX plug-in for uh load testing of web suckets which is kind of obvious of
00:14:34.000 course you want to test web load test the setup but it was not exist it didn't
00:14:39.880 exist before uh we built a webset director for scenario based t uh
00:14:46.959 testing uh also we learned what people wanted uh they wanted graph kill subscription
00:14:52.839 support if you're I'm not sure how many people today build with graphql I think
00:14:58.800 it's very very WID spread among bigger companies uh but maybe lost popularity
00:15:04.800 among the smaller companies in recent years um but graph subscriptions is actually one of the kind of only only uh
00:15:13.639 clear at least solutions that promise you uh real time updates in a very kind
00:15:20.720 of clear way uh also people wanted long polling I'll mention this later and um voice
00:15:27.720 applications I'll also mention this a bit later so we thought let's build let's build for for
00:15:35.759 those people and here I want to um take a step
00:15:41.480 back and kind of talk to you for second about like the reasons to build
00:15:50.279 something and I think there are only a few good reasons to build something and
00:15:56.040 a bunch of the bad reasons uh so one good reason is when you build
00:16:04.759 something you learn a lot not just about the thing you build but about people of
00:16:11.440 course about the technology but also about people and about the time we live in and we've going to talk about it the
00:16:19.279 other good reason is to connect with people with businesses with companies bring value and earn money as a result
00:16:27.800 of that this is another good reason um and finally yeah you kind of maybe want to
00:16:35.800 change the world uh but realistically I'm going to
00:16:42.839 say it's not that you can change the world like turn it around right yourself
00:16:50.279 but you can notice a change that is already happening and you can help make that
00:16:57.160 change happen and I think this is very real this is what everybody can do and
00:17:03.720 should do and there's a bunch of bad
00:17:10.360 reasons which come to mind all the time if you think about them but what's
00:17:16.400 important is of course we see examples of people
00:17:21.640 being successful using one of those reasons but this is actually very
00:17:27.600 risky so so if you don't have a very honest desire to to learn and to connect
00:17:37.720 with people that you build for then all those other reasons are
00:17:44.400 probably very shortlived and they will not help you succeed because if you
00:17:49.559 cannot succeed quickly which is very possible you will not be able to stay in the game so when you're thinking of
00:17:58.120 building something I think you should be thinking I want to stay in the game longer than anybody else if if
00:18:07.200 needed uh and that's why I think you should uh do things you really want um
00:18:14.480 and you might think okay evil Marti you inside a company how do you build a product uh we have this uh scheme uh
00:18:22.559 I'll I'll just mention it here um that I came up with
00:18:28.960 uh that uh where we can build a product inside of Mars um and uh there is a way
00:18:35.280 to then uh in uh kind of incorporate spin-off this company while
00:18:42.400 uh the authors Remain the majority owners so this already happened with
00:18:48.520 image proxy um image proxy is now a standalone company built originally inside R
00:18:54.480 merchants and with another startup that was acquired by um
00:19:00.000 Playbook so 2021 we're launching any cable Pro and it had a few uh important
00:19:08.039 features you can see these are all features targeting big cases uh larger
00:19:15.000 companies or just larger cases uh and it includes apoll graph
00:19:23.360 integration uh but I want to say the way we built it was in incredibly simple why
00:19:31.600 because it's just two people one of them is engineer both are working full-time
00:19:37.960 at evil Mars so we didn't have too much resources but I also think it's the
00:19:43.880 right way to kind of not overbuild so we just used GitHub container registry to
00:19:50.679 distribute the pro uh we used flat price we had a very simple license we used
00:19:57.120 type form for for signups for three years and it worked pretty
00:20:04.200 well uh all everything else was manual no licensing
00:20:09.480 servers nothing very very simple one one question was uh how do we
00:20:16.240 know which features are open source and which are pro we've talked a little bit
00:20:22.000 about that but I want to show you this nice pictures
00:20:30.360 um so the one on the left is um what do you think it
00:20:38.880 is okay it's um we call it communal Garden communal Garden is a place where
00:20:46.240 everybody can come and take care of a piece of that
00:20:51.760 garden and I feel open S work in open sources is kind of close to that we
00:20:59.520 communal Gardens and public spaces are super important imagine if everything is private there's nowhere to go you need
00:21:07.440 this Garden this park a space to kind of freely
00:21:12.720 collaborate and we need this but when there's a big
00:21:18.360 company that is wanting to use something you've grown in this communal Garden
00:21:23.919 this company can they have a professional farm and this is how we
00:21:29.000 think about uh our pro version our pro version is similar but different and
00:21:36.840 different because it's made specifically for large organizations and it's not
00:21:43.640 just it's not just the performance wise um you know it's not just about load
00:21:51.080 it's also about uh for example loan polling loan polling feature is needed
00:21:57.120 for Networks behind corporate firewalls where websockets are not
00:22:02.559 available that's why it goes into Pro because people using Al polling are
00:22:10.400 going to be people using corporate networks probably corporate users of another corporate software so uh that's
00:22:18.440 that's kind of idea and also if when you have something related to
00:22:23.520 complicated roles permissions uh audits this all goes into
00:22:31.360 Pro all right this was our first customer uh I'm going to say uh colell
00:22:38.279 EU uh is a French company uh that is doing a shared inbox uh for it's they
00:22:46.760 doing support through different types of inboxes so for them latency is super
00:22:53.360 super crucial cuz they need real kind of chat like experience uh really really
00:22:58.880 fast uh latency otherwise customers would feel that that support is a little
00:23:06.039 bit uh sluggish um but what I wanted to say
00:23:13.400 is uh I think it's worth it if you have never launched a product and you've
00:23:19.640 never had a first customer you got to experience this Cu uh it's a very
00:23:24.760 special relationship with your first customers who trust you
00:23:30.799 although there's nothing kind of behind you you've just started and um last year when rails
00:23:39.000 world wars uh was a this really hard to get to I got one extra ticket I gave it
00:23:47.679 to the CTO of cell uh because this is this is how I
00:23:53.760 felt about this company this how I still feel about this company um also
00:23:59.960 you know what turns out paying customers are much more engaged and involved they
00:24:06.159 give you much more feedback and they give you a ton of support and on our Pro
00:24:12.480 Channel people support each other you could say almost better than
00:24:17.919 on open source uh in open source why well maybe because they all a
00:24:24.520 bit more invested in the technology cuz they just paying with money they also pay made this choice and
00:24:34.279 um it's important for their business so today I I want to say U just
00:24:41.360 a quick look into what in cable is today uh inable today is a critical
00:24:47.000 infrastructure power in some of the uh large and amazing rails
00:24:52.720 companies theim is part of rails Foundation uh running on any cable uh
00:24:59.679 clickfunnels another Big Marketing uh rails company uh and a bunch of
00:25:05.480 companies that I kind of cannot mention their names yet uh but these are really
00:25:11.159 cool cases in different Industries legal uh we also have more Health Tech uh than
00:25:19.000 you can imagine uh and uh Transportation uh
00:25:24.760 cases but we jumped a little bit ahead the story is actually ah not so
00:25:32.440 smooth so 2021 we launched the pro uh we
00:25:37.600 immediately launched the client cuz we want support for
00:25:43.360 typescript any haters no okay um um we
00:25:50.240 uh it turns out people want to run any cable and ionic and react native and all
00:25:56.919 sorts of alter GS run times so that's what's the other reason then hot wire
00:26:03.480 comes out and hot wire is pushing updates through web circuits inspired inspired
00:26:10.880 by stimulus reflex and um uh finix live view um and Hotwire works works with any
00:26:20.559 cable just as is as any other action cable functionality but we wanted something
00:26:27.200 extra so what we did is we built a special
00:26:33.080 Standalone mode for Hotwire so if you think about this in the case of Hotwire
00:26:39.120 the only thing you need from rails is um kind of Al and we we just
00:26:46.600 used uh token based Al and uh any cable
00:26:52.039 is managing everything any cable Gore is not going through RPC to rails to make
00:27:00.559 any commands so if you're just using hot wire you can use this we call it
00:27:06.960 Standalone mode just any cable go but at this point we also use radius but later
00:27:13.440 we get rid of it these are the results of the first six
00:27:19.200 months um and we have six pain customers uh not too many we have 300K
00:27:27.480 Consulting Revenue also kind of I don't know so to be honest what we had to do
00:27:35.039 after 2021 we had to scale down on any cable a little bit because it wasn't
00:27:41.480 kind of skyrocketing 2022 we decided okay let's
00:27:47.519 do more marketing we're not focusing but we're going to do screencasts we're
00:27:53.200 going to launch newsletter by the way sign up sign up for the newsletter uh
00:28:00.240 it's a great newsletter um and what else happened at the rails
00:28:08.039 go 22 uh W made a presentation about the
00:28:13.360 tricky parts of real time so it's just a his slide um so he's showing how when
00:28:22.720 you lose connection for a second and and then you restore this
00:28:31.360 connection uh action cable will not deliver the missed comment so you just
00:28:37.240 missed the comment and it's until you refresh the page you will not see
00:28:44.240 it so what we realized hey actually web circuits are
00:28:49.440 not providing delivery guarantees and we can fix that so these
00:28:56.559 are the results of 22 um kind of doubled the customers but
00:29:03.519 still very few but we hit 1 million consultant
00:29:09.240 Revenue which was kind of pretty big for evil
00:29:16.200 Merchants but so this is Consulting revenue from customers who only reached out to help
00:29:22.240 us to have us help them migrate to any
00:29:27.320 cable or build some Solutions around it but but it wasn't working the kind of
00:29:35.320 pure newsletters screencasts in our case weren't working so in
00:29:40.919 2023 we are changing the Paradigm okay I cannot breathe in into
00:29:49.480 this um we decided first of all we're going to so we did a bunch of things a
00:29:55.240 bunch of features and the first one one is delivery guarantees so with any cable
00:30:02.200 you can get exactly once delivery in web sockets when you're using any cable
00:30:08.240 client and any cable server so on both ends of course uh we
00:30:14.000 also it's a little bit more tricky to understand but when you deploy your app
00:30:19.640 and you have people connected through websockets I don't know how to explain
00:30:24.960 but you don't want to break those sessions it's really important because usually uh in real in real life what
00:30:32.120 happens is you have this sudden influx of people suddenly they use web circuits
00:30:38.080 your infrastructure is not scaling enough and then you have to redeploy because you you kind of used all
00:30:45.919 memory and but then you redeploy and then everybody has to
00:30:52.720 reconnect and it kills your rails server and it's just a
00:30:58.440 not where you want to be so we build resumable sessions any cable
00:31:03.519 automatically resumes all sessions and keeps them alive on
00:31:10.399 redeploys and this is in Pro um so for now we recommend any cable
00:31:18.200 from day one so it's not just a performance replacement of action cable
00:31:24.279 it's a reliable reliable replacement so so if you want to make sure that none of
00:31:30.440 those messages are missed uh you may want to use it we also switched from redis we got uh from redis
00:31:39.679 to this technology nuts uh if you haven't seen it uh I I advise you to
00:31:45.799 take a look at this amazing con connectivity technology for
00:31:51.960 clusters and we originally had to do this for our deploys on flight
00:31:59.000 because they have multi- multi- region deployments Etc but now we don't have a
00:32:05.399 dependency on radi anymore which is cool this this was new this was
00:32:12.720 unexpected somebody just asked us if we could support the protocol for electric
00:32:18.840 vehicles charging stations like what is it but it's you
00:32:25.880 know the we supported it and now we have the largest EV charging provider in
00:32:31.639 Malaysia using any cable Pro and we have the largest UK provider of EV stations
00:32:39.919 test in any cable for currently still in uh validation stage so there's something
00:32:45.720 going on there TW media streams um this is a funny thing
00:32:55.240 we I I'll explain quickly twer has a web
00:33:00.559 socket API so people people can call your number and this call becomes a
00:33:07.159 voice stream uh a websocket API and you can
00:33:12.279 then usually people want to do speech to text understand what the person is
00:33:18.679 saying and then trigger some scenarios on Rails so any cable is doing this is
00:33:26.600 kind of proxying all the processing steps when you use
00:33:33.039 any cable goore as a library and build a go application with those additional
00:33:39.399 process and steps so we open- sourced this scaffold for for this case and we
00:33:46.200 wrote a very funny article about Hanami which I thought nobody's going to pay
00:33:52.679 attention to but after this we got so many Consulting clients
00:33:58.240 building uh this for rails applications and and using any
00:34:04.799 cable finally llms this is 2023 um there's llm response streaming
00:34:14.040 and lm's kind of popularized service and events uh transport
00:34:20.839 for kind of llm response streaming so we built any cable over SSE
00:34:29.040 and that's probably the easiest way to use any cable today very very simple these are the
00:34:37.839 results again on the good side 1 million consultant Revenue uh on the other side
00:34:44.800 we again doubled uh paying customers of the pro but not more than
00:35:00.040 decided first of all we are ready to go beyond rails uh and second of all we're ready
00:35:07.359 for managed service so we built SDK for serverless
00:35:12.680 JavaScript and we got a verel
00:35:20.240 template we simplified this setup to only have one component so if you
00:35:27.359 remember we had any cable as three different components radius RPC and websocket server now you can use all you
00:35:35.720 use any cable as just the websocket server and for the largest use cases you
00:35:42.280 lose some of the performance uh but it's a good balance
00:35:48.800 between complexity and and what you get kind of so this is a simple simple
00:35:56.359 deploy simple to use them by any framework we also introduced
00:36:04.160 Whispers And whispers are something you can use to build this
00:36:10.240 cursors um this is our allans
00:36:15.720 meeting I don't know why people are so crazy but um it's whispers are messages
00:36:23.680 that sent between clients without touching the back end so so usually it's uh some sort of client state that you
00:36:30.720 want to sync or um send clients to
00:36:36.760 client but people kept asking when is managing cable finally
00:36:44.079 coming and we we've been holding it off of course for a bunch of
00:36:50.599 years why um it felt like too much for
00:36:58.880 for the amount of resources we had but finally this year we thought
00:37:06.040 okay we're doing it what's the most efficient way the most efficient way to
00:37:12.359 build a managed service what do you
00:37:40.079 pragmatic here if there was something we could use that was more simple and would
00:37:46.680 get us there faster we'd use it we are super pragmatic and we used this stack site
00:37:56.560 Flex AO uh v v action policy and uh we use
00:38:05.960 fly.io uh their API to run to launch new Services by the way you can check the
00:38:13.319 gem file of of this uh product it's PR cool so we have an alpha of managed
00:38:22.720 service it's early we don't charge for that but but we can test the test the
00:38:31.560 market we get responses we get feedback some of that feedback is by the way kind
00:38:38.599 of a bit rough saying why is it not ready for
00:38:44.200 production so maybe it means something of course we see how people register if
00:38:50.280 they try out uh they managed any cables we also added something which
00:38:57.440 which is important I want to mention it we added Telemetry to open source there is an opt out so any user
00:39:06.640 can opt out of that uh Telemetry is is can I say it stigmatized
00:39:14.880 in open source but it's very
00:39:20.280 important um if you think so at least now we have the relevant metric that we
00:39:26.920 want to look at we specifically want to look at the number of uh unique
00:39:31.960 servers that are big that have like thousand concurrent connections after
00:39:37.839 deploy and we want to compare open source and pro and we want to bring the
00:39:44.040 share we want to be bring all both both both of them up and to the right um but
00:39:50.680 also the share of um Pro in this
00:39:56.040 setting and the at least now we see that the share of pro is actually pretty
00:40:01.319 healthy uh so it's not like 1% it's actually pretty good but I also
00:40:08.640 think if you compare open source and SAS SAS has all the
00:40:15.920 data that you can think of and is maybe abusing it open source has no data
00:40:23.319 whatsoever it's very little like stars are meaningless downloads on dockerhub
00:40:28.359 you have no idea is it like five big companies or what um
00:40:35.640 you know deploying every 3 seconds for some reason um
00:40:43.000 and I just want to say uh I think Telemetry and more uh
00:40:49.839 data sharing in open source is important but this is maybe a separate
00:40:55.160 topic maybe it's a topic for discussion that we have after this uh about sustainable open
00:41:02.119 source so these are the results of so far of this year uh we have a little
00:41:08.800 uptick in uh Revenue we also see so the blue sorry
00:41:16.319 guys the blue line is new trials we finally see new trials
00:41:21.800 increasing so this hopefully means that this is
00:41:27.560 starting to work so we went from action cable and
00:41:33.119 steroids in 2016 to realtime server with delivery
00:41:40.280 guarantees in 2024 and a bunch of new cases uh these are kind of cases on the
00:41:51.359 timeline again the big customers that we've already mentioned and so this all gives gives us
00:41:57.520 the confidence to move forward I think what we have is we know
00:42:04.079 we solve a real problem we know we can solve it for big
00:42:10.720 cases and what's interesting the new cases the new Industries the new
00:42:15.800 applications keep coming up like ocpp uh and and uh streaming in
00:42:24.400 llms uh we solved the hard backend
00:42:37.200 is missing from any cable today is the higher level abstractions and kind of UI
00:42:43.359 Centric real time and we have competition uh like life blocks Etc that
00:42:50.040 solved that that is kind of solving the problem from that side from the UI
00:42:56.119 but our customers sometimes say that look we tried those
00:43:01.359 Solutions we know that it's going to be easier for us to use any keable because of how it integrates into the framework
00:43:08.599 on the back end but we'd really love to have a UI kit we'd really love to have
00:43:15.040 uh kind of just kind of presence as an abstraction uh cursors as a going of
00:43:22.839 react hooks or something like that or maybe hot wire
00:43:28.480 something um we still need to simplify a lot and this is what I'm seeing in in in
00:43:37.480 many products and ours is not an
00:43:42.800 exclusion you can simplify it so much and you can simplify the usage a lot so
00:43:50.280 we need more guides we need zero configuration stalls and yes another step is just managed anying cable for
00:43:56.800 produ C LMS is an interesting
00:44:02.079 Trend um I mean not just LMS but but in general we
00:44:09.079 now it's kind of sad but everyone everybody has somebody
00:44:15.680 to talk to which is a robot um but you still
00:44:21.000 wanted collaborate with this robot and today this is chats or or gitf flow
00:44:29.119 right you already have some kind of um GitHub actions uh robots or something
00:44:36.800 like that but tomorrow uh it's going to be and of course voice voice applications maybe tomorrow it's going
00:44:43.040 to be other forms of collaboration uh maybe collaborating in the UI uh but all of
00:44:51.319 that is kind of amplifying the need for realtime Tech so it's kind of you could
00:44:56.359 say a little Bitter Sweet during pandemic we wanted to communicate with humans in real in
00:45:04.319 online in real time today we want to communicate with
00:45:11.240 robots but that's better than being lonely I
00:45:17.359 guess um yeah and this means there's going to be wider adoption wider
00:45:22.800 adoption means the need for simpler simpler Simple Solutions kind of plug- andplay
00:45:28.839 solutions and finally of course transport is going to be changing there's there's web transport coming up
00:45:35.480 there's um whatever's the new thing the idea of any cable is of course you don't
00:45:42.079 have to worry about it because any cable will integrate with it you just can
00:45:47.720 stick to any cable
00:45:54.040 um this was hard I kind of wanted think about my my own uh path
00:46:00.760 here um and this is this is really difficult to reflect on uh but if
00:46:08.640 you very few of you knew me before
00:46:14.720 that maybe just one person um and I was just a non-technical
00:46:24.960 manager I'm not I'm I'm a CEO I'm not writing code you
00:46:30.800 know and in the few years this big change
00:46:37.200 happened turning me into a co-founder of a developer product which means
00:46:43.559 contributing to product strategy this is the main um the main kind of
00:46:50.640 difference this means we are deciding what's next for any cable together
00:46:58.079 and it brought me closer and it brought me into the Ruby
00:47:03.599 Community because first I started with our customers that were all rails
00:47:09.160 companies and then into promoting things and connecting with people and this is
00:47:16.599 this is where I am today on here with you
00:47:22.319 um yeah that's that's probably the best part now
00:47:28.640 um I was thinking why it happened and what
00:47:34.400 helped and I realized Sometimes the best way you can influence
00:47:41.559 somebody is by trusting them a
00:47:46.760 lot and this is what I was super fortunate to get I got unwavering
00:47:54.880 Trust of LA evil
00:48:01.440 martians and Ruby Community thank you
00:48:13.599 guys okay almost unwavering that was except
00:48:18.760 this one case when he reverted my commits thank you
Explore all talks recorded at EuRuKo 2024
+39