Tech Over Tea - Developers Of Vtubers.TV | Choco & Lmay

Episode Date: April 25, 2025

In a few months a new platform called Vtubers.tv will be released and today we have the core developers on the show to chat about the project, why it exists and what they plan to do with it.==========...Support The Channel==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson==========Guest Links==========Website: https://www.vtubers.tv/Github: https://github.com/vtuberstvPatreon: https://www.patreon.com/vtuberstv==========Support The Show==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson=========Video Platforms==========🎥 YouTube: https://www.youtube.com/channel/UCBq5p-xOla8xhnrbhu8AIAg=========Audio Release=========🎵 RSS: https://anchor.fm/s/149fd51c/podcast/rss🎵 Apple Podcast:https://podcasts.apple.com/us/podcast/tech-over-tea/id1501727953🎵 Spotify: https://open.spotify.com/show/3IfFpfzlLo7OPsEnl4gbdM🎵 Google Podcast: https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xNDlmZDUxYy9wb2RjYXN0L3Jzcw==🎵 Anchor: https://anchor.fm/tech-over-tea==========Social Media==========🎤 Discord:https://discord.gg/PkMRVn9🐦 Twitter: https://twitter.com/TechOverTeaShow📷 Instagram: https://www.instagram.com/techovertea/🌐 Mastodon:https://mastodon.social/web/accounts/1093345==========Credits==========🎨 Channel Art:All my art has was created by Supercozmanhttps://twitter.com/Supercozmanhttps://www.instagram.com/supercozman_draws/DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.

Transcript
Discussion (0)
Starting point is 00:00:00 Good morning. Good day and good evening. I'm as always your host Brody Robertson and today We're talking about a platform that hasn't been released yet, but I think it's kind of interesting It's not the very first attempt at doing this Today we're talking about a platform that's gonna be coming up sometime soon Called Vtubers.tv and we have some of the developers of the project on. So how about you introduce yourself so you don't talk over each other. Choco, you go first. Um, hi, I'm Coco or Choco. I'm the new developer. I read it as Choco. Is it supposed to be pronounced Coco?
Starting point is 00:00:46 It's both. It really doesn't matter. Okay, sure. It's both. I'm the lead developer. I've been working on this project for about a year and a half, almost two years. So yeah. Okay.
Starting point is 00:01:04 Yeah. I don't know how to say your name, other person we have here. So please tell me how to say it as you do your intro. So hi, I'm Leme and I work on the Vstream, which is the backend for the streaming jest and distribution. Okay. Well, I guess the very first place to start here is what is Vtubers.tv? Obviously, it's not a fully released project just yet, but when it is, what is the point of this platform? of this platform? More of a hub, kind of like Twitch or YouTube.
Starting point is 00:01:48 Definitely leaning towards more of the YouTube and Twitch route, but there are plans to do like music or like a blue sky type thing as well. Since smaller creators can't really get the audience what they need or want, I want this to be the place for them. Right. I always have to ask... Oh, sorry, go on, go on. No, no, it's fine. No, I was gonna sort of direct this into something related to that as well.
Starting point is 00:02:25 But if there's more you want to say there, say that first. No, it's fine. I already... It was just that. Okay. My mind today is... Well, the first thing that always comes up, whenever we talk about any sort of new platform, whether it's some sort of micro blogging platform akin to like a blue sky or a twitter whether it's a streaming platform or a video platform like why does there need to be another platform like you said obviously the building up like communities and stuff but
Starting point is 00:03:02 what is it the other platforms besides that and maybe not doing or what is it you're actually like really trying to achieve here with the platform? Well, one is moderation. Revenue split, especially for Twitch, just even qualifying for that, the requirements are ridiculously high. Yeah, and our splits 50-50 by default. With moderation, there's been, I know there's been several creators who got banned from like Switch or YouTube for like, let's say like their clothing policy, right? Right.
Starting point is 00:03:46 When they don't break it. So or even just playing some games like they just the games are like ones that everyone plays and this just gets flagged by mistake. Well, I have seen many occasions where I think anyone who pays any attention to the Vtubing space has seen cases where the Rules don't seem to be consistently applied. You'll see you know the hot tub. Sorry? Rules for thee not for me. Right, right, exactly. Yeah, you'll go to like the the hot tub category And you'll see far less clothing you'll see on even just like
Starting point is 00:04:27 Any sort of regular kind of skimpy outfit for a VTuber, but that is going to be treated in a far more aggressive way Then you would see any was like, you know We can look at we can look at common examples like, you know People who've had sex on Twitch and then get like a seven day ban, right? Like crazy things like that. Whereas a vtuber that shows a little bit too much skin month Have have some time off
Starting point is 00:04:59 Favouritism yeah. Well, yeah There's a lot of ways you can look at it, but it's a mess. The other thing is the adult sphere of Vtubers. There's several that I know who can't live stream on Twitch, because either they'll get banned immediately, or people will false support them. Right. And we don't, me personally, I don't want to see that happen. I've been in the VTuber space for like five, almost four or five years now. So I've seen a lot. So that's definitely one thing as well.
Starting point is 00:05:42 And I've seen, it's not even just with the streaming content as well. I see the way that emotes are handled. You have these very tame emotes and they get marked as sexual content. Like, oh, you're like licking the screen, sexual content. Oh, you're like, just like really, really tame and mundane things where I don't even know what criteria they're using in some cases to mark these as things that shouldn't be allowed on the platform.
Starting point is 00:06:11 Cause it's one thing if you do have a clear set of guidelines, you're like, okay, nipples, instant ban, sure. Like that's a thing you can follow. But when you seem to be following the rules and even then you're treated as if you're breaking them. Again, as you say, it's this favoritism, rules for these, not for thee. Or rules for me, not for thee, yeah.
Starting point is 00:06:35 And definitely with like the emotes, there have been several times where people have just gotten unbanned for like no reason without a clear explanation which falls off on the platform because they should be providing that reason to the creators when they're not. That's what we try to aim to fix is the moderation response, the explanation between them and how it's all handled in between. So, for moderation, it's going to a different topic, but it's handled as in like a...
Starting point is 00:07:21 If your account gets flagged, it won't be banned like YouTube or Twitch. A moderator will go look at it. So you have like a... Yeah, pending manual review. Yeah. And that's a... It's a machine learning thing that I'm currently working on for that. So that could be...
Starting point is 00:07:44 I don't know how to word it. Okay. So that could be... I don't know how to word it. I know some people will guess that it's using that. Basically, the models trains are not for automatically banning. They are just to set a flag. Right, right, right. So it sets a flag and then it puts into some sort of like review stack and then it can be manually checked over by a person. Yeah.
Starting point is 00:08:11 Right. One of the things I did see in the write-up is the idea of more transparent and public moderation logs so it's clear what's actually being done and I'm assuming that's part of what you're talking about there. Mm-hmm. So when it comes to transparency, like we have a gateway kind of like Discord when it comes to bots so there's events like live the user ban so third parties could like just view that. But as well as we do a transparency report every month
Starting point is 00:08:49 and it has what people have done, like the top ban reasons, how long they've been banned for, things like that. For transparency, it goes between mod and just how we operate in general. it goes with a mod and just how we operate in general. Mm-hmm. Like, for decision-making, it's a voting system. So like if user A wanted this thing, but B doesn't, you'd vote for it.
Starting point is 00:09:18 And whoever has the higher votes wins. Right. So with this idea of having like human moderation in that chain, obviously this works when the platform's really small scale. Do you expect that to ever become a problem? Because this is obviously a platform like YouTube that's, you know, there's no way that can be done with human moderation. It's just insanely big. This is obviously a lot more small scale. on like YouTube that's you know there's no way that can be double human moderation is just insanely big this is obviously a lot more small scale do you expect to see any sort of issue with that approach? Yes um probably the primary approach would be community moderation using the vote system right which could scale a lot more better.
Starting point is 00:10:03 the vote system, which could scale a lot more better. And then probably because we plan on keeping the funds like for everything after like server costs and everything. So in the future we could possibly employ people. Right. But that'll be a year or two later. Fair enough. Well, you sort of have to get things off the ground first.
Starting point is 00:10:29 And then I think there's a lot of projects out there that worry about hyper scalability when they don't have any users. You'll see this a lot on tech blogs. They're like, oh, how do I scale up to a million users and they haven't even released their first alpha version yet, right? Like Obviously, this is something you want to think about and if the platform does grow you want to have some sort of plan in place but Going all in with the scalability from day one
Starting point is 00:10:58 You end up trying to build something far outside of what you need without any Idea how much it's going to grow. Well, with the Vstream stuff, I'm not sure about, um, Selena, what they're, what they're doing with their software. But with specific parts, I've been tracking down, excuse me, my cat. Um, I've been tracking stuff down like how long certain functions take and stuff like that. And I've been load testing it explicitly up to I think 100,000 requests at a time. So I can get an idea of how it would perform if it got a sudden influx. So it's just to prepare for that if it happens.
Starting point is 00:11:56 Well, I think for my software, it's all, it's, we, I always win this. It uses Redis to cache and it's not really aggressive, but it's aggressive enough to the point where profiles can take up to like three or four minutes to update. We use a database that costs you, I think, per 1,000 requests or something like that. So that's the reason why. I also have the Regis aggressively caching Regis as well, because with the current database, it's taking up to two seconds for it to reply. So that's a bit ridiculous. But that's basically the cloud problem because everything's got to be in the cloud. because everything's gotta be in the cloud.
Starting point is 00:12:50 So whenever I think about any sort of... Because, okay, one thing that I don't think we touched on, I maybe briefly mentioned it, this platform is going to be open source. But whenever I think about a platform that is open source that's trying to do any sort of video related stuff, I always think, well, why build something new when you have things like PeerTube that are already available? Like what, what reason is there to do this yourself? One is the learning experience.
Starting point is 00:13:24 One is a learning experience. And two, we have control, right? So like for our uploading, we can deploy how many servers. I mean, it just depends because they're all written in Go. So you could deploy them and set it up in the database and then just do a closest server. So you could deploy them and set it up in the database, and then just do a closest server. But software that you would have to clone or pull down don't have full control.
Starting point is 00:13:54 So that's another reason. And along with the stream relays, I'm going pretty aggressive with anti-scraper and anti-fake users pretty much. And the existing code already does that by only storing the last, the only storing four video segments at a time into memory for that stream. And every segment has a randomly generated name, the crypto random. So that means that if you block someone from the M3U8 file, which is the name, the crypto random. So that means that if you block someone from the M3U8 file, which is the metadata, the playlist file, they can't do anything. They can't scrape
Starting point is 00:14:32 the stream whatsoever. So there's also that. They're in the open source aspect. It's kind of, and I'd say it's like 99% open source. The streaming software isn't as of now, since it's in a not really good state. Sure, sure. And he can explain that further, but that's not gonna be able to source until later down, later down the line. You need it on the line. Right, right, right.
Starting point is 00:15:06 It works. Most of the code, about two days ago, I think, most of the code is on that repo, which is a public repo. And if you went to that review, you can see the first thing it says, this is reference code and it's not guaranteed to be the exact code running on VTubers TV. So just keep that in mind as well, and I'm always constantly testing and stuff when I can Okay, yeah, so there's a bit of a there's been more of a late that I would normally expect um, ah Yeah, that works my yeah, that's it. Definitely is
Starting point is 00:15:43 So if if for anyone listening if the conversation just randomly stops, that's why I Normally discords pretty annoying to like handle conversations with I it's being exceptionally bad today. I Am doing recording if you do need it. I don't know if my mic channel split up. Now the recording's fine, it's just the flow of the conversation is, you know, it's gonna be slightly problematic. So we've talked-
Starting point is 00:16:21 Don't expect it. You've mentioned a couple of times about Vstream. I think that's an important thing we need to touch on here. Because obviously the Vtubers TV wouldn't be possible without that part as well. Yeah. And people... We see... Sorry, one other thing. If the name Vstream sounds familiar to anyone, get into that as well if you want to. Well it was just a random name I came up with.
Starting point is 00:16:52 I know there are existing projects with that name already, so just to avoid confusion, this is not related to the other repos you'll find. So does it mean something different? Because it literally means the VtubersTV stream. Right, right, okay. Yeah, just to make that clear as well. Okay, cool. Because I wasn't fully sure when I was looking up stuff
Starting point is 00:17:18 when I saw your name listed on the site. So, okay, cool. So, I guess guess get into how, how do you even approach handling video and streaming, like what, what do you even, like, where do you even begin to look at this problem? Well, where I began originally was I took it from Selena because they were originally trying to write the ingest server in TypeScript and JavaScript using the existing modules there. And the biggest problem we're having is that all these ingest servers, basically they put
Starting point is 00:17:56 the stream key as the URL you request to when you're doing HLS. So HLS is just the video segments pretty much. And from a security perspective that's pretty bad because that allows someone to either scrape those keys or just grab them entirely. So originally I found a NGet package on C sharp. Using that, I was able to modify some stuff, and then I got unhappy with the compiled solution. So I downloaded the source code, and now that source code is directly in there.
Starting point is 00:18:37 There's quite a bit of stuff I've modified about it to fit the application use. One of the bigger things it does is instead of taking the stream key as the requesting URL, it replaces it with the user ID. So it basically injects it. I couldn't tell you exactly where it injects it because following up that source code is a big pain,
Starting point is 00:18:59 but yeah, that's the first problem tackled. Yeah, that's the first problem tackled. The second problem would have been stream distribution. So I started writing the relay. This is all before I started writing the API. So for the API stuff, I was just using my own domain, my own website. It was loosely coupled to VTubersTV, like the testing backends, and it was just something I could quickly do so I didn't have to worry about the API at the time.
Starting point is 00:19:34 And the Reallay, what its job is to, is to basically take, couple the abuse from all the viewers at once. And even if one falls over, the point of it is to fall over to another one so you get minimal stream disruption. I was also planning for those relays to connect to each other but with the costs of transfer limits and stuff like that with a lot of cloud services, it's not really viable to do it like that. So what I've decided to do, this was actually about yesterday,
Starting point is 00:20:12 this decision was made a whole text wall to Selena about this decision. And it was to put a CDN between the ingest and the relays. Because then the relays don't need a lot of ingest they sorry the the ingest server doesn't need a lot of bandwidth outwards but that's the biggest problem because a lot of these servers only have gigabit connections so yeah so we go to the CDN and then the relays request from there, so It's just about balancing it all out to be cost-effective pretty much
Starting point is 00:20:52 and As I already mentioned with the relays it's pretty aggressive with the anti scraping even the current version of it It's just done like that As I was just writing it, this was like pretty early on that I started doing this. And I believe Solita wants to rewrite all of this in TypeScript, not the ingest server. The ingest server is staying C sharp, but the rest of it will be written, rewritten in TypeScript just to match the rest of the project. Mm-hmm. Is that just because you're more familiar with TypeScript? Yeah.
Starting point is 00:21:32 I mainly do TypeScript and Go. He does mainly C sharp and I think C++ if I remember. No, C. Just not C plus plus. And I do have quite a bit of JavaScript knowledge as well, because a lot of my website itself is all client side JavaScript. So yeah. Um, for videos, um, there's an issue with bitrate and how fast it gets processed. So we kind of have
Starting point is 00:22:12 to do it both. So when you upload, you get sent straight to a page to view the status in terms of background jobs. So it's not taking up any chunk data or requests. You just upload it, it gets into a page to see the progress, and it does it in the background. That was an issue to do because Go's HTTP thing did not like that. I have no idea why, but it did it. For- It's got to set, I'll just note, with a lot of the software, you have to set the
Starting point is 00:22:59 body size limit because that's the biggest thing you'll come across. Biggest problem when you get into videos and stuff like that is you quickly hit the default limits. So you have to, the limits are there originally, so you can't just overload the server with like garbage requests that just have just a bunch of pointless data. Which is with Cloudflare, because we use them as our main like domain thing.
Starting point is 00:23:29 I can't say words right now because me being sick, oh, please, you guys messed me up. But their response thing is, I think, 500 megabytes or 250. So to bypass that, you have to... It's 500 megabytes or 250. So to bypass that, you have to chunk it. So it takes a while to upload. With a gigabit file, which was a test file, it took, I think it was three to four minutes. But you're not going to upload a gigabit file.
Starting point is 00:24:06 Or else I hope you don't. But then on the upload server, we do like magic numbers to check. If you were to put a magic number in, that matches like a video format. It's called virus total. I think that's what I put in. It takes an executable. So you do that. Um, so that's the video I'm streaming.
Starting point is 00:24:36 Now, when it comes to video and streaming, obviously the first thing that's immediately going to come up is, and you sort of did bring it up a little bit, to come up is, and he sort of did bring it up a little bit, pricing and cost and not going immediately bankrupt. Well, as I was looking into- For pricing, well, hold on, for video, because I was talking about this earlier. When it comes to uploading videos on the platform, you have free, you have pro, you have pro plus. Right. So you can, you know, buy, buy premium. And it's not like YouTube, it's relatively cheap. It's like $4 than $8. It's pretty much to cover the bandwidth cost, the usage cost.
Starting point is 00:25:26 In this entire thing, we basically don't get paid. Everything is just up on the service. I have a job, he's getting a job. It just up holds the service. So that's the pricing. For video, we have a, if you could buy, sort of like X amount per month currently, to be sure that you don't upload a terrifying worth of videos.
Starting point is 00:26:00 But when we get enough money, that will go away entirely. For streaming, we did Hetzner. This was early on, this was just, yeah, it was more decision-making. When I was reading, yesterday. When I was reading yesterday, when I was reading more into Linode, a lot of the problem with these services is if you wanted like a 10 gigabit connection,
Starting point is 00:26:35 it's obviously going to come with all of the server compute that you just don't need. That also means a bill of $10,000 a month. So, and I was like, no. So I started looking into kind of janky ways that work out. And with Linode, if they've listed it like this, I'm not entirely sure. I'm going to have to do more research, but they claim 40 gigabit ingest, sorry, inbound and then 1 gigabit outbound. And that works really well for the ingest servers because you can have the multiple concurrent streams.
Starting point is 00:27:16 And since the output just goes to a CDN, there's not much bandwidth relatively to that specific outbound, the outbound limit basically. Right. It's going to be a bit more tricky with the relays because you basically need the inverse of that where you need high outbounds, low inbounds, but I'm still working on that. But the reason why we didn't use existing solutions like that cloud front CDN streaming or cloudflare streaming or any of those is because they're basically ready to use packages. And the biggest problem with those is that I have
Starting point is 00:28:07 the problem of the stream key thing where it shows the stream key in the URL and along with you can't really track viewers properly. You always are going to need the middleware because you can't have it client side because that's just one way that's just makes it way easier to abuse that's why it has to be server side. So if you're wondering why the CDN using an existing CDN why it wouldn't just go directly to the person is that the viewers are tracked based on the actual video chunks they request, not the playlist file. So it's basically, as I said, it's to be aggressive, to be anti-scraper, to prevent fake views. Well, reduce them at least, you know, it's
Starting point is 00:29:01 always going to be possible. Oh, I thought you had more to say. Do you want to talk about the Hetzner thing? About it costing bees clean arm and a leg or? Well, we'll see. We'll say with Linode, the Inest servers aren't doing much video processing. So instead of processing random streams that come in, I've opted for just restricting the specific format and resolution that you can stream at. If you try and stream out of anything outside that predefined set, it will just immediately
Starting point is 00:29:44 reject it. Right. So, it's restricted at 1080p, 60fps. As you know, as soon as you go to 4k, the cost gets exponentially bigger. So, 1080p is just a trade-off basically. It'd love to do AV1 encoding. I think it's AV1 encoding, but a lot of computers still don't support it properly, so the video players won't be able to decode the chunks properly. Yeah, AV1, I believe it's the past two Nvidia generations, latest AMD. I don't know what Intel's... I know that dedicated GPUs do AV1, I don't know about when their CPUs started doing it. Or they're there.
Starting point is 00:30:33 If you're doing it service side, Twitch uses these, but the GPUs, they're not GPUs, they're accelerators, they're asyncs. And their whole job is to do AV1 encoding and that would be an ideal solution but it also comes at a price tag of $60,000 so because it's an async. So I do have AV1 listed there I will have to turn it off in the ingest. But by fixing the format, that means that the ingest servers don't have to do much video processing themselves.
Starting point is 00:31:11 So all they're virtually doing is taking the segments in and then serving them as HTTP and HLS. What that means is that you can deploy a bunch of, for example, if we're using Linode, you deploy a bunch of Linode VPS instances and with that 40-yen one out, one gigabit out, that means that relatively it's more cost effective than getting a single server and it scales better, obviously, because this whole, just for context, this whole entire thing is designed so you can have multiple
Starting point is 00:31:53 servers at once, multiple services all running at once. As long as it's in the database, like a list of them, it will just work with the other ones. But because of that it makes it more scalable so as we scale more because there will be more income that means you can put more servers in and more ingest servers more relays etc etc etc. So as I was saying there is one problem though I have yet to address and that's adaptive HLS. So obviously some people can't download a 1080p 60fps stream. So I'm going to have to do that processing somewhere.
Starting point is 00:32:37 I'd probably do it on the ingest, but you can still kind of get away with that on Linode by using their dedicated CPU servers instead of a GPU server. So it does mean more overhead yes but realistically for a single video chunk you'd only need to process about what is it? Three different resolutions realistically. So you'd have the 1080p, 720p, 480p and then 360p because no one's going to watch a 144p stream. So yeah, it's just, it's still early on pretty much to describe it. I do, I have a physical super micro server and that's what I've been doing most of my testing on. So I have a physical NIC in that, that goes to a virtual machine and that's basically acting as a Linode instance. So it's a perfect test and stuff like that and it's been working out fine so far
Starting point is 00:33:47 although i did have to replace my switch because during load testing because the virtual machine has its own nick the windows obviously can't directly communicate to it unless it goes through the switch right and i And I found that my switch, it uh, shed itself. Legitimately, it crapped itself doing the stress test. So I had to replace that out. And now, so it actually dropped out at about a hundred connections a second, which is pretty, pretty bad for a gigabit switch. So yeah, I replaced it. Now I can do up to 1000 concurrent connections at once to the API, not the ingest, but the API because that's more important before it starts to crap itself with. It's just because there's just some CPU intensive compute to do with verifying the connections
Starting point is 00:34:48 and stuff like that through keys. So like API keys. And I will note the API key format is separate to what Vtubers TV itself will use for the API keys and it's done on purpose because these services are not meant to be accessed by anything except the other vstream software. There's absolutely no reason why anything else should access the APIs. So yeah, testing has become a real pain. As you said though, a lot of people try and scale even though they don't have the hardware
Starting point is 00:35:24 yet. I'm more doing it just in case there is a sudden influx. Right, right. And it's just more to see how it behaves when there is an influx. Sure. More or less. Okay, fair enough. So you originally mentioned how the revenue split works, but just generally, can you explain
Starting point is 00:35:46 how platform funding is going to work? Because you have these different models, you have membership-based models, there are ad-based models. What is the plan here for how it's going to work, basically? So it's going to be a mix. We'll have ads like, like, like Google's ad platform. And it'll be like one in-page ad at most, maybe two. But that's just for like another, another revenue. So far, no injected ads.
Starting point is 00:36:19 That's been a big no-no. Right. So, you know, we're not going to put ads into streams or videos. That's annoying. Especially how impressive Twitch is with it now. Oh yeah. Well for videos you could probably have ads just not as common, like not as much as what YouTube's doing, but for streams, the only thing that gets injected is a brief loading screen. I might have a screenshot of it somewhere. And because it adds a slight delay to the stream, yes, but I've noticed that the stream delay between you go streaming from OBS and the viewer seeing the stream, like even over the internet, it's about 8 to 10 seconds, which is much better than Twitch and YouTube.
Starting point is 00:37:14 There is an intentional delay in the relays because what they do is they download the chunks in advance and then serve the second latest chunk. The reason why they do that is so they can detect an error early and then switch over to something else so the stream doesn't get interrupted. There is a brief moment where the first time the stream starts getting cached on the server, on the relay, it will show a loading video chunk basically, and that's the only thing that gets injected. is loading the Ucham basically. And that's the only thing that gets injected.
Starting point is 00:37:46 For, go back to the money making. Creators, it sounds really weird. We don't pay them what like, if we get donations or anything. Their whole thing is like, their streams, is someone buys a membership from them or if they just do things like that. Um, and we take 50% from them and for the main platform, uh, we take 40 and we get, just one by self
Starting point is 00:38:23 50 50 split. We take 40 and the 10 goes go it goes like charity just to kind of help people out so there's two charities there's um the veterans charity in America and then there's a homeless charity so by it sounds really bad, but by giving us money, you're also helping people. Which is not a lot, but the most that we can afford. Any split from streamer donations and stuff will directly go to the bandwidth costs for running that particular stream. That's the biggest thing.
Starting point is 00:39:03 That will go directly. What's the other one? I just had a couple online. I will note this background image is temporary because copyright. We just don't have enough image yet. There we go. Yeah, and then there is a... No one knows what that image is. It's a mystery. There we go. And then there is a... No one knows what that image is, it's a mystery.
Starting point is 00:39:28 And then there's a fallback image. I did get a public domain image for when the stream fails. So if the stream fails and it can't switch over in time, it will basically start... It will generate a chunk on the spot, a a segment and it will start injecting that segment instead as a placeholder because I've found that HLS video players they are very garbage if you've ever went on like Twitch for example you know how someone ends their stream and it will just sit there trying to load it uh-huh and it's yeah it's stuff like that and the reason as I said the reason why it's injected is just to stop the video player
Starting point is 00:40:06 from crapping itself. But it also gives the viewer information about that their stream is going to be interrupted for just a short period of time, and then should resume. If it doesn't resume, you just assume the person would reload the page, meaning it would connect to another relay instead, which then the stream would be continued on from there right yeah twitch is a for twitch one of those platforms where if Amazon really cared about it they could fix a lot of the problems. I don't know what they do with the platform though. And then YouTube, they just
Starting point is 00:40:52 don't know if they want to do streaming or not. They're obviously focused on video but they don't have garbage moderation tools for streams. I will note, the video player, it's not a twitch specific thing. It's not necessarily their code. A lot of code is based off, there was this element added to browsers. I can't remember off the top of my head what it was, but it's basically to reduce the usage of needing to use JavaScript to play these videos. And the problem is that underlying layer. It's pretty problematic
Starting point is 00:41:26 so it pretty much affects all live stream players pretty much that do HLS or FLV and obviously I'm not Confident in that type of code so we we're not going to modify the video players Like the underlying code the actual code for video players, so we're not going to modify the video players. Like the underlying code, the actual code for video players. So they're probably going to remain the same. They're probably going to have the same issues, but doing it server side can help to reduce some of the problems.
Starting point is 00:41:59 Yeah. The, the other thing that, that I just remembered, um, is how much money everything costs. So in total, what I've done, it's about $1,500 a year for everything. So that's why. This is with how much expected size right now. Yes. with how much expected size right now? Yes, it covers the video, the database, power and bandwidth for like for cell.
Starting point is 00:42:33 I will note, the Regis. Sorry, I was gonna say, I mean like, how big could the platform be with that being the cost for everything? How big could the platform be with that being the cost for everything? Maybe at least four or five thousand people adapt pricing with what I've got. And we can always expand it with caching. The streams are handling the whole stream backend is a whole different story because to even have the right servers
Starting point is 00:43:07 to start off with just to have about, I think I estimated around six or seven concurrent streamers at once, streaming to it, it gets distributed, is probably going to be a hundred dollars a month if you wanted to go all out with that. As I said though, it can scale but it just relies on that income and I expect that we will hit the bandwidth quotas a lot. So that's why the donations, that's why the split goes directly into paying for that because every stream directly would cost us. Right. But I will note since ingest on the node as they claim it to be unmeted, unlimited, so that means that if someone's streaming with no viewers, that means it's not even going into the CDN because nothing's requesting to it, So it's virtually no cost pretty much.
Starting point is 00:44:07 Hmm. I would always check the fine print on anything that says unlimited, unbounded, anything like that. Only on inbounds. Only, I will note, only on the inbounds. You're meted on the outbounds. Right. I, yeah, I'll still make sure that's certainly the case because,
Starting point is 00:44:40 you know, if there's suddenly a unexpected price hike that you didn't think, well maybe not price hike, but unexpected fee there, that could certainly be a problem. I fully expect companies like Linode to complain because I have read a few forum horror stories we'll call them. You know exactly what I mean where you read about a service and there's a bunch of complaints about it. And a lot of them is where this was earlier days of Linode where it was doing the whole Akamai thing where they're joining together pretty much and during that period of time I think that's when they had it unlimited but then some people were complaining that they kept getting warnings and like
Starting point is 00:45:20 messages from the server saying that they're using excessive bandwidth. I don't think they got charged for it, charged any money for it, but I do expect for Linode to complain. And it's just something we'll have to put up with. Speaking of Linode, they... It's a really funny story about them. I got in contact with them about doing a partnership and they agreed to it. So we got into a call and they have responded to any of my emails. It's been like four weeks.
Starting point is 00:45:58 They haven't responded to anything. I've emailed them four more times with the past week, nothing. So, Linode, if we have to use them, I won't be happy about it, but... We are pretty much going to have to because your other solutions, sure there's Hetzner and stuff like that, but because it's so geosensitive, Sure there's Hetzner and stuff like that but because it's so geosensitive it's going to have to be services like Linode. It doesn't mean it necessarily has to be Linode but Hetzner is kind of out of the question. For the ingest it may not be because you could just get one of their auctioned servers which would be probably better, but for the actual distribution after it comes from the CDM,
Starting point is 00:46:47 an external CDM like CloudFront, what do you want to call it? AWS. Yeah, that, as I said, and we have to be careful about Asia because regardless of what service you pick cloud service, the billing for Asia is a lot more expensive if you go over your quota. So we just got to keep in mind. And the biggest problem is that's where VTubers and stuff are most popular is like areas like Japan and China. So. Yeah, we've got to be really careful with that. I didn't know there was any weird difference in pricing there. Do you happen to know why? Not necessarily. I'm guessing it's just to do with probably just their data center,
Starting point is 00:47:44 like the data centers that they use. So obviously it's just going to be some local data center and these companies are just going to rent rack space. And I'm assuming it's just what they charge basically. Right. Or it. So at this stage, how far along is the platform? I know you have the roadmap on the website and when you're planning to launch, but in
Starting point is 00:48:12 its current state, where are you at? The main platform, 90%. I'm rewriting the front end to be a little bit more optimized. I'm just copy-pasting code essentially from the old version to the new version. For the streaming, you'd have to answer that. But personally, I think it'll be out in maybe the summertime or like July on that time. Big asterisks for the stream software because that might not be released at the same time.
Starting point is 00:48:48 So, and at the moment I have something working. You have the ingest from OBS coming in, goes to the relay. This is all automatic with the API as well. So, and I guess before anyone yells at me, I know you're not supposed to test on production, but I'm testing on production for the databases. So streaming to OBS, the ingest server will look up your key, which would then contact the database. There is no caching involved there because that chain of events only should happen once every few hours, assuming the person streams frequently. So the stream lookup, yeah. That will check if you're already streaming or not.
Starting point is 00:49:42 If the key is already streaming, it will instantly reject it. If it's not, then it will set its own URL to what server it's at. That means that the relay can just look up that address and then request to it. So, assuming the relay hasn't started caching the stream, it only caches stream based on if people are actually requesting for that stream. It's not It would just be stupid to cache every single stream happening at once on the single Relay, that's just right right right so The first thing it will do is it will look up so to make it easier
Starting point is 00:50:24 for Selena, the actual video, like the stream URL, is just slash and then the person's username. So, and that's mostly because of the video player, as I said, they're janky. So just to make that work properly, the first thing it will do is it will contact the API, which then if it doesn't have it in its cache, that particular user, it will then take it from the database prints cache. And then it will check if they're allowed to stream. So there is a Boolean that basically says can stream and then next it will look up in a separate table of the list of all the stream stuff. So the stream stuff is the user ID not username, their fixed ID, their stream key, video title, video description, you know just that static you know, just that static type data. Right, right, right. If that stream is active, it will then pull the URL from there,
Starting point is 00:51:30 cache it as I said, and then it will start requesting from the ingest. This is, I haven't done the CDN stuff yet. So, requests starts requesting from the relay and then serves it to the client. So all of that's working more properly. With just, there is a weird bug where if you are the first person to request the stream and it just started caching it, there is a weird bug with the video
Starting point is 00:51:56 player tries to start playing it advanced and it will start going behind and it will start playing the view segment, the last video segment over and over again. This is not the server that does this, it's the video player. So as I said, it's real junk. It's just one of those problems you're just gonna have to work around. As for actually getting it working with the website, that's going to take a little more time getting it working with the website, that's going to take a little more time. And soon I'm actually going to start working on the chat distribution as well, which I'm not particularly looking that forward to because I've opted to use Regis, the database for that and using publisher subscriber events on that because then that
Starting point is 00:52:46 means that you can have the multiple chat services chat servers at once deploy multiple instances so they're not all connecting to the one instance. So that's not working yet. Right I do want to get into chat at some point as well because that is definitely an interesting topic with the different ways that can be handled. Um, you actually know we'll get into that first and yeah I'll get to what the other thing was. I'll get into the other thing I was going to talk about later. Jesus Christ, I can't speak today. No you can't. Jesus Christ, I can't speak today. No, you can't. I'm in pain.
Starting point is 00:53:26 So if there's anything else you wanted to say, go into that. Otherwise, we can talk about how the chat system works. Well, you can probably... This is all still concept stuff. If you looked at the source code, all it is at the moment is a WebSocket connection. I see. I see. The idea is, I'm going to get Selena... So the whole Vstream stuff is going to be on a separate domain, because we really don't
Starting point is 00:53:56 want to hog up the VtubeTV domain with all these subdomains. domains. I'm going to get them to set the cross origin for their cookie to also include that domain. So when you connect to a chat, it's just going to grab all your information from the cookie, basically looking it up in the database. So that means that there is no way to impersonate someone unless you have their session. And from that, that's where they have the deciding factor. Obviously one of the things, one of the metadata that's going to be sent to the chat server is what stream you're watching in the first place. But after it checks your cookie,
Starting point is 00:54:40 it will check if you're signed in. If you are signed in, it will then check if you're a moderator or If you are signed in, it will then check if you're a moderator or the streamer of that stream and that will give you access to more tools. So it's on a per connection basis so this is not all happening on the top level statements. This is all within a connection callback for the WebSockets. And as I said, I plan to use the Regis Pub... Publi... Sorry, got to get mixed up on my words here. Publish in subscriber events. And the reason why I want to do that, as I said, you can have multiple
Starting point is 00:55:21 instances of the chat service, they don't need to communicate with each other and it just reduces the complexity. But I am worried about how much traffic it can handle pretty much the database. I was looking into other solutions, but they don't seem good for this application. They're usable for it, but it's they're more for like analytical stuff where you'd be tracking statistics from sensors in real time, not public chat. I see. Um...
Starting point is 00:56:08 I would rather have it more like Discord's gateway where sending a message sends a HTTP request instead of sending it over the web socket because then you can do that extra verification through it without hanging the socket pretty much just because JavaScript, it's just pain in the ass with that type of thing Yeah, I'll just have to see how it works out. I will also stress test that. The stress testing, it's not really to improve the code that much. The stress testing is more to get an idea of how many instances are I need because there's just some pieces of code that I cannot optimize. Because it's outside my control, like looking it up from the database, you know, that I can't control how much time that takes. And I can't control how much time it takes
Starting point is 00:56:51 for it to load that into memory. So there's always those fixed variables. Once I can fix, I will fix. But as I said, it's just to get an idea of how many instances you'd need to run at once. So what's also really important to the chat system is obviously the front end you're going to give to it as well, the user interacts with.
Starting point is 00:57:12 And with that comes some sort of a moat system, comes moderation tooling. And how's that side gonna be handled? So for moderation, the idea is just to have the JSON body when you send a message or a message is received and then the moderation events can also just be a JSON body. So you just have like the first variable could be type and then depending on the type that's when it looks up the action for that connection. For deleting messages that's going to be a bit more tricky because of the next JS and
Starting point is 00:57:51 stuff. The problem with that is that the IDs are randomized compared to what you put in the source which may be a big pain to deal with when dealing with the chat because deleting a message With the Regis, I'll just for context with the Regis if you use the public I keep saying public, publish subscriber events. They do not store them. So it's just fire and forget. I won't have a storage thing That storage thing is going to have a limit. It's not going to store the whole entire chat at once. But because of that, what you can do is that a particular message will have a specific element ID in the HTML and it could just be like the message ID
Starting point is 00:58:36 or something like that, or the stamp with the user ID, whatever, to delete a message, all you'd have to do user ID, whatever, to delete a message, all you'd have to do, clients is look up where that element is and just delete the element and then the message is gone. And as I said, because the storing the chat log, the X amount of messages in the chat log at a time, you can also just scrub it from there as well. So anyone else new coming to the stream
Starting point is 00:59:08 as a message was being deleted, meaning that that message won't show up. There's also time out. I haven't told Selena this yet because it's still early on. I also plan to have a time out and ban. The difference between timeout and ban is ban would there'd be two options in ban ban them from that stream or ban them from all streams from that stream pretty much right right oh so you get
Starting point is 00:59:37 okay so you just like okay a single stream ban is actually kind of interesting I don't see that one that often yeah there's just to give the option pretty much. Right, so you're sick of them for that day and just come back later. Yes. Okay, that's cool. And that's, because Twitch has banning. I do have a friend that is like is like a buddy of mine in real life. He does deal with Vtubers. He moderates for some big Vtubers actually, some of them in FaceConnect.
Starting point is 01:00:13 And he's talking about how the Twitch to ban someone, it's pretty much banning them from the stream as well, which is pretty pointless because you can just open the stream in a private tab. Right. So I'm not gonna bother with banning someone from the stream itself, but from chatting, yeah. Yeah, yeah.
Starting point is 01:00:32 Yeah, I always whenever I see people talking about being banned from ever seeing the material, it's like this is this is a losing game and you either have to then start chasing down people using old accounts and like doing ban avoidance Or then you have to somehow deal with private tabs and that's a whole nightmare Then you have to deal with VPNs if you deal with that and if people want to see something after they've been banned They will see it Yeah, even after the stream ends they could watch the void or something of it so it's a bit pointless. Um, the timeouts, that's pretty self-explanatory.
Starting point is 01:01:15 Another thing would be highlighting messages if they wanted to do that so it just makes the message, like the contrast of it, more visible so it sticks out more. Like it might have a background or it might have no no confetti or just something I'm not doing the front end another thing that was suggested to me is warnings I will look into that I don't know how that would be implemented effectively because you could just time out somebody and then put a message in there saying why you're timed out and that's a warning so I don't know I don't see why that have to be a separate event as for um I guess I guess it could be a useful to have it as a separate event for the sake of the moderators so they can keep track of people
Starting point is 01:02:02 but I guess yeah well Jimmy if you have a moderation log that also works as well. Yeah, I kind of had the idea of that if you deleted a message or you gave someone a warning for a message it would hide it from everyone else but it still keeps it for the moderators so the moderators can still see it in the chat flow. Right, right. So, as for emotes, funny thing about that, I have an old game project, I'm not going to go into that, it's just a personal thing. And I actually had chat emotes implemented already and what I can do is I can pretty much just copy and paste that code.
Starting point is 01:02:42 And effectively what it is, is similar to Discord's thing where you can just put in the character, type in the emote name and then put the closing bracket in. And then it would be processed server side to determine what emote it was. And it would be turned into a HTML element basically. So it would just inline images, pretty much. Sure, sure, sure.
Starting point is 01:03:11 And I'm just going to copy that for you because I know it works. Yeah. Speaking of chat, it kind of delves into the moderation as well. But I just remembered it somehow. For moderation, we have an AI called Senthara. Again, I will note the AI is to flag message.
Starting point is 01:03:32 So basically, it would make the moderators review it. Yeah, it won't ban anyone. But it's like dual purpose. It works for moderation. And it's something like Neurosama, the PIV tumor, it will be like that. But the streamer has the option of enabling it. So the moderators can just see the flag content
Starting point is 01:03:56 that it thinks is harmful. They can actually use the keywords. Then again, this is where you could implement your own bots and stuff as well, because it's just WebSockets. So realistically, if you got an API key or something like that, you can just connect into it and then listen for those published subscriber events for a specific stream, which can then do the moderation as well. So you do have that community option as well if they wanted it. Yeah, the point is just to help. It's not going to be like YouTube.
Starting point is 01:04:37 Right, right. Yeah, on YouTube sometimes I would just be streaming and then like I just don't see a message message like it just randomly someone just starts getting completely deleted from chat It's not in the moderation log. It's just nowhere Yeah But that's what it is Since it basically handles all the moderation to a certain extent. Yes If you were can can pick keywords for, like, what are the rejects.
Starting point is 01:05:09 So if they wanted to, they could highlight certain messages or get rid of certain messages. So. As I said, though, even if that's not functional. It's a bit controversial, but. Even if that's not functional or it's not designed and it eventually gets removed, you can still hook in your own bots to do it for you if you wanted to because realistically it's not that much traffic back and
Starting point is 01:05:33 forth especially if you have like like discords chat limit timeout thing whatever they call it um Mm-hmm. Um. Where you can only send a message every X amount of time. Um. Oh. Uh. Twitch just calls it slow mode. We'll just go with that.
Starting point is 01:05:57 Yeah. Yeah. Slow mode. Yeah, that's right. I don't know if this calls it something different. So if they wanted to have that. I think this could cause it slow mode as well. Doesn't matter. The point is it's slow mode. That's the main point.
Starting point is 01:06:10 Yeah. So one of the things I did see mentioned on the site is like Twitch the idea of channel points, which I like. I like random points that don't mean anything. That's always great. But obviously with channel points comes the idea normally of some sort of stream integration as well. You could use those points and I don't know, throw rocks at the VTuber or something. I don't know, whatever integrations they want to make. How does that side of it work?
Starting point is 01:06:49 It mainly is just watch time. On the front end, it'd be watch time. On the back end, it'd be more OBS or VTubestudio. So it's mainly single byte streamers. So on the back end, as you use the channel point, it would just send out a request that OBS would just be listening to. Yeah. The watch time should probably be handled on the streamers by the relay,
Starting point is 01:07:19 because as I said, it's already monitoring if that person's even requesting the video segments in the first place. So you might as well just implement the tracking how long they're watching it for as well from there. So whenever we talk about any sort of new platform, the first problem that's going to immediately arise is how do you get people to use the platform? What is the plan that you have here to get people to know about it, to get people to use it?
Starting point is 01:07:53 Because I assume it's not just going to be just throw it out there and just see what happens. Well, the preferred idea would be to target Asia, especially Japan, because that's where it's the biggest. But as I said, the server costs can be a bit, yeah. So it's a very, it's a bit iffy. It just, it just wait and see pretty much how it goes when it's released, because I'm not the one making the decisions on advertising stuff like that. Yeah, for, um, for, for advertising, really, I know two larger Vtubers, um, that they want to use it.
Starting point is 01:08:41 So that's one way. to use it. So that's one way. The other way which my friend recommend me about was fake posts on Reddit, which I don't like, but it's funny. Because there's a VTuber subreddit, I think. Yeah. And he said he would make fake posts, which I told him not to, but still. And then there's advertising, like video ads or whatever that we could do. Do you have any sort of concrete plan in place for how you're going to approach it? Or is this throwing ideas out there as possibilities you can approach this with. Well, one of the approaches that Soledi has been doing is contacting Vtubers directly, because if you have the people streaming on the platform, that's obviously going to
Starting point is 01:09:50 bring in some viewers. Not necessarily guaranteed, but yeah. so there's that approach um as i said uh there is also the geo side of it where you'd want to target it first because if it if enough people start streaming in japan then it might get the attention of people in usa for. So it just needs that initial push. And then, yeah, I don't expect it to become big, big as in like float plane or Twitch, YouTube, obviously it's not going to reach that because it doesn't have that credibility, stuff like that. But it, yeah, speaking of, But yeah, speaking of advertising, I want to advertise it to also non VTubers as well. For the tech side, because my personal opinion, the platform could use some help. It's me and Elme mainly. I've done like 99% of the work and he's done like streaming. I've done like 99% of the work and he's done like screaming.
Starting point is 01:10:45 So it's... Clarify, I would help, but I don't use TypeScript. So... Yeah. And it's using Next.js, which is... Just debugging anything in that combination of Next.js and TypeScript, it's just an absolute hell. It's a nightmare to debug problems. And it uses an XCodes, honestly. It's just an absolute hell. It's a nightmare to debug problems.
Starting point is 01:11:05 And it uses the next cause honestly, I got for cell pro so it works out. Also think they have like a seeding in that you were questioning ways. So I wouldn't need to do a lot of stuff with that. ways. So it wouldn't, I wouldn't need to do a lot of stuff with that. So with the platform, is the plan to have discoverability on the,
Starting point is 01:11:36 on the platform itself, or is the idea to sort of just use it as the streaming platform and then people just, you know, go about their day. Like is the idea to keep people on the platform like you go on Twitch, you might go from stream to stream to stream. Whereas on something more like a float plane, for example, the idea is you're going directly to that creator's page. And that's the reason why you've you've come here. you've come here. It could be me. Both, really. Cause in the future, we're gonna have like art
Starting point is 01:12:09 and like music definitely, cause that's a big thing. I don't- I'm not doing DRMs. So watch the video. I'm not implementing the DRMs on the stream segments either because that's a bit of a nightmare in itself because there is pretty much no Solutions out of the box just to have it working that you can just slap on top without having a lot of pain and
Starting point is 01:12:40 Of course, you've got the stupid Spotify thing where if you try and use open.spotify.com on a phone, it just immediately kicks you off it. So, and as we all know, the Spotify app is horrible. You can't even pick the song. If you don't have a subscription. Wait, I'm sorry. How do we get to Spotify here? I don't see the connection. Just the DRM thing. Oh sorry. To avoid those problems that you like Spotify and stuff has.
Starting point is 01:13:13 So there might be DRMs for music and stuff obviously but as I was saying for streams themselves or like VODs, probably not, because you'll just have all those problems, and it's not an enjoyable experience either. Well maybe- So sorry if I digress, sorry. No, no it's all good, it's all good. Any direction you want to go down with this, totally fine. We can talk about anything with the platform. I'm not too worried which route we go.
Starting point is 01:13:52 I mean, one thing we talked about is the privacy aspect, because that's a big thing. On the front end, there's no no data collection unless you sign up like we Have to click I we got to click IP addresses go. Sure. We used the system Detector right so that well if you connect to a server button by nature the server is gonna see your IP address like this Yeah It's a concern people have but like a log it. Yeah. Yeah, it's the log It's a concern people have. The default behavior is to log it. Yeah, it's the log, that's the issue.
Starting point is 01:14:26 Yeah, just to get me out of jail and get someone to upload something that's bad and I'm supposed to... Right, right, right. The only things that people could be worried about is Resell, but that's not in my control. That's the same situation as using Cloudflare. It's a bit of a black box solution, so you honestly don't know much what's going on there. So as the person that owns the platform and you use a service like the cell or Cloudflare, there's the expectation that those services might be collecting user data that you're not aware of. But besides that, there's like no data being collected. Each login has its own session, so for privacy, it's all, I wouldn't say encrypted, but it's encoded.
Starting point is 01:15:28 I wouldn't say encrypted, but it's encoded. The token looks kind of like Discord's in a way. The vstream tokens look a lot more like Discord. In fact, I can give you an example one. In fact, when I sent it on Discord as an example, Discord flagged it as a Discord token. So that should show you how similar it is. So the tokens are 64 bit. They're basically encoded three times on each. So take three decoded temps. It's time oriented. On my website, there's a thing for you to make a token. I named it Helix because I was bored and I was playing a Helix game.
Starting point is 01:16:14 But tokens look kind of like discords. Ah, yeah. Yeah, that I can definitely see that. So this one, yeah, I just got the message now. This contains a Discord authentication token, which it does not. So I can share this because it's just a test one. The servers are flagged as test as well, so if you try and pretend to be them, it's all local IPs, so it won't work anyway.
Starting point is 01:16:43 Sure, sure, sure. So mine are more like Discord. There's virtually no data stored in the tokens themselves. It's basically a lookup. As for the Helix tokens, they do contain data as base64. Yeah, so that's like the user ID, general things like that. The IP is not included in that, so no, no, for me. But it's version and data, and then just some random numbers, and then an HMAC.
Starting point is 01:17:24 So it's pretty much like Discord. uh version and data and then just some random numbers and then an h-map so pretty much like discord so it wouldn't be that easy to crack granted there's there's a tool but i originally did want to use uh bcrypt for verifying the tokens and stuff like that but for verifying the tokens and stuff like that but as you know it's a blowfish encryption so its whole entire point is to bloat the hardware so I noticed under high load it just crapped itself so that's why I went to the HMAC instead which I don't really like because you have to store the plaintext token in the database and there's nothing you can really do to avoid that. So I'm just going to have to put up with that. So whenever we talk about any user data the
Starting point is 01:18:17 conversation of GDPR and the CCPA compliance always comes up. And you mentioned you're not storing user data. But is this a concern in any way? Like, is there anything here that could possibly trip you up? Probably the stream stuff, being aggressive with trying to avoid the anti-scraper. But usually it's not tied to a specific user. It's tied to an IP address or something like the signature of the user agent, just something like that. But if it does tie it back to a user, then that would warrant a flag to show that that user is potentially trying to abuse stuff they're
Starting point is 01:19:02 not supposed to touch. So there is that concern of that. But other than that, I don't necessarily say anything else. That could be a problem. Yeah. And with the database, there's one password and you have to be on a certain IP address to even access that database. So for security, it's pretty tight. And as I mentioned with the string keys, like, sorry for the interruption, but even with the string keys, even though the API should not be publicly accessed,
Starting point is 01:19:37 it does everything it can to avoid exposing the string key ever. So if I go back to my main server, there is even caching it, it does not, the first thing it does is it deletes the key after it comes back from the database. So it deletes it from its own memory, it doesn't delete it from the database.
Starting point is 01:20:00 And that stops any response bodies, it stops any URLs, it's just the only place the stream key is ever used basically is to when the person starts streaming. which is more complicated when you consider VTubers because they're not necessarily going to be streaming on a public network in a cafe. Right, right. So... It's somewhere... there it is. Copy the link for that. If you see there, the first thing it does is it deletes the, so.key is the string key. Right, yes. Deletes the key. I see, I see.
Starting point is 01:20:53 Okay, that makes sense. Um, let's see, where can we shift to now? What have we not talked about? Oh, one thing I did see written on the side, which I didn't really understand what you were meaning by that. Model friendly encoding. What do you exactly mean? Yeah, there's doing that.
Starting point is 01:21:23 Um, I'm gonna be angry because it's a bit pointless. This whole feature. Yeah. So it's a fun little thing. I use, how do I word this? I have the GitHub co-pilot thing on my Neobim and I didn't press escape and it did that automatically and I didn't have the time to get rid of it.
Starting point is 01:21:52 So the funny thing with me, except for like C sharp, pretty much everything I program over nano and over SSH. That's it. No assistive tools. Every single line of code, right? Is all manual. It upsets. See, I can't have mess ups like that then. Um, but that, yeah, it was a mess up on my part. I just haven't had the time to go and delete it. Mainly because I'm lazy. But that also from that mistake, I was going to implement it in like a desktop app,
Starting point is 01:22:36 but that's future me. That's the future. I am pushing against not doing that because, you know, Electron, we all know how garbage Electron behaves with stuff like Discord and just everything's a web app now and it's just horrible performance. And definitely for Linux, that's not... Yeah, Electron's pretty bad on Linux.
Starting point is 01:23:04 Yeah. Well, Electron's pretty bad on Linux. Well, you say pushing against- Just for context, the- Oh, don't. The Electron is the Chromium, is based on Chromium, if you're wondering. So, for anyone listening. Which is great. We love it.
Starting point is 01:23:21 We love Chromium. Chromium enjoys here. So, you say pushing against a desktop app, but obviously mobile is a bit different and a mobile app is actually something of value. Yeah. That I'm not doing the future because currently right now we're working towards the core. Apparently right now we're working towards the core. Those tasks of apps might be pushed to me instead because I have more working knowledge of Android
Starting point is 01:23:52 and developing for Android. But yeah, I wouldn't necessarily want to use. Yeah, that's a bit. We don't have any iOS products and you need their products to use their ecosystem yeah yeah so yeah neither of us can afford that yeah the the apple distribution model i've talked to people who've done app distribution before and it's... Apple doesn't make it easy. Oh it's not even just... The other thing with mobile stuff is it's not even just one device.
Starting point is 01:24:31 They want you to have a up-to-date device so you can provide up-to-date screenshots and also if you want to support iPad you need to also provide iPad screenshots as well so you also need an iPad which which is also more money. Isn't there also still the requirement for content delivery for the stupid VR as well? I don't know about that. That wasn't a thing when I last talked to someone about it. I briefly remember it and there's a lot of developers complaining about it. I don't know if it's still the case now, so don't quote me if I'm wrong. But for the Apple VR headset, whatever it was called...
Starting point is 01:25:15 The Apple Vision Pro? Yes, that one. Yeah, Apple Vision Pro. When it first released, what Apple originally did is they started forcing a lot of these developers to also support the AppleVision Pro so there was more apps available for it. That's not something we're looking forward to either. Again, I don't know if that's still the case. It might be, it might not be. There's also the developer fees, where you have to pay Apple to have the developer stuff. It's going to be fine if we do it.
Starting point is 01:25:58 It might take the Netflix approach as well, where if you want to manage your subscription you do it outside Like you do it on the website instead so then you don't have to worry about the revenue split with Yeah, yeah, it's also a fun part It's a problem that um Patreon ran into a while back and they had to send the thing out to everyone and be like, hey, maybe tell your supporters to not support you from an Apple device or a specifically iOS device because yeah, they want to take a cut of that as well. Google Play had the exact same thing, so don't get me wrong.
Starting point is 01:26:42 It's a problem on both sides, but at least with Android Google Play is not your only option. So Hey, you could sign love as well You can on iPhones now, but you've got the eyesheet mindset of like it's insecure Oh, you're going to get viruses if you use anything but the Play Store The App Store, whatever Remember when Apple was saying that? Mmm. Oh, yeah. No, I I
Starting point is 01:27:16 Love the discussion on side loading. I just I just hate the term side loading like what side loading means is Installing an application like if if you're talking about a computer, that's literally what it means It just means installing an application but people were like so They're they're so I guess attached to the app Store model system that they just forgot that this is just what it is. It's not some magical thing where you're like hacking the matrix.
Starting point is 01:27:49 No, it's just installing an app, not through the store. Me with the ATB... APT bridge. Or ADB, sorry. I know one thing because we were talking about discussions. One thing is rules because that I got asked a couple days ago. Oh yeah, right. You're going to have to deal with, if you have adult content on the platform, you're going to have to deal with the policies of those stores as well.
Starting point is 01:28:18 Yeah, that's how you go fine. Personally, I'm allowing 16 year olds, but if one of you or, yeah, if one of you or, or upload content like that, you need to go to Stripe and then put in your ID, kind of like Discord and you know, just verify from there or, or they'll fire or they're verified. I don't know. I had to put that in but um I don't want to be that type of platform where it's like
Starting point is 01:28:50 Oh, we're We're putting this in because it benefits this side or or whatever um but like the main rules are mainly just Be nice don't harass anyone. Don't dox anyone Don't hate anyone, don't dox anyone, don't hate anyone, the basic rules. Which that I know I gotta expand upon. That's what it is right now. And one thing Selena did not know is that you can contact a lawyer for free to the terms and conditions and I told them look I'm not qualified to see if this is like
Starting point is 01:29:53 Legally valid or anything. So I told him, you know, you can just contact a lawyer free consultation So Yeah, I'm gonna get them to do that again Yeah, that's really much better idea than putting yourself in any sort of trouble when someone tries to challenge it Yeah, and yeah, I wanted to go for like a human You know readable way of like the these are our rules, right? But I know I think it was the EU someone got in trouble because they did that and they had to go the legal route,
Starting point is 01:30:31 which sucks. But I think it was the EU. I'm not sure. That sounds somewhat familiar. I'm not remembering the exact story, though. Not either. But that's pretty much the rules. They probably found the document on. Give me a second. Still find it funny. That's the leader. I know. They hate the fact that I just program it all in nano over SSH.
Starting point is 01:30:59 Just no assistive tools. Sorry, I didn't hear that part. You use nano? Like nano is your editor. Yeah. Yeah. Okay okay sure. Yeah, and he loves to throw that in my face Why nano why why not like I don't know vim or emacs or VS code or anything else VS code especially for C sharp. no, it does not mix well.
Starting point is 01:31:27 For C sharp I will use Visual Studio and that's more because I don't want to have, because it's you know object oriented code I don't want to have to write object dot object dot object dot object about 50 times, I'd rather have it autofill for that. But for stuff like JavaScript and stuff like, I've found that having an IDE environment for that, it just infuriates me. So I just went, no, I'm doing this in nano. And that's how I've done it for the past few years.
Starting point is 01:31:55 In fact, even my website, which is all PHP, is all done in nano as well. So the consequences, you get a 24 hour restriction from chatting and commenting and a warning message the second day of the seventh day, you can appeal at that point and you have to read the guidelines all over again, a 30 day for a third time. That's when we actually go into your account and review everything. Please, if someone gets flagged for the content in their video, please provide a timestamp.
Starting point is 01:32:30 Don't do it YouTube and go, I don't know. Find it yourself. Yeah, YouTube. In a serious violation, that's a permanent ban. You can appeal after 30 days. And if we, if you don't get the appeal, we probably might just ban your IP. If it's that bad. If your IP does get banned, that also means from the stream servers.
Starting point is 01:32:57 So even if you do create a new account and the connection looks similar enough, it will just outright reject it immediately. So that's the guidelines and consequences. You're saying there about YouTube not giving you timestamps, they give you timestamps to copyright stuff, they're more than happy to do that. But anytime it's a community violation, it's like- Yeah, community guidelines. Yeah.
Starting point is 01:33:22 Never. Like I got a- Oh, speaking of DMCA, that's another topic. Right, yes. I got a Speaking of DMCA Right. Yes, very interesting You're going to have to have a portal for that Yeah, but if you want to follow one you you have to submit it We won't give up the the the info immediately but but we'll the VTuber about it. The biggest problem with DMCA is that it's probably going to have the same problems with
Starting point is 01:33:53 YouTube because it's not a fundamental flaw with YouTube, it's a fundamental flaw with the laws itself where the two parties have to expose their information to each other and that's just going to be to comply with that, especially with in the US context is yeah, going to be a pain because it might end up like the mess that YouTube is. Yeah, that's why I'm trying to opt for discussing it between us and the, and the accuser. And then if we can't discuss it,
Starting point is 01:34:24 then we'll give up information if we can. Right. Yeah, YouTube doesn't want to have anything involved in that. Like in that conversation. I think that's the main problem that YouTube has. Like they will just let... Because they just want to comply with the laws. That's realistic. Like YouTube will let entirely false claims go through and is like, okay okay we'll sort it out in court it's like surely that i i know why they do it like that just because the scale of youtube but when you can like it you know i have seen people get claims from people are saying they
Starting point is 01:34:59 own the minecraft music it's like no you don't don't. Yeah, Warner Brothers. Yeah. Or like, yeah, that's a recent example, actually. I didn't even think of that one. But yeah, like it's other cases where it's just someone who blatantly doesn't own something, who claims they do, or they've made like a remix of it and they use their remix to say they own the original like dumb things like that i've had a number of cases like this on my channel before it's very fun from a person who's been in this community for that long i i know the dangers of letting people
Starting point is 01:35:39 know your your information like um especially for vtubers yeah there was a person like i don't i don't want to bring it up but there was a person who got stopped because they call it because they leave their information yeah and i think they're uh i think the person broke in so that's not something yeah there Yeah, there's a lot of weirdos. There's another case where they went to a conference, like a content creator conference thing, I don't remember the specifics of it. And she was given a gift.
Starting point is 01:36:20 I think it was like a stuffed toy. That stuffed toy had a tractor. Yeah, it had an air tag or something like that. Yeah. Tractor. So that, we want to protect people in case like that, like platform-wise. We can't protect everyone, but... Sure, sure. You can't protect people from things off platform. Yeah. things off platform. Yeah. Yeah, the DMCA problem is
Starting point is 01:36:53 copyright law is just it's it's it's it's broken, right? Like, I don't think anyone's going to argue argue that at all. Like, it's built for a time prior to the Internet. And look, maybe in 30 years, things will be good for what they are today, but then there'll be new problems that have arised by then. The joys of technology and lore that mix together. Well, they don't mix. It's like oil and water. Yeah, well, they are. they try to mix it So you get these like haphazard solutions to try and comply to the law in ways where they don't really fit in with How things are being done today, which is great and makes everyone's life are very
Starting point is 01:37:40 very nice But hey, you got to work with it. So, you know, you're it. You're not gonna change the law yourself, so you kinda just have to comply with it the best you can. I guess this falls into DMCA, but also balance of platform. Because I'm looking through my Discord. I made it in the Nalthon's server. It's like a poll. I used to run a project called Goddess Anime. It was an anime card game. Okay. So I put it on Discord. And I had the idea of bringing it back. So that might come back and incorporate that into the project. I don't know how yet. But this is why I shouldn't leave products like this, because I have these ideas.
Starting point is 01:38:29 But that's another way of advertising is that. I looked about open source stuff, because I'm in open source entirely. I'm into Linux and all that, so I can market it towards that, but I don't see why a normal user would want to watch B2Grooze. It's still pretty niche. But it depends on the region. Yeah. Like in the West, it's niche.
Starting point is 01:39:08 It's a bit taboo, actually. Seen as a weirdo. There have been some examples of like a Gartgurra at a baseball game, but that's about it. Right, right. So I probably don the first one to be brushed. It's like nine degrees in my room. It's typical Australian weather.
Starting point is 01:39:38 It's probably about 30 degrees in my room right now. Yeah, it's not that hot. Yeah, 90 degrees a 90% humidity. That's fun. I don't miss that. It's been hot in my room. So if I sound quiet or like, uh, rushed and that's what it is. Right, right, right. So one thing I do want to get into, you really, I kind of touched on it, but I kind of want to dig deeper on this is the
Starting point is 01:40:06 kind of allowed content on the platform right like because there's a big range of what Vtubers do and there is obviously twitch has their issue of not applying their rules consistently, but like To what extent of content are you allowed to have on the platform? Like, you know, is it gonna be just like allowing just regular sort of Twitch stuff and not abusing the rules in stupid ways or you go in like all in, hey you wanna do like OF stuff, go for it.
Starting point is 01:40:41 Like where's our line being drawn? For general stuff, it's going to be like Twitch. The rules are pretty strict on the general side. If you have a model that has a little bit too much skin, it depends. If you take every piece of clothing off, then yes, that is an issue, but if it's a swimsuit, you're not going to get flagged or we're not going to go after it. Or the other side, kind of aggressive in the ruling, but it's also not like we don't allow... I don't want to say problematic content,
Starting point is 01:41:26 but you can let your imagination just go with that. That's what makes it more cool. Let's just throw the word lolly out there. Yeah, lolly is a big thing. Lolly and soda is a big thing. That's controversial, but generally speaking, we do allow those type of models on the general side. If they're not...
Starting point is 01:41:53 It's a big asterisk. Yeah, if it's just like normal, it's called looking, then whatever. But if you start up with that that type of content if not problematic and You'll just get banned immediately there's no yet there's an if-and-or-butts about it But yeah, you can pretty much just do anything as long as it's not illegal right right right legal. Right, right, right. Okay, um, let's see here. So what should we have? Oh, we've only like kind of like briefly touched on analytics in the context of like CCV but what are the plans here are there for you know knowing potentially like because like YouTube they they collect everything about you like I I have hyper detailed statistics on my audience
Starting point is 01:42:58 what is the plan here what because obviously you've talked about not wanting to do a lot of user tracking because, you know, user tracking bad, but like what, like, yeah, what, what, what level of analytics are going to be available to the creator? Mainly age, but like, just like a general age of like, hey, this person's like in their 20s or 30s, not hyper-detailed. Age ranges. Yeah, like age ranges.
Starting point is 01:43:30 It'll show the most common country, like if you're in Japan or America, then things like click events, like they hit follow on this video, or they went on to your page and clicked follow. Things like that. Not a lot. You can play with privacy.
Starting point is 01:43:57 But that may change. It's still working that out. Streaming element would have to do something about that. One of the things I do like on... that YouTube does as of fairly recently is letting you know the other channels that your viewers watch. I think Twitch does it as well. Yeah.
Starting point is 01:44:21 Just even like it... generalize to you of the of the other content they like That's something a member of East Raya that's what they recommended was that They also recommended like what videos He people would be more Interested in based off of followers or views. Then there's the recommendation side, which that's, you get a collection beyond my imagination, but I still want it to be small in the data context. One for storage and two for user privacy
Starting point is 01:45:10 because one piece of data can outline millions of people. And then if you put two, that becomes a thousand people. But three, that's a hundred people. So I don't wanna track users, I don't wanna fingerprint them. I want it to be like, wouldn't say signal in terms of data collection, but close where it's basically nothing.
Starting point is 01:45:39 It becomes a point though, where it's kind of unavoidable. So it just depends how it works out. Sure, sure. Okay, so- Like Cloudflare, they'll collect stuff that we don't have anywhere. Sure, yeah, yeah. Yeah, well that's,
Starting point is 01:45:57 if you're gonna use Cloudflare, it's kind of unavoidable with what Cloudflare is gonna do. So- For the stream stuff, I'd rather use Cloudflare as just the DNS and maybe the DDoS protection if a certain cloud provider doesn't offer it. So. So okay, one thing I do want to get into, I don't know why we hadn't talked about this before, is the roadmap towards release and then what happens after release? So, yeah, what does this look like? The roadmap currently, I'd say, is more me just fixing things that need to be fixed. Then El Maze is his own. For accurate releases...
Starting point is 01:46:55 I don't have a lot of time to work on Vstream. Yeah, he has like school and stuff to do with stocks. But, um, uh, he, not he, my bad. I'm so stuck for, for releasing. It's like a, wouldn't say like a alpha alpha, but you could sign up and we limit it to like, I think, but it's like 500 people a month. But just be safe. If it does happen, just blow up immediately.
Starting point is 01:47:32 Then we'll just do small scale testing with like say a thousand people, which not really small, but small enough to get some real world stuff. small enough to get some real world stuff. Especially cost. Yeah. Then I'll fully release. Then I'll disappear for like two weeks because this has been really draining on me health-wise because I stayed up till like four in the morning, five, six, it's just been a wreck. So that's the release.
Starting point is 01:48:09 I guess contributions, because it is open source, we don't want people to contribute. So that's a thing that if we itself needs to be fixed, someone can just make a patch for it and just make things like a PR or a merge if you're on GitLab or whatever. So that's what the release in robot looks like. I'm just going to finish one or two things. And I want to do packages of a node or.NET for the API, if you want to make a bot or whatever. Right, right, right. Yeah. So what do things look like on the Vstream side?
Starting point is 01:49:07 That...it super depends. It's hard to say with the limited time I have weekly to work on it, so it may have to be released at a later date, because it's kind of on its own roadmap to say as a stuff as I said earlier I've got the chat stuff to work on and then other things with that improving the API eventually the database is going to be swapped over for a different database which I'll have to reprogram around that. With like the user database and stuff. So once the platform is released, what is the state of it going to look like? Once you've gone through those like alpha beta sections at full release what is
Starting point is 01:50:06 what is the state things should be in? Um state-wise it should be functional. That's a good start. I hope um but yeah besides like streaming, everything should be functional. The only thing I guess not working is maybe like upload server if it doesn't want to work with like Linode and that would be the best. But that's out of my control with Linode. A lot of things are out of my control because depending on the cloud environment, it's not easy. Which I plan on if we get big enough, we get enough money to switch off of it to an actual data center that's near me and Lemei.
Starting point is 01:51:01 And probably with that is the renting rack space. I'd probably be the ones configuring the servers themselves, but rack space is not cheap. So that's way down the road. Yeah, so it'll be way in the future. It'll be way into the future. That's, I guess that's your question. Like, I'm misunderstanding it.
Starting point is 01:51:27 No, no, I'm just curious, like, what features that are not ready yet should be ready by then? Like what, yeah, generally just like where, where should the platform be? Emojis wouldn't be ready yet because kind of like emotes and stuff. The video uploading would definitely be there. Do you want to do like a... I kind of want to pull off a Reddit, like a little mini form type thing for different creators.
Starting point is 01:52:06 And then, like events, like we're hosting X game on X date, and then you have like a lot of people joining. Right. Right. Um, then one thing I wanted to do, which Elmais taught me on, was the premier feature. I don't know how I would do that, not us to do it in like intervals of 5, 6, 6.35, 6.40, 6.45. But that might come in the future.
Starting point is 01:52:41 that might come in the future. Or besides that, that's pretty much it. Translations would be pretty much the data for English and Japanese as well. Yeah, I know some Japanese, so it wouldn't be hard for me to do that. So, yeah, that's... So if people wanted to you know help out, get involved, because you did say you know you wanted this open source thing. Like what are things that
Starting point is 01:53:14 you need the most help on? I would imagine translations having languages that are you know, non languages, you know, probably would serve some value. But is there anything else that maybe would need some help that you know you want to mention? SDKs like for like font-net or npm, there was another thing. Helping with the models and stuff, that's definitely another one. Anything on the vstream side you want to mention? Probably help on improving the code. Cause the core function of it is not going to change anytime in the future, but yeah,
Starting point is 01:54:12 pretty much just help on that in general. Okay. Sorry, but Mike can't handle this. One of the things was like models of like a machine learning and like the recommendation system that's been pretty much in the fire. Okay, is there anything that maybe we hadn't touched on yet that you think we probably should mention?
Starting point is 01:54:42 I don't think so. Probably handling real-time notifications. But I could probably take the same concept as with the chat and just use, wouldn't use Redges for it, probably would use a different database that's more suitable for it, or not database, memory cache, whoever you wanna call it. It's more suitable for it, but just the publisher subscriber events for that as well
Starting point is 01:55:19 with multiple instances listening to it, which there are definitely software more optimized for that than Regis. There's, there's nothing and that's government schools. So I had some mess about that. Um, is the governance model. Those technically I'm the lead developer and I am the owner. Melza Elme has been there and gave me stuff to do. So if I go here, it's a democratic and a metocratic system. So someone contributes, they are just contributor, but they contribute on a regular basis.
Starting point is 01:56:08 They can be invited to join the unofficial dev team or they can go into certain Discord channels and they could be promoted to core team like me or me and LMA if they contributed like a million different things And you would have to vote on that too, but Okay, yeah core team numbers serve uh one year terms for that's That's just for not me LMA Okay cool. I guess that's pretty much everything then, I reckon. I don't think there's anything else that we need to cover here. Oh, when do you plan to launch it? I probably should have asked that. When do you plan to launch it? I probably should have asked that. Um, a month, two months, three months. It's like around that range.
Starting point is 01:57:10 Okay. It depends on if I'm sick or not. Fair enough. So. As for the streaming side of it, that super depends on the free time I have. Right, right. Super depends on the free time I have right right Okay, um I guess we'll I will sign off there Let people know where they can find the project Get involved with it any any links you want to any links you want to tell people about? Yes, the main website the V the Vtubers.tv. And then the Discord is just that, but just slash Discord.
Starting point is 01:57:51 And probably that as well. Yeah, the vstream back end. That's just... Ah, yeah. Yeah. It's win10device slash vstream slash or dash back in from GitHub. Okay. Nothing else then? That's all the links you want to talk about? Is that all the links you want to mention? Is that all the links you want to mention? Yes?
Starting point is 01:58:28 No? Maybe? Did a DC? Two hours in. Two hours in is the first DC. Lovely. Um... Perfect. What a great tool this is. I love Discord. I love the MBN. Um...
Starting point is 01:59:02 Hello. Can you hear me now? Enjoying that NBN there? Yeah, the NBN's great. I love it. What a great system. Anyway, I was saying, when that happens, sometimes the people I'm talking to can still hear me So I assume you could was there anything else you want to mention now? I couldn't hear anything you were saying Yeah, I'm beside the website I Guess my website because that has some tools for the platform. This is C-h-o-c-o dot RIP Okay, cool that just has some basic information about the last one.
Starting point is 01:59:48 Sweet. Yeah, is that it then? Yeah. Okay cool. Okay, my main channel is Brody Robertson. I do Linux videos there six-ish days a week. I sometimes stream there as well, so check that out if that is a thing for you. I've got the gaming channel, Brody on Games. Right now I probably am still streaming Portal 2 and
Starting point is 02:00:12 I may have finished Strangers of Paradise, so I might be playing something else. Check it out. You see what's there. I have the React channel, which I have blue clips to, that is Brody Robertson Reacts. If you want to watch the video version of this this you're listening to the audio version the video is on YouTube at tech over tea The audio version is on pretty much every audio podcast platform. It's on Spotify. It's on Apple Whatever they call it Spotify has video which is neat There is an RSS feed as well, which is also cool. So I will give you both the final word. What do you want to say? How do you want to sign this off? I never tell people they're doing this. I like to see them struggle. I love Cotton too. He just let that be out there forever. I love her.
Starting point is 02:01:03 He just let that be out there forever. I love her. Um It's just That's what I've got to say Okay, just gonna make everyone awkward Lady you have anything to say to say to yourself. You just want to just like not say anything. That's fine as well I really say I'm not using the oven Fair

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.