Sveriges mest populära poddar

FLOSS Weekly

Episode 766 Transcript

N/A • 17 januari 2024
FLOSS 766

Jonathan: This is Floss Weekly, episode 766, recorded Wednesday, January 17th. WebRTC, the hack that connects everyone to everything.

Hey, this week Sean DuBois joins us. We talk all about WebRTC, including The Pie on Go implementation, how WebRTC helps people connect to Tor, we talk about how WebRTC is coming to OBS in some pretty exciting ways, and then there's also BroadcastBox, which really fills a niche need for live streaming. You don't want to miss it, so stay tuned.

Hey, welcome to Floss Weekly. It's the show about Free Libre and open source software. I'm your host, Jonathan Bennett, and I've got with me the man, Dan, the man, Method Dan, the, the original Linux outlaw. Hey, sir. How are you?

Dan: I'm good. Thank you very much, Jonathan.

Jonathan: How are you? I'm, I'm good. I'm good. I'm almost over the winter sickness that hit, I think, everybody in my town.

I still have a tiny cough, but other than that, I'm feeling pretty good. So, you know, hopefully springtime is here. Not literally, of course, but as far as health goes, springtime could be here.

Dan: Yeah, sounds good.

Jonathan: So today we have a really interesting guest and I'm excited about this because he kind of specializes in some things that I use, that I've had to fight with, that has driven me crazy, that can do some amazing things.

So we're talking with Sean DuBois and Sean is something of a WebRTC expert, which really puts him in a, in a class, almost all of his own. I'm not sure that anyone. Really fully understands WebRTC. So he's the creator of Pion WebRTC, which is a Go implementation. And then he's also the writer of WebRTC for the curious, which I need to go bookmark because that sounds really useful.

And then he's also been working with OBS and BroadcastBox to add some Really, really neat WebRTC capabilities to those two applications. And we're going to be sure to ask him about that. Without any further ado, let's go ahead and bring him on. Sean, welcome to the show.

Sean: Thank you so much for having me.

Jonathan: Excellent to have you here. So let's let's start at the beginning. Give us the I guess the quick version of WebRTC for the curious. What are we talking about with WebRTC? What's the big problem? It's trying to solve.

Sean: So with WebRTC, the reason I love it is you can connect two people on a Anywhere in the world, and through NAT traversal, even though me and you don't have, you know, like a public IP, we can establish these temporary holes in our routers and connect to each other.

So instead of, you know, think of it like almost like automatic port forwarding. So like, all of a sudden, me and you, we don't have to depend on any servers, we don't have to pay someone, like we could just connect directly and start exchanging audio and video. And then WebRTC is both an API and a protocol.

But the cool thing about WebRTC, the API in the browser, is Is in like 40 lines of JavaScript, me and you can whip up like a simple video conferencing, which If, if you remember like 15 years ago that it was just like Space 8, I mean you paid like expensive licenses or you used proprietary software.

Like I remember struggling, yeah. Or, or you had to

Jonathan: fight with the FFmpeg and FF, oh I forget,

Sean: FFserve or whatever it is, which

Jonathan: It was never great. Yeah, I, I implemented a web streaming service way back then and it never was great.

Sean: And like my, my memory is just fighting and fighting to get Skype to run on Linux because like I was new, I didn't know anything about the stuff and I was just like, I just love that we're free from proprietary software to be able to communicate with each other.

It just feels like kind of this like fundamental thing we should have.

Jonathan: Yeah, so I, I use WebRTC. One of the places I use it in a bunch of places. But I do some work on the zone minder project. And so, you know, that is all about being able to watch webcam or not webcam security cameras and you get to looking and security cameras.

Most of them these days will give you an H 2 64 feet or an H 2 65 feet. And if your security camera happens to implement the H 2 64 baseline, Well, that's something you can ingest into WebRTC. And so we had, we had this project where we use, we actually use the, the Janus WebRTC service or server, excuse me.

And so we're able to run Janus and have it go out and grab that H264 stream and then go directly to the browser. And the, the latency on that is incredibly low. And that's just part of how WebRTC works. But the thing that really drives me crazy about it is. So your browsers have they've got all of this really great, really robust video codec processing stuff.

And then they have the WebRTC stuff. And it's totally separate. So you've got to, unless you're coming from a browser to a browser, you've got to really cross your T's and dot your I's and give it exactly the video feed that it wants. Is that something you've run into? Are browsers fiddly? Does it drive you crazy?

Sean: I think it's a side effect of like WebRTC was made by Corporations because they were trying to ship a product and like when everyone got together and they saw money to be made by putting conferencing in the browsers like They weren't expecting people to, like, do webcams and stuff like that. So I think it's the same way that, like, we got Linux, you know, like, Unix was kind of thrown over the wall, and people used it for their own purposes, and that's where we're at.

And I think it's the same way with WebRTC, where you can, like, build all these interesting things with it, and we try to make it better for people building unique things and hacking up interesting things, but, like, totally. Like, if you go off that beaten path You will quickly find that like, yeah, your, your use case is going to be hard, but like you can build amazing things.

And that's, that's my passion is, I just want to empower people to build interesting things. Cause I feel like, yeah, this is like kind of, you know, maybe my Unix, you know, instead of, you know, like now that's all easy and accessible. And maybe that's my hope with WebRTC in the next 10 years. Sure.

Jonathan: Are you following the, kind of the slow plotting progress of making WebRTC work with H265?

Sean: Yeah, so I saw that they were like contributing patches for it and really like so WebRTC is built on RTP, which has been, you know, was in the IETF in the 90s. So it's like there's The only reason that issue 65 wasn't happening was because of like licensing and like politics between companies like it's not a technical reason, and then like the Web RTC implementation in the browsers is owned by Google's.

And so then you have this thing if you have to go convince them to merge it and they have other priorities and things move slow. So yeah, there's just there's a lot of moving parts to make it all work.

Dan: Yeah. It, it's, it's definitely there's a bit of p like all of these things. There's always politics involved always, which we love.

Yeah. We love politics. So Sean, I wanna ask you about, about Pion. Mm-Hmm. Tell us how you came to create pion and, and what it is and what it does.

Sean: Yeah, yeah. So it is a, so we RTC when it started, you just had like this. We had this API in the browser and two people could connect their browsers by kind of just sharing this bootstrap message.

So like on browser a, you would call create offer and then on browser B you would call create answer and you'd like send these each other's offers and answers back to me forth. But there was like there was like no official like implementation for like just doing it on the command line and doing and doing stuff like that.

But a lot of servers existed. Like the one you mentioned Janice, And so I, and I worked at a company that we were doing like things that were off the beaten path and like nothing was really working for us. And so I had left that job. I was at another one and like this, this bug never kind of left me that like, okay, there's something that could be done really great with WebRTC and that's how it started.

And then this feedback loop of like more people were coming on and building interesting things with Pyon and it's just kind of like. Fueled my love for it. So like Tor has this project called Snowflake where they use WebRTC to do NAT traversal and like get around firewalls. Because as you can imagine, like having to download Tor, that's, you can, you can block that pretty easily.

But you can't really block WebRTC conferencing, everything goes down. So like that, I think that's like the way to get around censorship. So yeah, that's kind of the tangent. It's like I started building this thing and I kind of fell in love with all the people using it.

Dan: Mm. And it's, it's a go implementation of WebRTC.

So what made you choose go? Was there a reason why you just thought you thought go was was the language to use?

Sean: So if I had done so a C plus plus R implementation already existed that was done by Google. And so that, that kind of already existed. And there was a couple of other things that made me fall in love with go.

It's like super easy to, to build and deploy and use. I just, there's no like, You don't have to worry about build systems, you know, people can just pull down the code and use it. I have a lot of concerns about like the memory safety aspect of it. So like, as I've been in this space, I see a lot of people that, I'm amazed at the exploits that come up with C and C and it felt kind of imperative to do something in a safe language for WebRTC.

And then, That, you know, honestly, that was just what I was familiar at the time. I've been writing, writing Go for years. I felt comfortable with it and it was kind of that sweet spot. So like, I think a lot of things I can look back and analyze and be like, I made this decision for all these good reasons.

Most things I just kind of fumble into and then I'm trying, you try to explain it after the fact. 

Dan: Yeah, that's, that's the way to do it, don't worry. That's definitely the way to do it. So, you mentioned that people are using Pion to do really cool things. So, can you give us any examples of something that you've seen that you think, wow, that's really cool and you didn't expect maybe that people would do with it?

Yeah, yeah

Sean: so the one, the first one I The one that kind of got me started was with Tor, when I saw like, wow, like for me, this was just like video conferencing technology. But the fact that people could get around firewalls and exchange things the other one that I think is really cool is WebTorrent.

So this idea that instead of having to download a client, I can just pull up with my browser and I can start, you know, doing peer to peer file exchange with other people. Again, like very, very hard to block if you just have, if everyone has a browser. And so if you can go and connect to each other. And then The, the one that always amazed me is like, it was like one in the morning and someone shared in the pine slack a video when, when COVID happened, someone shared a video of them.

They were, they're working for a company that had all these arcade cabinets and people couldn't come into it. And so they wrote something so that you could remotely control a claw machine, a claw machine. Cause they were like, for the next two years, they had no business. They couldn't bring people in or whatever.

And so like someone like at the wee hours of the morning showed me like a claw machine being operated via pine. I'm like, that is super cool. Yeah, and then there are projects that made me feel, I would say, good about myself. Like I had built something that actually helped people. So, there's this company that they they have robots that are in hospitals, and when people have infectious diseases, they would bring in iPads with these robots that were able to call into people's families, like if, if they were, you know coming towards the end.

And like, I, yeah, I just, I always wanted to build something purposeful and like, that's useful to people. So yeah, those are kind of like off the wall things. And I, I sent a list of over of a couple of like weird projects that I always liked. And then, yeah, that's, that's why I do this.

Dan: Yeah, that's amazing.

So you mentioned that like the whole COVID thing, did that kind of accelerate it in a way? Because people needed ways to communicate and to interact remotely. Suddenly there was like the whole world needed it.

Sean: Yeah, yeah. And that. It dramatically changed my life as well, because, you know, I was working on this little piece of WebRTC technology just because I thought it was fun and interesting, and then COVID happened, and then you had like the gold rush.

So I had, you know, like Venture capitalists and people like messaging me and being like, you can do, you can turn Pion into a private company and become a billionaire and stuff like that. Like all of these like crazy things, I'm like, I, I'm just some guy that, you know, pushes code to GitHub. I have no idea what I'm doing.

So yeah, like the, the, it really changed things a lot and it's, it's definitely quieted down since then. But I remember at the time it was very exciting seeing, you know, you had all these people coming on with all these interesting things they wanted to build and do. But now we're kind of in that post everyone wants to go back to the office slump, but it's the same to me.

Like, I just enjoy working on this stuff. And like, I'm, and there's just always new things like the OBS stuff that there's always new things you can do. Hmm.

Dan: Yeah, definitely. I mean, so where does, we talked a bit about Pion, where does it fit into the kind of WebRTC stack? Does it replace a browser? Does it sit between the two browsers?

How does that kind of look?

Sean: Yeah, so I think, I would say it sits between the two browsers where, imagine if So if you're doing like a call that's one to one, it makes sense not to use Pion, but let's say you're doing a call where you have 500 people, you don't want to upload your video to those 500 people, like you only have enough upload to do maybe two or three.

And so Pion sits up there, and you upload to Pion, and then Pion kind of fans out the video. Or you have people that are building like unique clients, where you know, you're like, I need to, Do I need to grab X frames from X 11 via ion and then I put 'em in the browser so I can like remotely play a video game.

So like a lot of like remote desktop services or remote game streaming use ion. 'cause they run ion on those hosts and then that's how they get the frames up. And then via data channel, they send your key press events back in.

Jonathan: So, so the answer is it, it fits in, in either place. It can sit between the browsers, but it can also replace one of the browsers.

Yep. Yeah. What's kind of the list of video sources that Pion can take and turn into

Sean: WebRTC? I mean, it's just kind of like a generic pipe of give me H. 264, give me VPX, give me AV1, and I'll, and I'll packetize it and send it for you. Like, it doesn't make We have an implementation of, we call it Pion Media Devices, where we have like, Hardware support for random things like the Raspberry Pi and stuff like that to to give you easy capture stuff.

But Pion in it, Pion itself has no capture code.

Jonathan: Okay, and so what, what's kind of the connector? Is it, is it G streamer? Do you have pipe wire support? What, how do you interface with Pion?

Sean: Yeah. So some people, well, a lot of people don't want video at all. So, like, we have to keep video out of, yeah, out of that WebRTC repository because, like, they don't want that.

And then I've seen people use GStreamer for capture. A lot of people use FFmpeg. A lot of people are, like, restreaming or bridging stuff. So they'll, you know, like, they'll be uploading video via RTSP and then they'll put it into WebRTC. And so yeah. So I've, so I've seen all these different ones. 

Jonathan: So if we're talking about using Pion, And I'm beginning to see that this is not at all the only use case.

But if we're talking about using Pyon for video do you see a future where Pipewire is part of that? I, I'm, I will just say now, I am a huge Pipewire fan. I have used, I've used Dalsa, I've used Jack, I've used PulseAudio, and almost every problem that I've ever had with audio on Linux, Pipewire has come along and solved it.

And now, Pipewire is about this close to solving all those same problems for video. And so I'm a huge fan of it. Yeah.

Sean: I don't, I don't see why not. Like it's, it would become like just a grab stuff from Pipewire and send it into Pion. But like if with Pipewire maybe it does, like there's other great WebRTC implementations.

Like there's a, there's a, so there's like this heavyweight one by Google called LibWebRTC. And then there's another lightweight one called the data channel that just uses like CMake, super easy to build. So maybe with Pipewire, it would make more sense. to do that like C and C interop with libdata channel.

I guess it just depends on like what the project looks like. And if you want to run all of your stuff in the same process yeah, there's like a lot of different things to consider.

Jonathan: Sure. But it, it sounds like, and I'm, I'm beginning to discover that the, the coolest thing about Pyon, while it works for video, is that you can put, you can put any data inside WebRTC.

I, I'm still trying to wrap my mind around exactly how that works. So does it, Does it look like WebRTC to, say, a firewall sitting in the middle that's doing deep packet inspection?

Sean: Yep, yep. It just thinks it's a video conference service. It doesn't know. Oh, wow. That's interesting. Because WebRTC, like, it has these data channels so, you know, people can send messages back and forth and metadata.

Like, this is my user icon and stuff like that. And now it's being abused, well, used, reused for all of these, like, interesting things. And that's, like, the cool part. I think that's the cool story here is, like, here's a technology that was made. To do, you know, all of these standard use cases and then people saw this and are just adopted and that's and that's why I want to come on and talk today like all these listeners, I'm sure they have interesting things they want to build, but their perception is WebRTC is just a video conference technology, but the more people that hear like this is like crazy powerful technology that can that can get around firewalls that can and for the purpose of like It gets around firewalls because it's just trying to establish for a video conferencing But now you can use that for all these other interesting things.

So you can pipe wireguard through it No problem. Oh, yeah. No people already do like there's a there's a company that already does that like they have a And then the other cool thing is since they're putting wire guard you can like They have like a shim that goes in your browser as well.

So you can like get a little shell and like access stuff from your browser and wire guard. And then yeah, and then like since it's like this generic protocol, it's way harder to block or like package shape.

Jonathan: Right. So is that a, is that an implementation of wire guard in JavaScript? Is that what I just heard?

Sean: Yeah, I think so. Like, I wish, I wish I, like if you go to the, there's a pion example. That's great. Or a pion use repo and I think it's in there that you can just see like the, that example. Oh, that,

Jonathan: that is outstanding. That is hilarious. So are, are, are people using this, I assume, to get connection in, in China, get around the, the great firewall and all of that?

Sean: Yeah, no, I get like so like for a short time Payam was blocked in Russia because it was being, and so like I, I noticed it because a lot of video people were reporting like, oh, like my, My video stuff has gone down in Russia, but it was blocked because of Tor Snowflake. Interesting. Because Pion's DTLS implementation was slightly different than OpenSSL's.

So I had to fix the diff. Because they could look at the handshake of like the TLS handshake and like find the differences. But I minimized that difference and now it's not blocked anymore.

Jonathan: Oh, excellent. That's, that's, that's fun. I've, I've done just, just a tiny bit of helping somebody get around that, that sort of thing.

And oh that's, that's really neat. It's also fun that you get that sort of immediate feedback because it's the cat and mouse game.

Sean: Yeah. No, I, I love it. I mean, I just love the, I also love the fact that someone had to struggle to figure out, to find that little difference between Pion and OpenSSL and the fact that I closed it after they were trying, they probably spent some time trying to get around it.

Like, it brings me joy to know that like, now more people can get on the internet that couldn't before.

Jonathan: Yeah. And so at, at the moment, as far as you can tell, it's, it's Indiscernible. So people are actively using this around the

Sean: world. Yeah, so like Tor has these nodes inside different ISPs around the world and they're always testing connectivity.

And I haven't heard from them recently, so I think it's good to go. No, no news is good news. Yeah, yeah, no news is good news as far as, yeah, so like yeah, no, I love this stuff. Yeah.

Jonathan: So let's talk for a minute about the, the book, the e book. It's WebRTC for the curious, and you mentioned I think before the show started that it's got a permissive license, so is that and, and someone from the, our audience, Bitten, actually asks, is it Creative Commons or something similar?

Sean: I think CC0, like it was like the least restrictive, like I don't, you don't even have to attribute me, I don't care.

Jonathan: Basically as close to public domain as you can get. Yeah, yeah, yeah. Alright,

Sean: tell us a little bit more about the book. So, with WebRTC for the curious I went on paternity leave and I wasn't able to do any program for programming for a couple of weeks.

And so I was just like sitting on my phone and writing it all in Markdown. And that's all it is. It's just a, you know, like a bunch of chapters of Markdown. And my goal was that a lot of people, they find WebRTC frustrating because they don't understand what it's trying to solve. You know, they're like, Oh, like WebRTC is so frustrating to use.

Like, why is it so brittle? But it's because it's trying to solve all of these like different problems and like you get an appreciation. You know, and like empathy for the technology when you understand that. And then it's also, I think, if you understand it at the protocol level, then it gets a lot easier to use the APIs.

So those are the things I'm trying to solve. It's not like a go to this. It's like, and it's also like an implementation agnostic thing. So you can use the Python or the Rust or the Go implementation or in the browser and like this book is applicable to them all. Like it's not like a here's how to use Pion kind of book.

Mm hmm.

Jonathan: How detailed does it get? Is, is this sort of a handbook that you can use to go write your own? Yep.

Sean: Yep. That's the goal.

Jonathan: How, how hairy, how hairy is that? I've kind of always gotten the, the impression that WebRTC, you know, under the hood is a real pain just because my experience has always been that live video is a pain.

Sean: Yeah, I think so WebRTC is like a gluing together of all these existing IETF protocols. And so it's like, if you, if you like, there is no way that. One person could learn the entirety of TLS and STP and ICE and RTP and like all have it in their head at once. But you go and you implement the minority of it you need and you could do super powerful things.

But yeah, I, I also get the sense that like people in the video and WebRTC community, they like to oversell how challenging things are because it makes them look and feel better about themselves. And like I just don't, I just don't think like as of anything like you learn it all of a sudden it's not that scary.

Like that's That's what I'm hoping to convince people. And at the same time, I'm watching all of these companies with these competing proprietary technologies to WebRTC. All their marketing material is like, WebRTC is challenging. Come use our proprietary thing that's in our set top boxes. Right. But there's no one doing that for WebRTC.

Like, there's no company that, like, evangelizes or is selling WebRTC. Like, it's just a internet protocol in the IETF and W3C. Yeah.

Jonathan: Let's talk about NAT for a little bit. Because that is we talk about peer to peer, and NAT is the thing that gives everybody headaches. And it, it seems like WebRTC handles this fairly well.

What's the, what's the story there?

Sean: Yep, so with WebRTC so I, I guess between the NAT, like for a quick explanation of NATs, it's like if You know, we imagine we've run out of public IP addresses. And so inside your router, you have, you know, I imagine we have, well, or there's the people that are hoarding massive amounts.

But I guess that for, no, I was actually pretty excited. My ISP finally gave me IPv6 and I magically, yeah, I magically had like a peer to peer connection with someone behind a host without any of that. It was cool. But anyway, so what WebRTC does is it uses You're inside. So you're inside your network.

You don't know what your public IP is. How do you figure this out? And so what you do is you send a single UDP packet to a stun server, which is like a public host. And that public host responds, Hey, thanks for sending me a packet. Your IP address is 103 blah, blah, blah. And the port that you sent me on is 4, 000 and now that you have that information, you can go and tell everyone, Hey, this is my public I.

P. And this is the I. P. And this is the port to send to me on. And your router will temporarily hold that port open so that anyone can send in to you. There are different rules about how that port allocation works. So most of the time, yeah, you can give out that port and anyone can send into it. But some routers say, okay, only the person you sent to consent back.

And so then you can't get peer to peer as well. But yeah, that's, that's kind of the short of it. And then there's other methods of opening up your your net. So you have like PCP and that PMP and those aren't implemented in most web RTC implementations, but there's also other ways you could like, Automate, making yourself available behind an app.

Sure.

Dan: So this might, you know, in the whole thing we say there's no stupid questions. I'm going to ask a possibly stupid question. So do I need to have UPnP enabled on my router for that to work? Or would it, you know, with the stun server and all that? Because I have an idea of how that works. Would I need UPnP enabled?

No. Or would I

Sean: not? No. So, like, UPnP is like You have that I'm actually not familiar, like deeply familiar with U-P-M-P-U PMP is like, you go to that and you, and it's like you can, and that's like a service that you talk to, to configure with stun. You just send a single packet in and, and like it opens that nap binding for you automatically.

And that was, I was this, this whole, war kind of happened before my time where it seemed like it was UPNP versus the stun people where some people wanted UPNP and some people wanted stun and they like went back and forth and talked about which one is best. But I've never, I, I, I was able to find some of the history on it on SSH.

org, like the company that like had that offers that like they had some of the history behind the two implementations or the two methods of naturaversal. But. I don't know the full history. And that's actually another part of Web RTC for the Curious, in the final chapter, I go out and I'm like interviewing a lot of people that were working on this technology back in the nineties and early two thousands.

And like, what was it like at the time? And like, what were people doing and like, what were we trying to solve? Yeah,

Dan: it's, I I just ask 'cause I, I don't have it enabled on my router in the end. Anybody I know who's. Got anything to do with security? Always says to me, for God's sake, don't use UPNB. Cause it's like, it's allowing, you know, you're allowing people to open all kinds of ports.

That's pretty cool. So I wanted to talk a bit about something that I know Jonathan's very kind of, is close to his heart, which is OBS, which is what we're using right now. So we're, we're talking, and Jonathan can explain this better than me, but we're talking via OBS and he's piping it all together with his pipewire magic and all the other stuff.

How does, how, you, how do we get, you know, how do we get Pyon into OBS and how's that looking?

Sean: So, A different WebRTC implementation, LibDailyChannel, is powering, so OBSv30 that just came out has WIP support, which is just WebRTC. And so, in the same way you use RTMP, you can just drop in a stream key and a URL, and then you can just use WebRTC.

So today, that means you get a couple new interesting things. If you use WebRTC output from OBS, you get more codecs. So WebRTC already supports AV1, it supports VP9, it supports Opus. The other interesting thing about doing WebRTC over RTMP is you get simulcast. So with with RTMP, you know, you just send up one stream of H.

264 and that's it. Like, but with WebRTC I can send up my high, medium, and low feeds. And then at the server I can forward those all out. So that, so that'll make it like super cheap for server operators to run and do things. So, you know, like my hope is that self hosting will then become way easier to do.

Because right now you need, you know, so much money to run all these transcodes. And now you can just have, you can just be forwarding out video packets. And use all of like, most GPUs, you know, can encode six, seven streams at a time. So why not let them do the work? So yeah, so I started with, The WebRTC support in OBS for doing the output, and I'm happy to answer any questions about that or talk about why that's cool.

I can kind of move on like to like what the next step is if if you're ready.

Jonathan: So I definitely want to talk about that. We missed one thing that came to came to my mind. One of the things that I've thought with with WebRTC is the different variations of, say, H264 is you've got H264 baseline. You've got Vanilla H.

264, you've got H. 264 and I kind of alluded to this earlier, your, your web browser implementation, some of them are, are extremely picky about what versions of that they will, they will run. Does, does Pion help us with this any?

Sean: No, so, so, yeah, so Pion isn't like a decoder for video, so it does understand like the bit stream itself, and it can like slice it up for you in the different now units, but like it, like really that comes down to like, In the browser, you're probably using open H.

264, which only supports like a subset of the full H. 264 spec. Right. My answer to that is always like, hopefully, you know, we can just get AV1, get VPX, and like just keep moving toward, and that, and that's why I did like this OBS stuff, because I'm like, I just want to see adoption of these things that are easier to use.

Mm hmm.

Jonathan: So let's, now that we've covered that, let's, let's pivot back to OBS. And I have, I have been real curious about the, the new WIP support. And so that is, that is mainly aimed at, you've got a server somewhere that's ready to ingest WIP. Is that probably going to be FFmpeg on the other side or something like

Sean: that?

Yeah, so right now GStreamer has WIP support. And FFmpeg has a patch out and then I have this reference server implementation called broadcast box Where it's just like a go server and You can just do Docker Compose up and you get this whole whole setup. And so then you can just like build your own, like, Conference, you can build your own broadcast thing in like 30 seconds and then just use the whip up to go out to it And then use all the cool WebRTC features Okay, well,

Jonathan: let's let's chat about that for just a second because it sounds interesting broadcast box you can build your own twitch.

You can do your own live streaming there. Now you've got to have the bandwidth i'm sure to be able to handle this But how many you concurrent listeners watchers can that handle? How does it scale? Yeah, so

Sean: like I, I expect it to scale RTMP since you're not doing any of these trans codes. You're just like accepting UDP packets and then you're forwarding them out.

Sure. I think it all depends on the box you run on. So like when I was, when I was doing someone asked me to do benchmarks for like, hey, if I could read, if I could send out RTSP, you know, we got up to like, I forget the exact host on AWS, but we got to like 30, 000 sessions. Because it's just, you know, it's just like forwarding UDP packets.

It's like we're not doing any work. Like we authenticate those packets to make sure they come from who we expect and then we forward them out. Sure.

Jonathan: Do you, do you have people actually using broadcast box? Has it gotten some some uptake? Yeah.

Sean: Yeah. So like on the, I have this discord called real time broadcast that has like a couple hundred people in it and we, I'm just like trying to help all of these like people that are trying to do interesting things with it and trying to self host and yeah, like I don't.

I can't, I don't really know who's using it. I'm getting PRs and I'm doing stuff with it. Like, my whole hope is just to evangelize what is possible with WebRTC. So you've got this simulcast that will let people do interesting things. So, you know, like right now, like you have to be, I forget the correct term for it, but like on Twitch, you have to be like chosen to get trans codes.

But with, but now with broadcast box, I can just do whip. Simulcast and now you can go and I can do 1080 P 720 P 40 P and I can do what you know, I can do high quality and all of those. I can do different viewpoints because WebRTC lets me do multi track. Yeah, so basically it's just like this laundry list of here's what the future could look like.

Jonathan: I assume you have some example HTML and JavaScript code of here's how you put this in a, you know, embedded in a website.

Sean: Oh yeah, so it's so you'll probably just I frame it. But like broadcast box itself. It's just like you do like a docker compose up or go run dot and it gives you everything.

That's the back end. The front end. It's it's themed. It's like it's all just ready to go. Like you just you start it and you give people the URL to it to watch and you push into it to publish and that's it. Okay,

Jonathan: very neat. Boy, that sounds that sounds really interesting. One of the things that blows my mind doing this show is we talked to open source folks.

And And so many times it's like, okay, I had this, I had this terrible problem 10 or 15 years ago. Why was this not around back then? Because it makes it so easy.

Sean: It's, it's just such a hard uphill battle to do these things because it's, a lot of it is convincing people that it's interesting. You know, a lot of people are just happy with RTMP.

They're like, this is good enough, you know. And it's, and it's a lot of people that are happy with it because they're in, you know, countries with amazing internet, but then people, you know, it's so yeah, people are just complacent. And like, I'm also incredibly idealistic. So, you know, I'm going to keep fighting this battle for, you know, Don Quixote.

I will keep fighting this battle no matter what, just because it's fun to me. Yeah. I

Jonathan: I can't help but think that Broadcast Box. Like, there's this, this niche use case where you want to be able to live stream something, but you either, you know, you really don't like Facebook, you don't like YouTube, or maybe you don't like the ads that YouTube or Facebook wants to put on your stuff.

I remember I helped a

Sean: church

Jonathan: out along, well, this is actually, this is the thing I was talking about. Back years and years ago. I helped a church out and you know, we had it put together where we could stream to YouTube That was easy but it's like you had no control over what ad was gonna get shown right before the church service started and sometimes that was just a It

Sean: was a problem.

Yeah, I can Yeah,

Jonathan: oh so this this all that to say Broadcast box itself. It seems like there if you could if you could get the word to the right people There's a really interesting niche use case there for Somebody that really, really needs to control their own streaming.

Sean: Which, in my opinion, is everyone needs to control their own thing.

Well, sure. Yeah, like if because if you accept free services, eventually they get taken away. Like, if you're not paying for something, then you are the product. You are the product, yeah. So, like, that's how I've been with this. It's like, with BroadcastBox, with Pion, like, I just want to give people things that they actually control, they can deploy, they can read the code and understand.

That

Jonathan: actually brings up an interesting question. Do you, do you make any money with this? What is the product?

Sean: So I had this opportunity, you know, like years ago, like when I'm, when I was like, Oh, do I start a company with it? And I felt that it would change my relationship with people. So like, I wouldn't be able to come on this podcast.

And talk about these things and just be honest about how I felt about things or that I would have to like I would have to filter myself in a way to make sure I make the most money possible, but now I don't like in this very freeing that I do. So I I pick up. I work at companies that use pion, but like I don't have to walk a company line, which so so no, I don't make any money off it directly, but I will work at companies that use it.

Jonathan: So you kind of have you've you've established some expertise in the field. Yeah, yeah. Yeah. So you're sort of making money with it. You just, your business relationship is not

Sean: Oh yeah, no, no, no. Some companies have gone down. Oh no, no, I actually make a lot of money because of it. Before I started I was kind of like this generalist programmer that would move between jobs, like becoming a WebRTC person.

I think like if I had to do the math, like my salary is like three, four X more than when I started. So yeah, no, like you should like, yeah. But like if anyone is wants to get into video, there is like so many people that have things they want to build and if you can help them build it, you know, you get a piece of the pie.

So like no, I'm very lucky and happy to be in the

Jonathan: spot. I am. Yeah. You're kind of the embodiment of that idea that you, you don't, let's see, how does it go? You don't make money with open source, you make money because of open source. There's a saying, something like that.

Sean: Yeah, interesting. And again, this is all accidental.

Like I, it's, I never like started out. I was like, I, I have this business plan. I'm going to figure out how to make money. Like I just, I, when I first started with WebRTC and Pine was small, I remember begging companies to hire me to work on WebRTC stuff. And people are like, we don't care about your podunk project that like and it's funny, like overnight, you know, things, things changed.

Well, I guess cause of COVID like that's what changed things for me.

Jonathan: Yeah. So it was a big part of it.

Dan: I, I heard we, we've kind of, we, we've talked about the history of web RTC and stuff, but kind of a little thing that just popped up in my head was I remember hearing that Amazon put a lot of money into web RTC development.

Is that true? And why is that something that they're pursuing, do you think? I mean, I dunno

Sean: if you can remember. Yeah, so I, I that was one of my jobs, so I worked at am so Amazon. They wanted to do a small WebRTC implementation for embedded devices. And so it was used in the delivery robots. It was used in the fulfillment centers, and it was used for a lot of the customers.

So, like, they had a lot, like most home security system cameras that you see, like they don't actually run their own video infrastructure. They pay AWS. And then they install this, like, small C SDK. So, like, the issue was that there wasn't a WebRTC implementation for embedded. And so I worked at Amazon for two years and wrote this, like, very small C implementation that could go on, like, embedded devices.

So that was Amazon's involvement in WebRTC was for that. And then I also worked at Amazon at Twitch doing WebRTC. So Twitch has this, like, built in guest star or watch together product that uses Pion. So yeah, so like I've, I've done stints at Amazon that do different WebRTC things. Ah, okay, yeah.

But yeah, there's like no top down leadership that says WebRTC. It's, you've got different, you know, like, very different, like, VPs, important people that take interest in WebRTC, and then I end up there and I do it for a little bit. That's cool.

Jonathan: That's very cool. Ah. So let's, let's talk about back to OBS.

We tried to get on this subject and got distracted. Now we've got, we've got WIP in OBS right now with version 30, but you, you've got some, you've got some things coming that sound real interesting. Let's, let's chat about that for a minute. What is, what is coming with OBS with WebRTC?

Sean: So we have this WebRTCC output, but now I'm going to do the inverse so you can pull video sources in.

So imagine if you wanted to have like a one to one call. I would whip my video to you, and then you would whip And then I would web your video back. And so, like, we, you know, you would send your video to the other person, and then you would pull that other person's video, and then you could just have a conference call in OBS, where you're just, like, sending WebRTC traffic back and forth, and it's in sub So, like, you could do this today with RTMP, but the latency just isn't good enough.

But I'm gonna make it so that you can do, you know Bidirectional communication with WebRTC. Oh, and the other downside is RTMP can't do the NAT traversal. So you have to run, like, a server up there. But now, like, you can just connect two OBS instances and you can start. So I want to make it super easy for people to co stream and, like, build things together.

But it doesn't

Jonathan: Okay. We take a very interesting view of that because we run an interview show and most people have OBS. OBS is the magic that makes the background of this work. So I am, I am extremely fascinated with that. Cause you know, right now we're using Video Ninja, which was originally called OBS Ninja.

It, it sort of was written to solve that problem. But it sounds like if we're doing it directly, there's, there's a couple of layers that you can just cut out of the middle of that. So that's really, that's really interesting. I, we will have to

Sean: give that a try once that is ready. I think it, it depends.

So with There will always be a video ninja because OBS, I think will, will lean towards more technical folks of like, you have to have like an understanding and gluing these, like understanding these protocols and stuff like that. Like, like there will, there will always be a world where people won't care about the actual underlying technology.

So I think for like this podcast, like we obviously love technology, we do stuff, but for the majority of people, they're like, I don't want to talk about whatever you see. I just want to pull up a website and, you know, like have things. So like my hope is that. Something like Video Ninja will exist where someone just opens it up in their web browser and then you can pull it into OBS still and then the, and then the other part is like the scaling aspect.

So like, let's say you're, you want to do a podcast with six people, you know, you're playing D and D and D together. You probably don't have enough upload to upload your video six times, right? And so you'd upload to Video Ninja once and then Video Ninja fans out to like those other five people. Sure. And then I am also very Personally attached to Video Ninja because the the creator hangs out in the real time broadcast discord and he, like, deeply, he, like, deeply cares about, like making WebRTC good, like, he, like So yeah, there's like, not a lot of like, products.

Well, I guess like, Video Ninja is one of those products where like, the creator like, deeply cares about doing right by people and like, building things that actually help for people, so like So I guess this is a shout out, like, if you aren't using Video Ninja today, like, it's, it is something that really respects and cares about its users, so like, I, I admire it.

Jonathan: No, it's, it's great. I, I really enjoy using it. The, the thing that irks me the most about using Video Ninja Is I know that OBS is running a web browser to be able to ingest it and that just sort of drives me nuts. Just knowing

Sean: that it's there. And we'll get, and the cool thing is we'll just like get all the way from that.

You'll still use Video Ninja, but then you'll just use like a web source. So like, it'll be like a pure C WebRTC implementation that's in OBS. And the other thing that's annoying about the browser is it's making all these decisions for you. It's like it's changing your bitrate and your resolution and it's like doing all these things in OBS.

And this pure C implementation, you'll set your exact bit rates, you'll set your exact codecs instead of having, because that's like the thing with I won't get, this, this is a fun tangent for me, but like, I, I don't want to derail if like, Oh no, no, no, no, we, we, we, we, we like the, we like the tangent. Yeah, yeah, yeah.

So like, you piqued their curiosity. Yeah, yeah, so like WebRTC and the browser is written in a way that it makes sure that It, it respects the amount of band, like the bandwidth you use, because imagine like an, if you could set your bitrate, an attacker could just like open a new tab and like spin up 10 HD videos and take down your internet.

And so WebRTC in itself is like designed that it limits your peer connections, it limits the bit, the bit rate, it sets the right codecs for you, it doesn't, and so it does all these things that are good for the user. But maybe not great for video for, like, getting the perfect video experience. But the nice thing about OBS is I can spin up a WebRTC session and I don't care what you say.

I want 10 megabits. I want 81 and like it just sends it out. And so and I'm gonna do other cool things. So WebRTC has this feature called FlexFec where with With Oh, with if you're sending video over RTMP and you hit packet loss, you'll just incur latency because it's going to like resend, resend.

But with WebRTC, you can do redundancy. And so I'll send, you know, 125 percent of video so I can keep that, you know, 100 milliseconds of latency, but I'll still have that sub second. Experience. So even if I'm, you know, on cellular or Wi Fi and I have a crappy network, I mean, you can still have the sub second thing.

And just in OBS, you can configure, Hey, I know I have a bad network. Send extra video data that is technically wasteful, but because of the network I'm on, I have to send it. So we're going to do a lot of cool things because now we like control it and we're not just pulling in a browser.

Jonathan: So, so let me, let me make sure I understand correctly.

I can, with, with the patches that you're talking about, I can give a guest a website. Video Ninja. They go there, WebRTC runs in their browser. I can then ingest from Video Ninja into OBS. Having to run the web browser underneath, it'll, it'll no longer be a URL source. It's now a, a, a web

Sean: source, a web source.

Yeah. Yep. And then you can tune all these things and like, you can be like, so like with UDP packets, you have to wait until they arrive. And so you can say like, Hey, I just want super low latency. So I'm okay. If I get, if I get some corruption, like. I want to play this video package as soon as they arrive, or I can be like, Hey, I'm okay with two seconds of latency, but I want absolute perfect video like you'll just have all of these controls that you didn't have before because the browser just decides what it's best

Jonathan: for you.

And then is there going to be an option to use whip to push a stream

Sean: back to video ninja? Yep, or that are video ninja already added that today. So you can you can push into this with OBS. And so the cool thing about that now. Is today we could have pushed into this and instead of, you know, like our videos, like doing H264 and maybe not being the best quality, we could have all pushed five megabits a second via OBS and had, you know, like, you know, you can control everything.

So, yeah, no, like Video Ninja today supports WebRTC output.

Jonathan: That is cool. When do you, when do you anticipate this landing in OBS? Can we have it now? Yes, can we have it now? Is it 31?

Sean: Do you think it's going to make it? So the, so the WebRTC output into VideoNinja, you can do that right now because you have the WIP stuff.

And then and the other tangent, like I'm super excited that we can kind of like chain operators. So like imagine you can do like WebRTC, you can do WIP into VideoNinja, and then you can do WIP into CloudFlare. And then you can use like CloudFlare to like do massive broadcasts and stuff like that. It's almost like a chain, a chaining WebRTC.

And then, okay, so back to the question about, so my hope is that Oh, so I'll share my repo, but I have. My, I have pull requests open against OBS with all of these things. And so you can go download the unsigned Flatpak and the unsigned Windows and Mac builds and just use them today. But then no estimates on when like it'll be merged.

Right, you're,

Jonathan: you're, you're not in control of the OBS repo. You've got to convince the people there that yeah, it's a good idea and that your code is sane. Yeah, which I've had, I've actually had good success with getting code into OBS. I've not done anything this big, but I've done some fixes for like Linux audio.

And they seem to be pretty reasonable to work with.

Sean: Yeah, so I think the, the, it's just, this is just a weird use case. Like, nine, you know, like a hundred percent of, a hundred percent of people are using RTMP to Twitch and YouTube. And to convince them to be like, hey, derail your release schedule so I can add my weird web stuff is a hard sell.

But, like, it's happening. Is there, is

Jonathan: there a place? That we can go and thumbs up your pull requests and be like, I would

Sean: totally use this. So I would encourage people, like you just show up in the OBS discord and like discuss with people and use it. Or like, I'll share a link to the real time broadcast.

I have like a Discord where people are talking. Like, you should join and just be like, Hey, I used this and it wasn't very good. Or like, Broadcast Box can be better there. So like, yeah, there are like communities to talk about this stuff.

Jonathan: Is, is that Discord the, the main place to, to work

Sean: with your code and your projects?

Yeah, yeah. So in the broadcast box, read me. There's like a link to this real time broadcast. And it's basically like, there's a couple like, Cloudfarer, Millicast, devs hang out there. Like, it's everyone that really cares about this problem of real time broadcast and WIPWEP and all that stuff. Alright. That is that is

Jonathan: extremely cool.

And I am, as you probably noticed, I am extremely excited at the idea of these additions to OBS. So I'm curious, what's the, what's the weirdest thing that somebody has done with your code? What's the thing that most surprised you?

Sean: The weirdest thing. So there was, there was sex toys that can be controlled via data channels.

I was, I was like, I was on that one, I was like, oh, that's an interesting one. I didn't expect that. Yeah. The one I really loved is like the immersive, someone like hooked up their like Nintendo Switch and the headset so you could play all of these games in like VR. I thought that was super cool.

Yeah. And then another one that I thought was super cool was like having a jump box. So like, You know, like every company I've ever worked at, you have like an SSH jump box or you have like a VPN kind of deal. But with WebRTC and the NAT traversal, you don't, you can like keep all your servers behind and firewall on NAT and just temporarily open up a hole to get SSH access, which I don't know, like that always was a fun one for me.

What else? I wish I should, I should have like scrolled through the the list before I came on, but those Yeah, I think those are the, those are the fun ones for me. Oh, and like the another one I really loved was the At the time it was cool, but I feel like now, so before, you know, like Stadia that shut down in xCloud, someone had built, like, game streaming and with a bunch of emulators, and so, like, I could go to this page and pull and play NES games and play Game Boy games, and I was like, that is super cool.

Doesn't seem as cool now that, like, all the companies have, like, tangled it on, but at the time it was, it was novel. Yeah, that

Dan: is very cool. I mean, that does sound awesome. And one of the things that you sent to us, Sean, in your, in your our secret back channel email that Cameron sorts out. It was you wanted to talk a bit about source available stuff versus free software.

Versus, you know, intentionally free software. So, what, what was it that you wanted to, to talk to us about?

Sean: Yeah, if we had gotten, like, I think and I had, this had come up recently who had talked about this. Oh, Bruce Perrins had, had like written something about this where there's open source. He told me, yeah, this post open source.

And so you have these two weird things where companies will join an open source project and they'll hire people out of it. And When they hire someone, then they get very busy and they don't contribute anymore. So it's been weird, like, you look through these generations of open source projects and like, they're very alive and exciting and then the people get hired out of it and then they get busy and then these projects die and it's not like, this isn't like the first generation for it to happen.

I feel like it's been happening since the beginning of open source where like, the creators get hired and they're busy and then, and so like, but maybe that's a cycle of life and then The other interesting thing is like the, the advent of source available. I think Chromium is kind of the poster child of this, of like, you can go look at the code, but then they roll out, you know, these like different ad.

I don't even know what that call I haven't been paying attention anymore, but like those the new like cookie cookie like ad identifiers that follow you around the web and like it's open source. Technically, I should be able to go and revert it and disable it, but you can't really because it's kind of the source available.

But at the same time, it's this chilling effect because it shuts down all the competitor browsers because everyone's like, Oh, I could just use this open source thing. Why would I ever do my own? So So, yeah, it makes me sad that, like, Well, it kind of goes back to the whole GNU thing. It's like, this wasn't about like, it's not just about the code being open, but it's like, does it respect users?

And is it best for the users? And like, how do you deal in this world where things aren't black and white? Where like, yes, the code is open source, but it actually is not respectful of its users. And like, it doesn't have its users best intentions.

Jonathan: Yeah. A hat tip to Simon Phipps, as more time goes by, I enjoy this statement more and more.

He makes a statement that source code licenses don't compile. They don't come down to precise meanings. And so really what you need is a community that actually gets it right. I, there's a, there's a story that I actually saw Steven J. von Nichols tweeted about it. And it's the idea of delayed open source publication as a rival to open source.

I, I assume you've seen this a time or two. The, the idea that, you know, we're an open source company, but we've got our proprietary stuff that we make money with. And so the promise that we make is, after this proprietary stuff makes us money for six months, then we'll release it as part of the open source product.

And I, I get, I get the idea that people need to be able to make money. Programmers need to eat and be able to pay rent. But some of these, some of these schemes that people come up with are just a little draconian. Are you familiar with the, the DOSP, the Delayed Open Source Publication

Sean: Model?

Yeah, and you have like these, All of these licenses with caveats, like you can use this software unless you make more than a billion dollars, and you're not, and it's, and it, for me, that's why I always end up MIT licensing things, because I'm like, as an, as a small fish, am I going to be able to go and sue, you know, Google if they use my software?

It doesn't, it doesn't matter. And they'll just use it behind closed doors anyway. So I'm like, all I can do is make my stuff as accessible and easy to use as possible because bad actors are going to be bad actors and there's nothing I can do to fight

Jonathan: them. I'm Yeah. Yeah, that's fair. One of the, one of the, whenever we talk about this, I just, I have to say kudos to OSI for sticking to their guns about the definition of open source.

And you mentioned, you mentioned Bruce Perens and, and his post open source. I haven't looked real closely at that yet. I've just looked at some of the things that he's talking about. And I have to say he is at least, he has the right idea. He's not trying to water down the open source definition. He knows that it's got to be something else.

I don't know if that's the, the, if exactly what he's laying out is the right way to go about it. I don't know if the ideas he has is what we need. But I, I definitely appreciate that it's not he's not trying to change what open source is. Because I think that is a, kind of a scary and dangerous road to go down.

Sean: And I think, I've become a little bit, like I always thought that, There was always this intention that we wanted to protect users that didn't want to protect themselves like they were never, they were, they were not, they were not wary of, you know, using non free software and they weren't wary of these services and I don't even know how do you protect people that don't care?

Like for myself, like I am always actively seeking out like right alternatives and things that respect me. But like if someone isn't, how can you, you can't force them to use things that care about them. I don't know. Yeah. Yeah.

Jonathan: Yeah. It's, it's an interesting, an interesting pickle. Well, you know, I think, I think we've covered a lot that was in the rundown.

I want to, is there anything that we didn't talk about that you wanted to cover that we can, we

Sean: can quickly cover? Oh yeah. I mean, like, do we, so we, do we have 10 more minutes is what, or are we out of time? Well, I don't know. It's

Jonathan: up to John. Not entirely out. We've, we've got about 10 minutes left on our recording

Sean: time.

Oh, okay. Yeah. No, I'm happy to talk about it. Like I, we can touch on like the open source career stuff. Cause like my career was made out of open source. So like I didn't, I started out in like the late 2010s like doing like lamp development and stuff like that. And I just kept jumping between jobs.

So like I was, I always want to encourage people to, to go down that route where you don't need a college degree. You don't need to like certifications. Like if you can open source gives you like. The tools are just laying out of the table. And if you start building things that are useful to people you can do Some really amazing things.

I'm sure I'm preaching to the choir. Everyone that's listening to this podcast already knows this But my hope is to get is that like, you know 18 year old me here's this again and feels a little less scared of the world because I remember being terrified You know, you're like put out in the world and what's next so

Jonathan: we we've talked to we've talked to some of the Linux kernel developers and One of the things, one of the statements that they make is that there's like, there's this number of patches that someone has to send in to the Linux kernel, you know, on average, and they will get a job offer.

And it's, it's, it's low. It's like you send four or five or six patches into the kernel and someone will be giving you a job offer. And that's, that's always been fascinating to me. If we're not talking about the kernel though, what does that path look like? Like, how does someone go from Sending, sending a source code patch to one of your projects, to actually getting hired somewhere and making money doing it.

It seems like, you know, it's, it's, it's one of those deals where it's like you know, there's the meme, you know, work on open source dot, dot, dot profits. What fills in the dot, dot, dot there.

Sean: Yeah. So what I see as most successful is you have to build something that is Useful that is just your name. So like if you go and send patches, small typo fixes to things, like you'll never get recognized.

But one of the great example, there was this developer Garrett Graves, and he built this thing called Project Lightspeed, which was there was this protocol called FTL that Microsoft had done. For their streaming site, Mixer, our Beam. pro, and he had made it so you can do FTL out of OBS and bridge it with WebRTC.

It's probably been five years. So he was like a sophomore in college. He went and built this project Lightspeed, and he got job offers, and you know, he got like a six figure job out of it. Like you just need to go, you need to go and build something that is just yours. Like you, you need to go and like start your own project.

You need to like, Respond to users. And I think like from there, you will see success. And even if you don't see immediate financial success, you will find a personal satisfaction that you have never felt before. Like for me, I never, I was never good at anything before programming, but you know, growing up, I was like mediocre at sports.

I was didn't get good grades, but like being like being able to write code and contribute patches and stuff like that, stuff like that. Yeah. It is so great for your self esteem and self worth and happiness. So, like, I would encourage people to do it just starting with that. And, like, you'll be amazed at how much it changes your life.

So that, that's my advice. It's like, make sure to go and, like, if you're doing something, make sure that you get the credit for it. Like, I see so many open source projects where people are working hmm.

Jonathan: Yeah, that's interesting. That's some, that's some great, that's actually some great advice. I like that a

Sean: lot.

I was

Dan: just going to say that's really good life advice, actually.

Jonathan: Oh, that's, that's true. That's true. Okay. So there are two questions that we are, we are required to ask every guest. And they're, they're pretty easy unless of course you give us a boneheaded answer, which we will call you out for.

Sean: I doubt

Jonathan: that that will be the, that it will be the case.

So it's, what's your favorite scripting language and text

Sean: editor? Okay. So, the, I'll start with the text editor. I am, you know, I am I absolutely love NeoVim, and it was because when I had started I had, you know, started my first job, and I showed up, and I think I was using the IDE Genie at the time, and I was absolutely bullied.

By all of the like Unix wizards around me and they would stand over me and laugh at me. And so I was like, I just want to fit in. And so I suffered and suffered through them. And then now i've kind of stuck to it and i've become that in you like And so yeah, so every so like everything, you know i've got like vimium installed and everywhere I go now like you're kind of trained to do the The key bindings and then I would say as far as scripting languages so I have a soft spot for PHP because I had contributed to PHP a little bit.

And that was where I got my career started. I can't use Python because. The package management absolutely drives me crazy. And every time I talk to anyone that uses Python, they'll come up with an excuse and tell me, well, there's actually this new thing that fixes everything. And I'm tired of hearing that for the last 20 years.

I don't care if this whole comment section gets mad at me about this, but I can't do it anymore. No, because I would say that is my If anything, I think my bin director is full of just a bunch of bash scripts. And then like every six months or so I get tempted to try out fish because people tell me that it's so great.

And then like I, and then I go to port my like bash RC over. And it's a mess and then I, but the cool thing, I don't even have a bash RC anymore because I switched over to Nick's OS like a year or two ago and it's all this like config driven stuff. So it's just like I don't even have a bash RC like it's just a config file where I say like here's all the different things I want in my bash RC and it does it for me.

That's YAML, isn't it, I think. Yeah, yeah, it's like, it's all YAML.

Dan: It's basically YAML all the way down.

Sean: That's what I realized. It's actually not the Linux kernel anymore, it's just a bunch of YAML config files and somehow they've got it to work. Yeah. So yeah, no, I would say that's So that would be the, and hopefully I've started a few flame wars in your chat.

Jonathan: Not too bad yet. We'll see what happens when we, when we, when we go live on Hackaday and the comment section there, that's when it, that's what it sometimes gets interesting.

Sean: All right. Yes. Oh, I was going to say, and then the, the I was at a company that Everything was written in common Lisp.

And so I was also forced to use Emacs for two years. And it was super cool because they would run these long running Lisp processes and you connect to them via Slime. So when like, the process would crash, you could actually go in and you could jump to that thread and you could walk through an interactive debugger.

And like debug the thing. It was absolutely magical. And I was like sold on it. And I was like writing scheme for all my scripting and stuff like that. But then like it was totally a cult. Like once I left that company, I realized I had been completely brainwashed. It's time to go back. Get off the Kool Aid.

Yeah, get off. Get off the parens.

Jonathan: Sean, it has been an absolute delight to have you with us today, and I anticipate that once things really start landing in OBS, we'll have to have you back and I don't know, maybe do some, some live demos, actually eat the dog food for, for the, the interview that time. Thank you so much

Sean: for being here.

Thank you so much. And we do prerecorded to make it as good as possible. No, I'm excited. Yep.

Jonathan: Sounds great. All right. So Dan, have we have we converted you into using WebRTC and OBS whip and web and all of that? Are you as excited as

Sean: I am? Yeah,

Dan: definitely. I mean, I already use OBS quite a lot for various things.

I don't actually tend, so I tend to be making stuff and then streaming it out rather than interacting with people. So I haven't done a lot of the WebRTC kind of stuff as far as interaction stuff goes, but it sounds amazing. And I think, yeah, definitely, I'm definitely sold on the idea. And the idea that we'll be running each running OBS and just connecting.

Directly almost in, I don't know, hopefully the near future, not to put any pressure on, on any. Yeah, that hopefully that will, that, that sounds amazing. I can't wait for that.

Jonathan: Yeah, I I, we will definitely have to play with that. I see a lot of potential there. Yeah, great, great conversation. Great guest.

Dan, do you have anything that you want to plug before we let everybody go? Yeah,

Dan: sure. I mean, people can head to my website, which is danlynch. org. I actually blogged last week about about Floss Weekly and the great job that you're doing in reviving it and not reviving it's the wrong word and continuing it.

And so I, I hopefully could drive a few people this way and I will keep trying to do the same. So if you go to danlynch. org, you can find various podcasts and blogs and music and silly things there. So go and enjoy those. Yeah.

Jonathan: There are two bits of credit that I want to give. We do appreciate, of course, Hackaday.

Continuing the show here. And I also appreciate Twit. They, they put one final episode on the RSS feeds. Letting folks know that, that Floss Weekly continues here. That was not something they had to do. That was just in my opinion, that was a classy move. And so, thank you so much to Leo and Lisa for doing that.

You can, of course, follow all of my stuff. Most of it is at Hackaday. We've got the security column that goes live every Friday. And then if you want more, there is the Untitled Linux Show, and that is a Twit Plus, the Club Twit exclusive, so you can follow me there. Go get on Club Twit and Yeah, be part of that conversation.

So, we have coming up next week a brand new co host, actually. We're gonna introduce Jeff as a co host and get him into the rotation from time to time. But we're also talking with Jan Piet Menz about OwnTracks, which is sort of a replacement for Google Maps, mainly the timeline feature of Google Maps.

Want to be able to track where you or other people are going without uploading all of your location data to Google or, or whatever service you're using, you might be interested in own tracks. So looking forward to that and just want to say thank you. We had a great live audience today. Took a question or two from there.

Thank you guys for for joining us. And then thank you everyone on the download that, that listens. We sure do appreciate it. And Hey, we will see you next week on Floss Weekly.

Kategorier
Förekommer på
00:00 -00:00