Tech Over Tea - Developers Of Vtubers.TV | Choco & Lmay
Episode Date: April 25, 2025In 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)
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?
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.
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.
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.
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
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.
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
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
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.
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.
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.
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...
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...
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.
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
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.
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.
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.
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
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.
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.
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.
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.
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
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.
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
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-
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.
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
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
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.
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,
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.
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,
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
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.
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
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
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.
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.
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.
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.
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.
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,
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.
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
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
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
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.
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.
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
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.
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
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
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
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
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.
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.
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.
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
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.
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.
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
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
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
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.
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.
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
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.
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,
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
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.
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,
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,
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
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.
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.
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
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,
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
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
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.
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
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,
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
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...
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
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.
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
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
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
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
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.
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.
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.
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
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.
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.
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.
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
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.
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.
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
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.
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.
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?
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,
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?
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.
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
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.
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.
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,
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
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
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.
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.
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.
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.
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.
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.
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.
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
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
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,
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.
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.
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.
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.
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,
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.
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.
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
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.
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...
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.
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.
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
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.
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.
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
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
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,
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.
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.
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.
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.
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.
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.
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
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,
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
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
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.
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
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
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.
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.
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.
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
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.
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,
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...
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
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.
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.
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.
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
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.
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,
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...
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.
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.
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?
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
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.
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.
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.
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.
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
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,
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?
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
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.
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.
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.
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?
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...
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.
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
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.
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