Tech Over Tea - Joys Of Porting Factorio To Linux | Raiguard

Episode Date: July 12, 2024

Have you ever wondered why a lot of games don't get ported to Linux, well part of that might be the challenges in dealing with the platform especially when certain projects want to bend the standa...rds in weird and annoying ways. You may recall Raiguard from his blog post I covered a while back on the Factorio blog about the challenges of porting Factorio the Linux along with the struggles of supporting Wayland. ==========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========== Factorio Website: https://factorio.com/ Website: https://raiguard.me/ Github: https://github.com/raiguard Mod Page: https://mods.factorio.com/user/raiguard Twitch: https://www.twitch.tv/raiguard ==========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 Supercozman https://twitter.com/Supercozman https://www.instagram.com/supercozman_draws/ DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.

Transcript
Discussion (0)
Starting point is 00:00:00 Good morning, good day, and good evening. I'm, as always, your host, Brodie Robertson. And today, we have someone on who I'm sure is going to get me in trouble with some of the stuff that we talk about a bit later. Welcome to the show, Rygard, from the Factorio team. You may recognize him from the article that I talked about a few weeks ago where he was talking about improving support for Wayland but he's also been involved in Factorio modding that is what he did before he was working there
Starting point is 00:00:29 and if you go to his github you will find his dot files uh repo and he's very clearly a Linux user if you look at some of the applications he has in the dot files repo so welcome to the show oh thank you for having me it's a pleasure to be here. Absolute pleasure to have you. So I guess if you want to just explain more about your background, anything that I might have skipped over there, if you feel like that was a reasonable enough
Starting point is 00:00:56 like base explanation. Yeah. I mean, my name is Caleb, otherwise known as Redguard. I've been working for the Factorio team for just a bit over a year now. I'm primarily focused on the Linux supportio team for just a bit over a year now. I primarily focus on the Linux support as well as the core engine development. Okay, fair enough. So I guess
Starting point is 00:01:14 probably the best place to start is sort of how did you get yourself involved in Linux in the first place? Yeah, that's a bit of an interesting story. Everyone has their story about how they switched to Linux originally, whether it be, oh, I got tired of Microsoft's ads being pushed on me or yada yada. For me, it was a little bit different. My initial drive into Linux was actually because I wanted to use the Catcoon text editor. Have you heard of Catcoon before?
Starting point is 00:01:42 Yes, I have. I had planned to do a video on that ages back, but I don't think i've ever got around to it yeah you should it's it's an interesting editor um it does not support windows because it relies on a bunch of unix and posix specific things uh specifically posix it requires a posix environment to work because of the way it's designed and windows is not a posix environment so i yeah i switched to linux because of that what did you when did that happen it happened uh oh gosh uh 2020 yeah 2020 2020 okay were you aware of linux before that and just hadn't tried it out? Or was it like you were just discovering it then? I was aware of Linux before that.
Starting point is 00:02:30 I didn't want to use it because I thought I wanted to play games. But as it turns out, I don't play many PC games. You just make mods and make games instead. Yeah, well, the thing with me is I tend to get hyper focused on one thing at a time when i was a teenager it was minecraft and then when i was 17 i found factorio and it's been a love love relationship ever since so what was the uh the first distro that you actually swapped to the first one i tried was zorin os because it looked nice. It's based on Ubuntu. But that didn't last for very long. I eventually switched to Manjaro
Starting point is 00:03:08 because I also thought it looked cool. And then the first time Manjaro broke on me, I switched to Arch. And only recently did I switch away from Arch to Fedora. Okay, so is it Fedora Gnome, Fedora KDE? What do you want? It's Fedora Gome uh because i like
Starting point is 00:03:26 gnome's built-in apps more like they're cleaner but i'm actually considering switching to all the kde ones just because gnome so well not yeah yeah i i we're definitely gonna get more into that a bit later but i do want to say that i do like the polish that you know has i i think their app ux is really nice and i think the desktop is really well polished it's the problem is the the stuff that's like not present that is the issue precisely i love the way i love the theme that they have going on uh but i don't like how restrictive it is so like I use Sway myself and the nomaps kind of there's a lot of jank around that that I have I have to like have a script that imports all the gtk settings because it doesn't work properly stuff like that so you mentioned that you swapped because of
Starting point is 00:04:17 cocoon how did you even become aware of that application then if you were a windows user was it like a random YouTube video you saw? I think it was a... Shoot, what's his name? I can't remember the guy's name. There was a YouTube video I saw about Catcoon. I feel bad for him. Oh, DistroTube. Oh, okay. DistroTube, four years
Starting point is 00:04:40 ago, made... Oh, yeah, I guess that lines up. Four years ago, he made a video about Catcoon. And I'd been interested in Linux for a while, but I really wanted to try this years ago made oh yeah i guess that lines up four years ago he made a video about cacoon and i'd been interested in linux for a while but i really wanted to try this weird text editor so i said well may as well jump ship well on that note then are you actually still using cacoon or do you use something else every day okay i use it for work hmm i i think you were the first cacoon user i've actually run across there's not many of us, the Discord server has like 200 people
Starting point is 00:05:08 in it what actually sold you on that then? I kind of want to hear more about this text editor the tagline of it is it's Vim but backwards, so in Vim you have C-I-W for change inside word or change around word, yada yada, you have the
Starting point is 00:05:24 verb and then noun. Catcoon is the other way around. You have the noun and then verb. So you can essentially think of it as Vim, but always in visual mode. So instead of CIW, you do alt I W C. Okay. Okay. And what that allows you to do is it allows you to refine your selection before you commit to changing something so for example you can select the whole document then you can press s which uh selects sub selections within your selection so you can type like s and then search for all occurrences of the the word and then you hit enter and then you can change those but if that's not
Starting point is 00:06:00 exactly what you wanted you can undo your selection and do something else and it's all very visual and interactive so what sort of language interaction like tooling exists around cacoon because i know like vim's been really developed for a long time you can get a lot of nice things working but i don't actually know what the ecosystem around cacoon is like the cacoon ecosystem is not nearly as big as you might imagine. It's very niche. There is a very well-made LSP integration, which is pretty much all I need. So I use the Kaccoon, I use the LSP. There's also a bunch of other things. If you've heard of the Primogen's Harpoon plugin for Neovin, I made a Kaccoon version
Starting point is 00:06:42 of that because I really liked how it worked and I wanted it for myself but other than that it's usually just it's usually the plain experience for me what does that that plugin do because I've not used it it allows you to pin certain files so for example if I'm adding a new entity to Factorio I can pin the entities class file then I can pin like the Lua definitions class file uh and then i can quickly switch between them using alt 1 and 2 and 3 and 4 and stuff like that so it's it just lets you pin certain buffers to a convenient hotkey so you can get back to where you were originally after you go through a long go to definition chain huh okay that's very Yeah, that does make it sound like really really simple to use because I guess Like you because I use vs code do my code stuff
Starting point is 00:07:31 I I use I use vs. I use vs code with a neo vim plug-in. So there you go. I forgive you You can I guess do similar things in vs code because it does always show like all your tabs along the top, but I guess having a very quick way to just find a hotkey to jump right back and forth actually would make that considerably easier. I've always felt like I should probably sit down and actually learn NeoVim. Like, I know the basics of it and I feel more comfortable when I'm editing in NeoVim, but I don't really use a lot of the additional functionality, and I guess that's part of the reason why I never properly sat down and used Cacoon either.
Starting point is 00:08:13 Like, I don't know. I totally get it. I see people who are really big on editors like this, or like Emacs, who have everything down to individual hotkeys and know exactly what they need to press to do every single operation and it seems more efficient. It's just a matter of, you know, getting to the point where you don't have to think about any of the syntax.
Starting point is 00:08:39 It's like, you know, when you get really familiar with a language, right, where you're like a programming language, where you're no longer looking up, what does this function mean? What does this function take as arguments? How do I use this? What is this library? What is that library? You have an innate understanding
Starting point is 00:08:54 of how all these pieces fit together and you can just hack on it and not really think about it. And I'm sure when you get an editor to that state as well, it just becomes second nature for anything you want to do. Precisely. The whole idea is to decrease the amount of friction between your brain and the code.
Starting point is 00:09:14 So in my case, the base setup is pretty good for that. But for a lot of people, they want something where, hey, I can click here to go here. And I don't fault anyone for using the tool that suits them best like i'm not gonna be one of those people who says oh you have to use catcoon everything else is garbage even though i made that joke earlier i wasn't serious about it uh use whatever is the best tool for you and if you really want to try to get into these more niche things like vim or emacs or catcoon then give it shot. How long did it take you to get comfortable with it? I had used NeoVim for a couple months before, so the idea of a modal editor wasn't new,
Starting point is 00:09:51 but it definitely took some adjusting to get used to doing everything backwards. Fortunately for Catcoon, it was designed very sensibly. Everything is very orthogonal and makes sense. There's a lot of keys that are mnemonic is the word i'm looking for and uh it's fairly consistent throughout the editor one of my main complaints with vim that led me to like wanting to try catcoon was vim is mostly mnemonic but there are a lot of things under the g key that you just have no idea what's going to happen and it makes no sense and it's just a accumulation of cruft over the last several decades of work yeah that they can't get rid of because it would break everyone well my favorite is my favorite bit of cruft with vim is the core bit of cruft hjknl people over the
Starting point is 00:10:36 years have come up with reasons why hjknl is so great you know home row and all that but the original reason for it is because of the keyboard that Vi was, uh, was initially, was it, no, before Vi, no, no, no, it was Vi, okay, yeah, Vi is the reason why the hotkeys exist, not EX or ED, yeah, so Vi was made on a keyboard where the arrow keys were an alt key on HJK and L, and that's the reason why it's there, because it made sense on that keyboard, but people are just used to that now, that is the thing that you use Vim for, you know, everyone knows Vim, HJKNL, and there's not really a reason to change it, now that people have got these other reasons around it, but I guess that makes sense with the mnemonics as well, where you have the core mnemonics that make sense,
Starting point is 00:11:26 you know, change, you know, things like that. But yeah, at some point you run out of keys to do mnemonics. So it's kind of just like you have to fit them in there wherever you can get them. Yeah, precisely. On another note, I just looked at my Catcoon configuration and I just realized it's a thousand lines long, so I guess I'm not using the vanilla after all.
Starting point is 00:11:50 There's a lot of plugins in here I forgot I had. I need to do a rewrite, I guess. Do you actually use the plugins or do you not even remember what they were? Oh no, now that I'm looking through them, I forgot that they weren't a part of the editor. Ah, okay. Like there's auto pairs auto pairs is not built into the editor but I have it oh okay yep stuff like that yes well yeah it's go ahead I was gonna say that's that's one of the reasons why
Starting point is 00:12:18 it's always I always question whether or not you should use one of these like NeoVim distributions where you know they'll include a bunch of additional plugins a bunch of different configurations by default rather than starting from something from scratch and then building up from there because if you are starting with a big distribution it can be hard to differentiate what is NeoVim or in Kakoon's case, what is Kakoon and what is something additional added to it. And there's nothing wrong with using additional things. I use plugins when I was using NeoVim fairly actively.
Starting point is 00:12:56 It's just, if you want to start modifying things, it's pretty important to know where things are actually coming from. Exactly. And like I said before, uh, use the tool that's best for you. Not the thing that you think is the coolest. I switched from arch to fedora because I was sick of setting things up from
Starting point is 00:13:15 scratch every time I wanted things to just work. That is a, you know, that's a fair enough reason. I get that. That said, I still uninstall, like I I don't uninstall GNOME, but I disable it and switch to Sway instead
Starting point is 00:13:28 because I just can't live without Sway anymore. Yeah. Okay, that's fair enough. So when did you say you got into Factorio? Factorio I got into in 2017. It was right after a pretty major alpha release. The story there is all of my older brothers, I have five of them,
Starting point is 00:13:48 were into Factorio at the time, and they were doing a LAN party for this new release, and I was looking at them and I said, this looks like a fun game. So they went and downloaded one of the DRM-free copies from our website and put it on my computer, and I joined their LAN game and played it for way
Starting point is 00:14:03 too long. That was how I got into the game game so for anyone who is unaware of what Factorio is um I guess just briefly explain it and like what what the goal is in the game for sure Factorio is a automation game it actually ended up spawning an entire genre of games uh the goal of the game is you're stranded on an alien planet and you are trying to build a rocket to escape the planet and but in order to do that rockets are very complicated you need to build a factory to be able to build the rocket so you start from scratch with raw resources and you have to keep building up technology chains and getting to the point where you can make like low density structures and plastics and then eventually get yourself into orbit i like to describe factorio as less of a game nor of a
Starting point is 00:14:48 graphical flow chart i've seen that in other places oh actually i think it was from your video that i watched because i've got the uh i've got the 2016 gameplay trailer open right now and well don't watch that one uh it was one of the ones linked on the website so that's when i clicked um what hold on what there's the 2016 one and the 2020 trailer on the home page of the website huh i guess we never updated that i'll ask someone to do that uh we have a newer one that's the same trailer but it looks better okay let's see if we can find the new one then uh this is just be trailer 2021 i think uh factorio 1.0 launch trailer uh the one right next to that uh trailer 2020 maybe that yeah i'm okay 2020 this is okay yeah it was 2020 sorry my bad no it's all good it's all good um yeah, I, I look at this game, like, this looks really cool, but I, it hurts my brain to look at it for too long. Like, I don't, I, I get it, right?
Starting point is 00:15:54 Like, if you, you're supposed to break it down into little pieces and it'll make sense, but, yeah, like, there's, there's just a lot going on one of my favorite youtube videos is a video that likens factorio to software engineering and that is a very apt comparison because factorio is like software engineering but you don't have to deal with any of the bad stuff you just get to build your factory and refactor whatever you want and there's no deadlines it's it's it's great yeah factorio teaches you software engineering seriously i think that's the video you're talking about yes i think that's the exact one where like does stuff with like spaghetti noodles and stuff it's pretty good i think it's a really cool game right like i it's it's really cool that like a whole sort of genre spawned off
Starting point is 00:16:40 of it yeah it's incredible right like i get it's not my my kind of game i think it's really cool well i mean we have a free demo so if anyone's interested in trying it out we can find it on our website maybe i'll actually sit down and properly try to learn the game at some point or i'll just i don't know if you if you value your productivity you probably shouldn't No, if you value your productivity, you probably shouldn't. I've kind of separated out my gaming time and my work time. Like I don't usually play any games during the week. It's only on the weekend that I do it.
Starting point is 00:17:19 And I guess it depends on like what you want to do with your life and all that. But for me, doing that sort of separation works. Yeah, I mean, this game is so addictive that we even have in our terms of service a line that says, we are especially not responsible if you stay up all night playing Factorio and miss your work or school deadlines. Because this game is notorious for being addictive.
Starting point is 00:17:35 I know firsthand how addictive it can be. Yeah, you got so addicted that you started getting into modding. Yeah, actually, that's a great segue to that. After two years of playing the game uh there were some things that i really didn't like about the game so i was like hey this game has a modding api let's see if i can fix some of the problems so i started modding in 2019 uh and now i've made two dozen mods because i just can't stop so i guess what what what guess what did you want to change with mods? Like what did you feel like was missing or
Starting point is 00:18:10 should have been added? Yeah, just generally what sort of mods do you have that are available? Most of my mods are quality of life and utility mods. For example, one of them is called train groups, which means when you set a schedule on a train, you can add it to a group, and any other trains in that group will get the same schedule, and any modifications will apply to all of them. That's just a quality of life feature, because you could do the same thing by copy-pasting the schedule between all your trains,
Starting point is 00:18:37 but it's a lot less convenient. So it's a really nice way to just be able to bulk do things like that. And fortunately, in the upcoming update, train groups are now part of the base game, so it's going to be available for everybody it's things like that things that make the game easier less friction uh are most of the mods that i've made right right i'm seeing things in here like uh one from three years ago better alert arrows cursor enhancements task lists uh pipe visualizer a stat gui is is is there still another stat gui in the game because that seems like a pretty uh we haven't added anything like that no you can get the you can get the uh same information
Starting point is 00:19:18 through the console like just slash evolution or something like that but this just makes it available all the time okay so yeah it's pretty much just all like making it i don't know if i'd say the easier is the correct like way i would describe but definitely less friction for sure i i do think quality of life stuff is always important um there's a i guess it'd be hard it can be hard to see what quality of life stuff is important. Like, if you're developing the game, right, you have a very deep understanding of how the game works. It's the same thing with any other software, right? You have a deep understanding of all of the intricacies of how things fit together.
Starting point is 00:20:00 So it can be kind of hard to see where the rough edges are, because you know to avoid those rough edges just innately, because, you know, you are so familiar with the code base. So it's always useful to have someone who, at that time, I guess you were outside of the development of the game, who can sort of see it from a different perspective. Yeah, for sure. That's been a really great boon for having such a good modding integration. I firmly believe that if we didn't have such a good modding API, Factorio would not be relevant
Starting point is 00:20:36 today. Because the game is fun by itself, but there's a lot of content mods that extend the replayability to practically infinite heights. There are some people I'm watching on Twitch that have games of giant mod packs that are going for a thousand plus hours on a single game. It can get quite ridiculous. Well, that's the same thing. You mentioned that you got really addicted to playing Minecraft when you were a teenager. It's the same thing with that, where there is a really good base game there, but there's only so much in the game.
Starting point is 00:21:10 And when you've played that enough times, you know, unless your entire goal is just building fancy things, and I guess, you know, the same thing applies to Vectoria, building more and more optimized supply chains. But at some point, you know, you want to do more. You want there to be a further tech tree to go down. You want there to be different routes you can take to get there. And the same thing applies to Minecraft,
Starting point is 00:21:37 where because it has such a powerful modding community and powerful modding API, it's allowed that game to really stay not just relevant but as massive as it's always been in some cases that game's bigger than it ever was oh yeah i think minecraft's the single biggest video game ever made it definitely sold the most copies but you know i don't know what their like current player count is they don't publish those numbers i don't pay attention anymore judging by i know during during covid things popped up like really high with like minecraft youtube oh yeah covid i mean covid wrecked a lot of things uh in a lot of ways that we could spend an hour talking about
Starting point is 00:22:16 that by itself but but it definitely made uh and if you existed in a digital environment for a lot of things, especially games and media, like a lot of those, because people just had a lot more free time, there were a lot more people trying things out and a lot of things just got suddenly a lot more popular. that actually was a benefit for me is I wouldn't have this job if COVID hadn't happened. Because before COVID, Wubed, the company I worked for, was not very into remote work at all. They had, I think, just one that I can recall, a person who was working remotely and everyone else was in the office. But after COVID, we realized that remote work works fine for us. So I'm able to work for them, even though they're in the czech republic and i'm in the u.s uh i wouldn't have this job if that hadn't happened so there's silver linings and everything so once you'd been modding for a while like how how did you move from that to actually working at the company that makes the game? About nine months after I started modding,
Starting point is 00:23:26 I actually applied to get access to the Factorio source code. This is a program that they offer where if someone has good enough reasons and enough interest, they can gain access to the source code and be able to contribute things. Not very many people get it because you have to have pretty good reasons. But I said, hey, I'm here. I've made these mods. I want to add more modding features so I can make better mods. May I have access to the source code? And they said yes.
Starting point is 00:23:54 So I've had access to the source code for many years before I got hired. And that was a big boon for me getting hired because I'd already interacted with pretty much everyone at the company by then. They already knew who I was. I'd already gotten familiar with the code base. So when I sent them my resume, they said, okay. Like, wait, we didn't hire you already? Yeah. That's another interesting story. My reason for applying to the company was because their Linux developer had left. There was one person that was openly the Linux guy who did all the Linux support stuff for many years, but he eventually left the company to do other things.
Starting point is 00:24:32 And so I saw there was an opening, even though there were no openings on the website, I knew that they were lacking a Linux guy and I didn't want the Linux support to go by the wayside. So that's why I sent in my application. So how long had they been without like a Linux developer? Or was it just like basically right after that guy had left? It wasn't right after.
Starting point is 00:24:51 I think they were without a Linux developer for a year, but don't quote me on that. I don't remember exactly when the previous guy left, but it was definitely in the back of my mind that whole time. I think the main reason I didn't do it immediately was because of imposter syndrome. And to be perfectly frank, I still suffer from imposter syndrome so yeah it took a little bit so during that period where they didn't have a linux developer were things starting to slide or like what was what was happening or is if there's things you can't say obviously like
Starting point is 00:25:21 yeah you can ignore that i don't know we're fine um things weren't say, obviously, you can ignore that. No, we're fine. Things weren't necessarily sliding, but as you know, Linux is going through quite a bit of a revolution in recent years with Wayland and Pipewire and all the other things that are starting to finally become good enough to use for everyone. But Factorio didn't have a dedicated guy who could go through and actually make sure all of these things were supported. So that's why I wanted wanted to do it because I have a laptop that has fractional
Starting point is 00:25:49 scaling on a screen and I couldn't play Factorio because on it without uh turning the screen scaling down because it would be blurry right right well the reason I bring up it's sliding is because like you know there is this whole issue with um dependencies when you have native applications where you need to make sure things are actually lining up correctly or things are going to start breaking and I know there are there are things like a lot of things now that are statically linked um but you know there's always going to be some additional issues that happen just because you're making a native application yeah for sure uh thankfully we've had pretty good foresight our deployment servers use a pretty ancient version of dlc so you can even run
Starting point is 00:26:36 factorio on centos if you want to uh not that that matters anymore what is the minimum linux requirement right now for factorio if you happen to know I don't know that off the top of my head, I'm sorry. Okay, let's see if we can... I can look and see what version glibc it requires though. Yeah, if you know what that is, that would give us an indication. Well, I'm just running LDD on it, so we'll see. Uh... Lib...
Starting point is 00:26:59 No, it doesn't tell me the version, sorry. I don't actually know. But right now, you can pretty much run it on anything that is reasonably up to date okay well yeah i expect a reasonably up-to-date thing to work i just wanted to know if you could run some like and also has all those dynamic dependencies right right okay yeah that well that's obviously the the biggest thing um so okay you got the job doing Linux support. And you were the Linux... You're just the Linux guy there now. So you're basically, like... How much... I do want to ask, how much control do you have
Starting point is 00:27:37 over what happens on the Linux side? I assume there's obviously somebody that's keeping an eye on what's happening, but how does this work for you? I assume there's obviously like somebody that's keeping an eye on what's happening, but like, how, like, how, how does this work for you? I pretty much have full free reign over what I do in terms of the Linux support. Obviously we do have some sort of organizational method. We have a big Trello board where we have all the tasks we need to do. And I'm expected to be working on those tasks. But one one thing i think my favorite
Starting point is 00:28:06 thing about working at this company is we're also encouraged to work on anything we see fit for the benefit of the game so for me that includes the linux support uh so i am able to dedicate time to that whenever i want basically so is linux support your main role or is that just one of your additional roles? I'd say it's one of my primary responsibilities. We don't really have roles at the company. It's a very flat structure. I'm just a game programmer and all of us programmers share that same Trello board,
Starting point is 00:28:39 but we all have our specialties. For example, if someone has an issue with Linux, it goes to me usually to if someone has an issue with linux it goes to me usually right right if someone has issue with sounds it goes to daniani someone has issues with the nintendo switch version it goes to twinson but uh overall there's not like a hey you're just doing these things it's hey do whatever we need you to do uh unless you need help with from someone else then you can ask right okay because i know in earlier posts you have discussed um like working on modding stuff as well yes i think i forgot to mention that uh i didn't mention it because i haven't been able to do that much
Starting point is 00:29:17 i've been so busy with my linux and game engine side of the programming that i haven't had much time to dedicate to the modding support uh in recent months but that is something i intend to get back to once our uh expansion pack is released oh that's cool so with the um with the whole modding sport is there like difficulty that's that was really bad for us are there difficulties with making sure it works consistently across each of the operating systems? Because I know that you guys support... There's a bunch of things you guys support now.
Starting point is 00:29:56 Obviously, the Switch version is not going to have it, but Linux, Windows, and macOS. Is there issues with making sure the mods are working consistently, or has it been abstracted out enough where it's mostly fine and doesn't need additional work? I'd say the modding API does add a lot of difficulty overall. In terms of platform support, the biggest hurdle was actually ARM versus x86. Because when you get on the low level, there's a lot of small differences.
Starting point is 00:30:25 For example, I might be getting these backwards, so correct me in the comments if I'm wrong, but one of the platforms will, when you overflow an integer, will wrap around to zero. The other platform will clamp it to the max value. So because Factorio is a deterministic game, everything has to match 100% between all clients
Starting point is 00:30:47 or they get desynchronized and it kicks you out of a multiplayer game. So we had to go through a lot of pain to make sure that all of the overflow... What's the word for it? All the times overflow can happen, we check them and we apply our custom code to make it the same on all platforms.
Starting point is 00:31:06 Because otherwise you wouldn't be able to play multiplayer with someone on a different architecture. So that's all stuff handled within like the modding API itself. That's all stuff handled on the C++ side. In terms of mods, mods have no access to the platform at all. They're completely sandboxed. They only have access to the stuff that we give them
Starting point is 00:31:23 and that's all completely platform independent. Okay, okay. That was going to be my next question. I apologize. I kind of rambled on a bit. No, no, it's all good. Ramble as much as you want. It means I talk less.
Starting point is 00:31:33 I was going to ask if I was writing a mod, would I need to worry about the different platforms or am I just targeting the specific game? No, you don't need to worry about the platforms. All you need to worry about is making sure that you do the same thing on every client uh so as long as you don't do anything particularly stupid you're you're okay okay okay that makes sense i wasn't sure how like how i guess powerful and how well developed the api was but that definitely definitely uh makes things considerably easier.
Starting point is 00:32:09 Yeah, one thing that's useful to know is there's two different kinds of modding. Minecraft modding is basically a source code hack. They add their own source code on top of the Minecraft source code. Factorio's modding is an official API, so it's all within Lua scripts, and they can't access the C++ portion at all. They can't change any of that behavior. So they're completely confined to what we allow them to do. Okay. So there are certain things that are just simply not possible to interact with using mods. Exactly. I guess that makes it a lot easier to ensure the multiplayer
Starting point is 00:32:41 functions correctly then. Yes. with minecraft mods can do whatever they want so if someone writes a mod that removes everything on your hard drive then nothing you can do about it but in factorio we just don't give you access to the hard disk you can only require other lua files you can't even even read static text files or anything. That's all completely not accessible to you. Speaking of Lua, this is random tangent, but I do want to bring it up because it is cool every time I remember it.
Starting point is 00:33:13 With Super Giants games, all of their Lua scripts are just available in the directory for their game. So you can just read all of those, modify. It makes modding that game incredibly easy. Yeah, that's the same with us.
Starting point is 00:33:31 All of the Lua scripts are packaged with the game, but they're not obfuscated in any way. Okay. Does that mean including whatever comments are in there? Because that's always fun to have a read of. I don't think we have many uh actually there's one particular one we have a we have a utility function in the core lua library that uh has no purpose so someone wrote a comment above it up somewhere that says but why
Starting point is 00:33:57 i think it's my favorite comment in the code base it's always fun to see like whatever internal discussions have been happening because they just didn't strip any of that stuff out yeah like the linux kernel is a good example of this there is a website where uh it you can search for the use of specific terms over the years and you'll see like the if you search terms like fuck or shit, like there'll be spikes at certain points. Oh, have you seen the like Half-Life source code comments video? No, I haven't. That's the watching the dwindling sanity of Half-Life developers or something like that through their source code comments.
Starting point is 00:34:40 It is an amazing video. I'll definitely have to check that one out also I just found that function I was talking about and I actually was wrong it's not a comment it's a log message so every time someone uses this function it puts into the game's log but why that's even better
Starting point is 00:35:02 it's even better there's a um what is it is it the fast yeah fast inverse square root where they've got
Starting point is 00:35:17 part of it like part of the known function is just commented out as second iteration this can be removed like why does this number exist what does this do yeah i think i remembered exactly uh tell me how close i am it's uh uh evil floating point bit hack and then what the fuck yeah uh bit level hacking and then what the fuck and then there's some weird math float i don't even know what's going on here then first iteration and second iteration this can be removed and that's commented out yep that's classic classic software
Starting point is 00:35:55 development right there yeah it's as i said it's fun to be able to see like what's going on here like it gives you a little bit of um insight into things i think a lot of people a lot of people like to take themselves a little bit too seriously right like there's all it's it's nice to have a bit of fun with it and it like yeah we're trying to make something good we're trying to make it all work but you know the people making it are people and sometimes they you know are annoyed with something sometimes they have something funny to say so it's always it's always nice to get a bit of insight into like what's going on there yeah uh that is something that i emphasized a while back as well on in our community is uh we are just people we try our best but at the end of the day,
Starting point is 00:36:46 there's only so much we can do. And sometimes we take out our frustration in our comments. So with the whole Linux support thing, when you first got started there, like what did you... You had access to the source code already obviously but had you looked at the linux support before then or were you just from that point considering okay you know what can be improved here i didn't do much snooping around before i got the job. That's actually a bit of an interesting fact is I didn't really
Starting point is 00:37:28 know that much C++ when I got this job. I learned a lot on the job. And that's part of why I still struggle with imposter syndrome. But I didn't do much snooping around the Linux code because I didn't really know how much of it worked. I didn't know what was required. The important thing is that they told me was they didn't have anybody that was willing to spend time on it. The best part about being a developer or the primary thing about being a software developer is you don't know everything. You go read the documentation and figure it out. Or you use Google or you use an AI or a combination of the above to help you with writing your code and that's a reality that a lot of people don't realize until they actually get a software development job is in university you're not allowed to use google on the job you use it all the time if you would joke
Starting point is 00:38:17 about like oh you know what would we do without stack overflow but yeah legitimately it's a very useful resource. Yes, there are certainly issues with directly copying code because of the licensing stuff, but as a like you don't have to just learn everything yourself. You can, right? You can just read
Starting point is 00:38:39 even if you're reading books, right? You're still learning from the experience of somebody else who's done that. Most people are not just going at a language and then blindly just writing things until it works. You're going to build off of what other people know, what other people have done before, and hopefully give yourself a quicker head start than the people that came before you. Yeah, precisely. For the Wayland stuff specifically, I didn't have to do much research into that because I almost immediately figured out that all we needed to do was
Starting point is 00:39:15 enable it in SDL. So fortunately for me, that was fairly easy, but I still needed to go to SDL and figure out why it wasn't just working when I built it originally. And then that led into figuring out about the Wayland protocols and that they're defined in XML files and that I had to generate things with the Wayland scanner binary and went from there. You have to piece things together. And being a platform support developer just means that you're willing to put in the time to do that and that you have the ability to test that on your own devices yeah that's a that's a really big thing where it's so you'll see a lot of a lot of games have and i don't fault developers for doing this but they'll go to some third-party developer and then outsource their Linux support. And for a very brief period of time,
Starting point is 00:40:06 they have really good, really well-working game. But because they've outsourced it and it was a one-time thing, it then, you know, slowly starts to slide a bit. They're not getting updates on the Linux side. No one's testing the Linux side. You're starting to see dependencies start to break. And eventually you're in a situation where you pay for this Linux thing to be done. And it works great if you're running on Ubuntu 12.04.
Starting point is 00:40:36 But we're on 24.04 now and everything is completely busted. Precisely. If you want to support a platform, you need to do it an ongoing support you can't just do it one and done that's not how things work even on windows we constantly have little things that break like windows 11 i don't have any specific examples because i don't work on that but i'm sure some specific things broke with windows 11 and we have to continue to update the game. Yeah, Linux is just... Because of how visible the dependencies are, I think it's a lot easier to see exactly...
Starting point is 00:41:13 The regular user is going to notice a lot of things going wrong because of how many other applications in their system are going to be affected by these issues. Whereas Windows... It's a bit more obfuscated right you install a windows update and some things change in the background what changed i don't know what changed that is something that a lot of developers have echoed that i've seen on the internet is linux to linux uh users are responsible for most of your bug reports but they also make
Starting point is 00:41:42 the best bug reports because they know exactly what their system is comprised of. Is it similar in the case of Factorio then? Yes. There's some bug reports. I actually have quite the stack of Linux bugs that I'm sitting on that I need to fix, but I need to get back to that fairly soon. But all of them are usually like,
Starting point is 00:42:03 hey, here's my distro. Here's my desktop environment here's any weird garbage glibc versions i'm using uh it's usually pretty good in fact i even have some people that give me core dumps which is really awesome which just is really nice because i can see exactly what the memory state was when it crashed yeah that's, I guess because Linux users are just more used to having to make a bug report. Most people have probably made at least a couple here and there. Even if they haven't, they have probably seen a couple and have an understanding of what, like, what sort of stuff that you would be looking for from it. I assume you guys have some sort of... I don't know what your bug reporting system looks like to the user who's reporting,
Starting point is 00:42:48 but I assume there's some sort of specific text boxes for each section you want to be filled out. Actually, no. All of our bug reports are done on our forums, and there's a bug report section, and they just create a post. And there's some bug report guidelines that they have to follow,
Starting point is 00:43:03 but there's no hard-coded template that they need to do or anything. Sometimes I wish there was, but there's not. Right. Okay. So they're just not looking at the existing bug reports, and it kind of just... Whatever happens, happens, I guess. Yeah, there's a lot of manual maintenance of that for them. That has to happen.
Starting point is 00:43:23 Yeah, and I'm sure with the Linux people, if you do ask them for additional information, it's probably a lot more of them are going to be familiar with how to get that information without having to be explicitly told as opposed to on the Windows bug reports where, again, most people just have never even considered having to add additional information
Starting point is 00:43:47 they they might get a pop-up on some piece of software where their application crashes and it's like what went wrong with the program and you're like i clicked this and it broke and that's pretty much like what you you'll get i'm sure there are i'm i'm sure there are people on the windows side who are writing good bug reports but i i can't imagine it's most of them. Yeah, I mean, Windows doesn't really help you because you get a blue screen and it says, ah, snap, something went wrong. We're generating debug files for you.
Starting point is 00:44:15 It doesn't say... Well, actually, I guess Linux doesn't either. It would just, you know, crash. But yeah, I digress. Well, at least with... I assume if Factor factor crashes on linux it is going to dump some log files somewhere yes uh it does keep it running log and we also do have automated crash uploading uh crash reporting we have an internal tool for that which some people are
Starting point is 00:44:41 not going to be happy about but it's really nice because we can see exactly when we did something stupid for example a couple months ago i made a simple bug fix in our uh current version and then we released a patch and turns out i broke something pretty major so we suddenly got a flood of like a thousand crash reports within an hour of or it wasn't that big but it was pretty big of like oh yeah we broke something we got to fix this and it gives us the stack trace obviously all of the personal information is redacted uh before it's uploaded but it's it's a really nice tool and uh i don't remember what the question was uh i was talking about uh logs yes it does keep the logs and uploads them and uh so we do get
Starting point is 00:45:29 pretty good information we also have some sort of custom stack trace generator i don't know how it works but it gives us the exact stack trace whenever a crash happens regardless of how it happened so it's pretty nice okay yeah so i guess you have a pretty good understanding of well so i guess you have a pretty good understanding of well maybe not a good understanding but a a good set of information about how to find the bug if you had a good understanding of the bug the bug probably wouldn't have been there in the first place right yeah usually with a bug report if they upload their log file or if we get it to the automated system and they give us the save file and the reproduction steps we can usually reproduce it and fix it okay yeah so i i guess the the thing one thing i did want to ask you about is um so how much experience did
Starting point is 00:46:14 you have with c++ when you actually went in there and like what what was that experience learning it basically on the job like yeah so i did have some experience via my source access before i had made some small contributions but even to this day i'm not i've never built my own project in c++ i've only worked on factorio so the other day i was actually on my twitch stream i was trying i was starting to build a uh clone of the game osu uh the rhythm game yeah i want to make a small clone of that to like learn 2d graphics and do all sorts other things and i had the task of i have to read the beatmap file which is in a zip file i have no idea how to do that in c++ so lots of stack overflow and lots of cpp reference was used because i just had no idea how to do that simple things just file io i had no
Starting point is 00:47:04 idea uh it's things like that i've been very spoiled by working on factoria because it's such was used because I just had no idea how to do that. Simple things, just file IO. I had no idea. It's things like that. I've been very spoiled by working on Factorio because it's such a well-maintained code base and there's a lot of really good conveniences in it that my experience with C++, if I had to jump to another code base, I'd take me a little bit to get up to speed. Yeah.
Starting point is 00:47:31 How are you feeling now right like are you more confident working with c++ or at least i'm confident with the basics but i'm not the thing i'm weakest at is the build system c++ well the lack of a build system is the better word for it i'm still don't really know how most of that works because i haven't had to deal with it very much so that's definitely my weakest point okay okay so with the with the wayland support like wait okay you mentioned the whole fractional scaling thing i guess we probably talk about that one so what actually was the issue with uh with scaling yeah uh on when you run something on x wayland at least on sway i don't know if this is true on kde or gnome uh if you have fractional scaling enabled and you run something in x wayland it doesn't actually scale it all it does is it blows up the window so it's at the lower resolution
Starting point is 00:48:21 as if it was 1.0 scale and it looks terrible. So the reason, the main reason I wanted to support with an Infectorio was so I could play it on my laptop at the 1.25 scale and not have it be blurry. And okay. I think that was, yeah, that was one of the things you included in the, um,
Starting point is 00:48:42 the, uh, yes. I, I, when I read that part, i didn't really understand what the issue was but now that you're explaining it that actually makes sense why that screenshot was there because maybe maybe i just didn't understand it when i read through it because you mentioned x11 on one side whale on one side and i was very i was confused about why there was like a difference quality. I probably just misread it. Yeah, it could have been better.
Starting point is 00:49:07 You can see under the screenshot that says notice how the game renders at the display's native resolution when running under Wayland. That's basically the only mention I did. There were a few things in that article that could have been better. Another misconception that a lot of people got is that we were dropping X11 support,
Starting point is 00:49:23 so I had to clarify that on Hacker News and say, no, we're not dropping x11 support you don't have to worry i guess so the wayland support was there when you got there already or was that something you added no i added that uh sdl supports wayland uh but our build system was not set up to build it with wayland support so that was my first task was to get up to build it with Wayland support. So that was my first task, was to get SDL building with Wayland support. So why did you actually feel the need to add the Wayland support instead of, you know, because most games
Starting point is 00:49:53 because most games are just running through Proton they're still using ex-Wayland even if they're running under Wayland. Why did you feel the need to actually make it natively run on Wayland? Because of the screen scaling, mostly. Okay. That's the primary reason is the screen scaling
Starting point is 00:50:09 because it just looks so bad on my laptop. Because I have a framework laptop and it has a high DPI screen. And at one point it was way too small. What is the resolution of that display? Oh, I don't know off the top of my head, but I can find out. It's pretty big. It's like almost...
Starting point is 00:50:37 It's like 1.5 times bigger than 1080p. Hold on. So like 1440p then? It is 2256 by 1504 oh i thought it has a 16 by is it 16 by 10 display it's a it's a 3 by 2 oh okay it's like 1440p but slightly bigger than that right okay okay but it's a really tiny 13 inch laptop so it's a pretty high density there yep yep yep okay that makes that makes sense and why you definitely the scaling um yeah well yeah even honestly even i wouldn't probably need the scaling at that i think anything 13 inches like 1080p is is already kind of rough
Starting point is 00:51:20 but anything more than that and yeah like if, if you get yourself, like, a 4K 13-inch laptop, like, you're just gonna run it at 4X scale. Yeah, maybe not. Oh, no, it's 2X, because it's two times each dimension and then it's four times total. I always forget that, too, but I
Starting point is 00:51:39 make a point. But, uh, yeah, it's, uh, not usable at 1.0, so I really wanted to be able to play on my laptop and considering how much like little like elements there are on the screen i guess like having that blurriness would just make it really unpleasant it wasn't unusable and the game was perfectly playable that way i'm just very particular and i want things to look pretty sure yeah if you want the game you just want the game to look how the game was perfectly playable that way. I'm just very particular and I want things to look pretty. Sure, yeah. If you want the game, you just want the game to look how the game should look
Starting point is 00:52:07 instead of looking like you're looking through like a blurry, a dirty shower screen or something. Right, yeah. And aside from that, it's also just because, you know, Wayland, whether or not people like it, Wayland is the future. So if we want to continue our ongoing Linux support, we need to support Wayland
Starting point is 00:52:26 because that's just the way Linux is going these days. Yeah, it's going in that direction. How long it's going to take? Maybe we're the tortoise instead of the hare, but it's going. Yeah, well, I'll often hear people say things like, oh, how is Wayland not ready? It's been getting developed for 15 years
Starting point is 00:52:46 but X11 started in 1984 I want to say 84 you were correct yes I keep saying every time every time I think of the year it started
Starting point is 00:53:04 literally 1984. Yeah, X started in 1984. X11 was 1987. I just Googled it. Ah, right, right, right. Okay, yes, yes, yes. So it's taken a bit of time to get here. One of the things that people take for granted nowadays with X11
Starting point is 00:53:21 is the ability to hot plug monitors because that wasn't a thing when like before I think Xorg sometime in the Xorg life I believe or maybe it was late x3d6 but in the 90s you couldn't hot plug monitors on X11 you had to plug the display in change your your config, reload Xorg, and then your display is going to work. That's incredible. And that's if you don't light your display on fire by including some weird settings that would break your CRT.
Starting point is 00:54:00 Right, yeah, because back in the good old days, when everything was a lot more manual. Yeah, you mentioned the whole source code editing with Minecraft. You don't want to have that level of control over an electronic. Yeah, hey, faster frame rate hack. Here you go. Run this script that you downloaded. Wait, there wasn't an internet yet, but run this script that I gave you on this floppy disk
Starting point is 00:54:23 and then it just catches fire yeah yeah luckily uh nowadays um you can't most of the there's like weird very weird edge cases on badly made displays where you can damage things but most things it's just gonna black screen for a bit and then be like hey you're stupid don't say don't do that setting yeah there's actually one time uh on the laptop i had before this one which was an old dell one i got from my last job uh there was a kernel bug that was introduced that made the display after i woke up from suspend on my laptop the display would flash black white and then black and then it would like flicker and do all sorts of crazy things. Turns out that
Starting point is 00:55:07 the bug was such that if you let that go on for long enough, it would kill the screen. There was something like display synchronization low level, really low level stuff was going horribly wrong and it was putting a lot of stress on the display hardware. So, yeah, I had
Starting point is 00:55:24 to roll back to a previous kernel to fix it so i didn't ask before but with your system do you have an amd or an nvidia gpu uh right now i am running an amd gpu okay and i'm will forever because nvidia on linux just no uh when i first switched to linux i had an rtx 2060 ti uh and i tried for a year like a straight year i was on x11 i tried everything under the sun could not remove screen tearing it just i could not make it work and back then nvidia and wayland just didn't work at all so i said i'm gonna buy an amd gpu because i don't want to do a screen tearing anymore and i want to go on to wayland and i just can't do that with this card so it was it was uh amd from then on yeah with the the screen tearing thing there was a i don't know
Starting point is 00:56:17 if it worked well but i think there was a way to make it happen with nvidia um amd there is explicitly a setting in x11 uh it's something like force composition pipeline yeah yeah something like that um it works at least from my experience it was working quite well uh with the amd gpu on x11 um have you guys had any like nvidia specific bug reports with uh with linux then um not the i know oh actually there were some that i can remember uh i don't have the details in front of me but there were some people who were saying hey the game won't even start and it was nvidia and wayland and i said oh you're just out of luck right now sorry it's not's not our fault. Ironically enough, we actually get more problems on AMD cards because apparently AMD's OpenGL drivers are just complete garbage.
Starting point is 00:57:12 So we get a lot of weird one-off errors that we just can't fix because the AMD's OpenGL drivers are questionable. The solution to that is to switch to Vulkan, but that's a whole thing in itself. Yeah. I don't really have any experience doing graphics development The solution to that is to switch to Vulcan, but that's a whole thing in itself. Yeah. I don't really have an experience doing graphics development at that level. I've done some, like,
Starting point is 00:57:31 basic game development stuff in Unity, but that's pretty much it. So if you guys wanted to add Vulcan support, like, what would that actually entail? I know, like, graphics isn't, like, your main thing, but if there's anything you can explain there they'll be they'll be awesome yeah so we have an abstraction over graphics backends because we support directx and opengl so we have we have an interface that abstracts over both of them and then we have implementations for each so we would
Starting point is 00:57:59 just have to write the implementation for vulkan but as you might have heard online vulkan is significantly more difficult to work with than any other graphics library. And that's because it was significantly lower level. So it would be a lot of dedicated developer time. And then we have the ongoing cost of fixing bugs and stuff. We just haven't done that yet at this point. So it's just a matter of... Well, it's not just a matter of adding it So it's just a matter of...
Starting point is 00:58:25 Well, it's not just a matter of adding it. It's also a matter of then making sure that as you add additional things, the three different backends also... I assume there's a different backend on the macOS side? No, actually macOS uses OpenGL. Okay, okay.
Starting point is 00:58:40 Even though it's going to become a problem because macOS doesn't support it anymore. Well, they haven't properly supported it for a long time, but they still have it. They still have it, but they don't update it anymore, as far as I know. So we're stuck on an old OpenGL version. Okay.
Starting point is 00:58:58 So what I was going to say there is it's not just a matter of adding it and making sure it works well. It's making sure that all of them work consistently you don't have weird graphical bugs as you add new things in right and like even though we have our good linux support the vast majority of our players on windows and they're going to be using directx so the vast majority of our development resources have gone into directx backend so the openGL backend is actually quite a bit slower than the DirectX one. So the graphics don't perform as well on Linux as they do in Windows.
Starting point is 00:59:31 But the fortunate thing is that Factorio can run on a potato. So it doesn't really make much of a practical difference. Yeah, that is a nice thing about having a fairly light art style. It's obviously... You said that, but you'd be surprised how much work goes into it. What I mean is, like, you're not trying to do hyper-realism or anything.
Starting point is 00:59:54 It's got a style that works. The problem is you just have lots of things going on. Right. Actually, just the blog post we put out last week is the first time we've used dynamic lighting in the entire game because up until now uh everything has been baked into the sprites basically i mean there's been like you have lamps and it just makes the sprites brighter
Starting point is 01:00:17 or changes their lookup tables i don't know the exact details but now we're actually using normal maps and all of the 3d lighting effects that you would see in a 3D game for our asteroids. So that was a big jump for us. That actually does sound really, really cool. Yeah, it's awesome. I had a blast reading that because I'm not very well-versed in graphics programming. It's something that I've been wanting to get into,
Starting point is 01:00:41 and I've actually started going through the Learn OpenGL book to make my first 3D game. But it's a lot of fun and it's very difficult learn open gl i don't think i've heard of that one yeah it's learn open gl.com i really recommend okay okay ah okay i okay i was just good i clicked on the book and then I realized, wait, my Amazon's logged in. Let's not show that. Are you going to show your screen?
Starting point is 01:01:13 Yeah, I was going to show the actual Amazon listing and then I stepped back away from that. There's five items in your cart. What could do that? Well, it's less that. It's more about my uh my location because it will show like where it's going to ship to it's not like the exact address but it will have like the suburb gotcha yeah i have i've not done a very good job of protecting my online presence uh at one point i released a project that had the exact coordinates of my house in it so yeah i'm kind of screwed i've moved since then but you
Starting point is 01:01:47 could easily trace where i live it's not that hard yeah the only time i've had something bad like that happen is it wasn't my fault but there was a um what do you call it like a domain seller um what are they oh where they had a data leak and yeah my luckily it was just addresses and nothing more than that but yeah there were people like hey wouldn't it be funny if we sent pizzas to brody's house like no we be normal like what are you doing that's i don't i don't understand that's that's pro-social relationship at its finest yeah yeah a little bit but hey uh i moved since then as well so it's good not a problem anymore the the one thing that was a real real dumb problem um i so i have a dot files repo as well and i accidentally committed my um stream key at one
Starting point is 01:02:48 point oops luckily the person who so there was someone who saw it and started streaming on my channel but what they streamed is a big black screen that was like hey brody your stream key is public i was like i thank you for that i'll fix that that's hilarious at least it was a at least it was a uh good samaritan yeah yeah since then if they were really a good samaritan they would have just emailed you but you would think that but hey they wanted to have a bit of fun with it anyway yeah speaking of which um my hold on i'm looking i actually think because of the way WL sunset works, which is my screen dimmer, I haven't found a way to make it use my current location.
Starting point is 01:03:30 So my approximate coordinates are actually in my dot files right now. Yep, right there. Jesus Christ. Yeah, maybe... I need to see how accurate this is. I'm not going to react to it, but... Hopefully it's your capital.
Starting point is 01:03:52 Oh, thanks, Google, for removing the minus. Oh, Google Maps can't even find it. Okay, that's neat. Sure. Okay, well, I'm not going to worry about it. Well, if it's based on your time zone it would be based on like your capital i would assume yeah probably um i just haven't found a way to make that work there's some things like there were uh what was it called there was some like geolocation interface that should work but i could never get it to run and i just gave up at
Starting point is 01:04:26 some point just hardcoded it i used to heavily use a uh a screen dimmer like back when i was on windows but i don't know i just when i swapped to linux i just never bothered to set something up and there are obviously there are things that do work on wayyland, depending on the specific backend you're using. I just didn't really care to use it for whatever reason. Yeah. I'm sorry. I'm a bit distracted by trying to figure out where this coordinate is at this point, but
Starting point is 01:04:57 I can't... Whatever. I'll do it later. I think I said it to the state capital, but I don't know. I don't know how to segue from that neither do I we've talked about Wayland there's some other things we could talk about there there's something that I wanted to talk about in the blog post that I didn't have room or time for
Starting point is 01:05:21 there's been some interesting bugs due to the way Wayland is implemented. So Wayland, when a screen or, sorry, when a window is obscured, it lowers the rate at which it can submit frames. So when your Factorio is full screen on your monitor, it's 60 frames a second, no problem. But as soon as you switch to another Sway workspace, it throttles it to 20 frames a second.
Starting point is 01:05:45 And that's only because SDL implemented a workaround to make that work. Otherwise, it would throttle it, I don't know how low it goes, like one a second. But it's for power consumption reasons. Yeah, yeah. And obviously, in our game, our game is single, well, it's not single threaded.
Starting point is 01:06:02 But the main update loop has to wait for the runner to finish before it can keep processing the rest of the game so that's caused problems if you're on a multiplayer server and you switch away from the game you'll get dropped because you start falling behind it's really annoying fortunately there is a fix in the works for that but it's taking several years and yeah it's been it's been quite a journey to wait for that fix i didn't realize that happened uh is that wait yeah it's uh i because i let me just think about what i'm trying to say um because when i i have obs open i guess I would have always had it on a secondary screen, but it would still be
Starting point is 01:06:47 visible. Huh. I know that KDE does that. I didn't know Sway did that as well. Yeah, it's a fundamental Wayland thing. Any Wayland compositor will throttle windows that you can't see. I don't know
Starting point is 01:07:04 how some get around it. I don't remember doing that, but maybe I'm misremembering. I think OBS has a separate render thread, so I think that doesn't affect them. Well, I also would have someone have a game that I tab out of and I move to a different workspace.
Starting point is 01:07:20 I don't remember Hypaline doing that, but maybe I could be misremembering. I'll have to test Hyperland. Maybe they around it but like i said there are some works or fixes in the works uh the sdl is going to get an event that will let us and that'll notify us when the window is no longer visible so i can just stop rendering altogether uh which will be a much more efficient but that's not there yet so right now if you if you run Factorio on Wayland, just don't hide it because then you'll get dropped. That's really annoying. It is very annoying.
Starting point is 01:07:51 Is that the only platform that has that issue? Yes. Okay. Yeah, there's another example we can go to as well, something that only happens on Wayland. Wayland has a fixed input buffer for every client. And when the buffer overflows, the client gets killed. So when Factorio is frozen and you move your mouse too much, the game closes.
Starting point is 01:08:20 And Factorio freezes quite a bit, especially if you place a gigantic Blueprint, the game freezes while it processes that because it's a single-threaded mostly game. And so if I'm running it on Wayland, I just have to not touch my mouse because otherwise the game will just turn off. It's really annoying.
Starting point is 01:08:39 Is there some way that can be worked around? Sorry, what? I was going to say, is there some way that can be worked around? Sorry, what? I was going to say, is there some way that can be worked around? Or is that just like a fundamental issue? It was a fundamental issue. Just like a month ago, they finally merged a change that will make the input buffer resize automatically
Starting point is 01:08:58 on the server side. I don't know if that'll fix it automatically for us because I haven't tested it yet, but I'm hoping that it will. Yeah, these are the kinds of things. Like I said, you have to keep ongoing platform support, especially with Wayland because there's a lot of issues that came up
Starting point is 01:09:20 after I added the support that I never would have expected. Well, I guess that is the one nice thing about supporting X11, because X11 is basically dead. At least that part of it doesn't really change. Yes, it's very stable. Yes, Debian's also stable. Running three-year-old dependencies is quite stable. Mm-hmm.
Starting point is 01:09:44 Like, oh, you have a version of X.Org within the last 10 years, you're fine. Actually, I think you might be right. Pretty much all that's happened is like some bug fixes. I'm sure there's been at least a couple of minor... Actually, I guess variable
Starting point is 01:10:01 refresh rate's probably been added in the last 10 years. That's probably the only major feature I can think of. I didn't even know Xorg supported that. That's cool. It does. It's jank. It doesn't work properly. I think it only works properly on a single monitor.
Starting point is 01:10:15 I mean, I can't use it either because right now on Sway, even though it supports VRR, theoretically, if you move your mouse, it hops right back up to the max refresh rate. And it's been an open bug report for years, and they just haven't fixed it because it's not a high priority huh and i don't blame them like the thing to remember especially with all the people who say oh wayland's taken 10 plus years to come out people are doing this a lot of people are doing this on their own free time yep yep so you can only expect so much yeah that being said when there are people who are actively doing things that make things worse um there are issues there uh obviously the thing i the the first thing i want to bring up is the
Starting point is 01:11:02 one that you've talked about is the client-side and server-side decoration thing. My issue with that is... They agree... Did they agree to the spec? I'm thinking of DRM leasing. They definitely didn't oppose the spec initially. And there were patch sets to get server-side decorations implemented in GNOME. And it's just...
Starting point is 01:11:26 Okay, for any... I've explained this a million times before. For anyone who hasn't heard my rant before, so client-side decorations are when the application window is responsible for drawing the decorations of the window. So that being things like the header bar, where it has your close icon, full screen, things like that. You might have the title of the window, you might have an icon for the window
Starting point is 01:11:47 depending on the desktop you're doing. Client-side decorations means that the application, every single application that wants to have those things there has to draw them itself. Whereas server-side decorations mean that the desktop is responsible for adding them. There are benefits to having server-side decorations mean that the desktop is responsible for adding them. There are benefits to having service-side decorations because it allows you to integrate things into the header bar. If you look at a lot of GNOME applications, for example,
Starting point is 01:12:13 they have their hamburger menu in the actual header bar. If you look at something like Steam, it has a custom header bar where it integrates nicely into the rest of the application. Spotify, they have a lot of their account settings in their header bar where it integrates nicely into the rest of the application. Spotify, they have a lot of their account settings in their header bar. It works, it's nice, and if developers want to have it, it's really nice to have as an option. But there are some cases where it just doesn't make sense to have to add them yourself. Good example is games.
Starting point is 01:12:45 But another good example is, let's say you are doing a Python scientific nonsense, whatever. And you want to show some sort of graph. And that graph appears in a window. You are responsible for making sure the header bar of that window is drawn. You're just trying to show a graph on the screen like that that is not at all relevant to what you're doing exactly and in our case uh when we initially came out with the wayland support the one of the first bug reports that came in and said hey i'm on wayland i'm using gnome
Starting point is 01:13:21 uh the game is not doesn't have a title bar. Please fix. And I was like, okay, well, maybe this is just some weird thing, or maybe we just need to update SDL. I don't know. But then I looked into it, and yeah, GNOME does not render service-side decorations. If your client does not provide decorations, there are none. So I got fairly annoyed by this, because I'm like, hey hey we're a video game on other platforms regardless of the implementation details i'm looking at you reddit um on other platforms we don't have to worry about it uh we just submit our game's frame buffer and the the when the windows libraries or the coco libraries they do everything for us they have
Starting point is 01:14:02 the title bar uh gnome on wayland is the only desktop environment and the only place in the world where we have to worry about this problem. And it was quite annoying because of that. Unfortunately, the fix wasn't that difficult. We just had to bring in another dependency. But the dependency also doesn't work correctly because it doesn't follow the uh gtk4 theme so yeah it's been an adventure i will say though before uh i hand it back to brody is uh i was very displeased with the amount of toxicity i saw on this on reddit especially after i uh posted this and it got spread around the news or spread around the internet. There were a lot of people who were borderline personally attacking the GNOME devs and that's never okay. I have problems with GNOME. I don't have problems with the people. Everyone is a
Starting point is 01:14:54 person. They're doing what they think is best. So please don't attack them. Yeah. I think if people take that, like if they take it way too far, right. You know, I like to be very critical of what the GNOME devs are doing, right. I think if people take that, like, they take it way too far, right? You know, I like to be very critical of what the Gnome Devs are doing, right? I think that the way they're handling this is actively detrimental to not just their desktop, but, like, application developers who are trying to support Weyland. But that does not mean you should go out of your way and, like, send them DMs and rant about... Just be a normal person. How difficult is it to just be a normal person on social media?
Starting point is 01:15:31 And it's fine to be critical of it and bring this up as an issue, and that's fine. But the second you're going to be doing personal attacks, you've crossed a line. Just stop doing that. Yeah. And I might have... I don't know.
Starting point is 01:15:52 The tone that I took in the blog post was fairly harsh. Excuse me. I even said, in their infinite wisdom, as you pointed out. I might have gotten that from you, actually. I'm not sure, though. But yeah, it's never OK to victimize. It's never OK to take things too far. So please be nice.
Starting point is 01:16:15 That being said, I do wish that GNOME would see the light. And even though it's not technically required by whatever protocol or specification is, please do service that decoration, because you are the most popular desktop environment. And every barrier there is to native Linux support for games especially is another barrier to people not making native Linux applications. We have to come together and try to make things as simple as possible. And that's not to say we should copy every bad design decision from Windows. But we have to make things as simple as possible and that's not to say we should copy every bad design decision from windows but we have to make it as seamless as possible and this is just
Starting point is 01:16:49 even though in this specific circumstance it's not that big of a deal to fix it's just one more thing yeah i don't know what the deal is with lib decor not using the um gtk theme correctly that seems like an issue on their side yeah the thing with libdecor is even though it's just one dependency, it also has its own dependencies. And with SDL, we don't have to link against libdecor because SDL links it at runtime. But for simpler applications, if you want to just draw a graph and you just want to submit your OpenGL framebuffer with your graph, but then instead you have to bring in libdecor and pangokyro and all these other things to draw the title bar. And it adds a lot of complexity.
Starting point is 01:17:32 It shifts the burden of that complexity from the desktop environment to the clients. Yeah. Where it gets also really weird, I assume that Factorial uses a relatively modern version of SDL? Yes. Our 1.1 version is a few versions outdated now, but our Master Branch,
Starting point is 01:17:52 our 2.0 version, is on the latest version. So I know someone who is developing a game in an older LTS of Unity, and that version doesn't yet have proper Wayland support developed. I think the modern version, the newest version of Unity,
Starting point is 01:18:08 I think they have experimental Weyland support. But on the solar version, if he wants to have window decorations, he's going to have to develop that outside of the engine, which is not a pleasant experience to do with Unity. It really does not want you to break out of that environment right and that is a uh the shifting the burden of maintenance on the clients is not just isolated to this incident uh there's another problem well the the problem with the input buffer overflowing that i mentioned earlier, the initial response I saw from Wayland developers is, why isn't your input
Starting point is 01:18:46 on a separate thread? That's the client's fault. And that is just, it doesn't make me angry. It just makes me frustrated because if you want Wayland to be widely used, you have to be flexible enough to allow all of the nonconforming clients to work to some degree. Of course, you don't want to be like, oh, we need to support X11 natively. I mean, X Wayland is amazing, and I'm grateful that they did that.
Starting point is 01:19:17 But things like, oh, why isn't your input on a separate thread? We can't do that because SDL doesn't support that. We would have to switch to a different low-level library and that would be a year plus worth of work. So for us, it's just not feasible. And that attitude, while I get that they're trying to avoid the pitfalls of X11, where X11 got so bad because they were doing what was beneficial for them at the time and they didn't really think about the future very much that's how we got there to where we are today wayland's taking that opposite approach but they sometimes take it too far by assuming that clients are going to be well behaved and uh it took a long time for them to finally come around to uh resizing that
Starting point is 01:20:01 input buffer because they're like oh why aren't the clients behaving yeah a common thread i see is well just write the application better like why are you doing that what is the purpose of like this functionality and that i get that question being asked but when people are developing applications for windows and Mac OS or X11, where certain things are just there and are expected to work, you can't just then say, why did you ever do that? Because Wayland is not just the small platform. It's not just Linux being the small platform. It's the small platform on the small platform it's not just Linux being the small platform it's the small platform on the small platform that is trying to dictate how the entire world
Starting point is 01:20:52 of software gets developed like a good example of this is the XDG top-level icon discussion so this is a nightmare discussion for anyone who hasn't heard about this one the idea it's it's such a basic thing you want to have a parent window that has an icon and then the child the child windows having different icons than the parent so if it's something like a one of the examples used is um libre pcb where you have your main section and then like different section i don't know pcb terminology but different sections that are focused on different parts of the pcb have their own specific icons and that's something that is just not possible under wayland and for a couple of months there was actually it was like the first month there was a lot of
Starting point is 01:21:43 discussions about well do we even want the ability for windows to be able to set different icons why would you use this what is the functionality of it are people going to abuse this feature are they going to use this to pretend like they are windows for other applications and all of these are fair questions but it doesn't change the fact that this is a method of design that has been used for a long time. And even if Wayland says this is bad and no one should ever use it, that's not going to stop anything because Windows still supports it, Mac OS still supports it, X11 still supports it. And you can't control what the rest of the world is doing
Starting point is 01:22:28 it and you can't control what the rest of the world is doing when you are the the minor the minority of the minority solution you're not like you're not internet explorer or google chrome at its absolute height where you can control what the web is going to be doing you are less than one percent of the development ecosystem. Right, and then you have like the top 1%. We're the bottom 1%. We have no say in how the wider ecosystem works. And like I said, I understand where they're coming from, but if you want Wayland to be usable on a wide scale, it has to be more flexible.
Starting point is 01:23:00 Yeah, yeah. I don't know what's going to happen with whaling because things are getting very rough especially in that that top level icon discussion repo um because there's been some like it's not just because that repo it's because of multiple years of discussions where people are just like people are getting burnt out right? Like, there's so many issues that are getting stalled. There's so many times that issues are getting rehashed. And, like, I get it, right? You know, you work five months on a protocol
Starting point is 01:23:36 and then, like, right near the end, it's, hey, let's have a discussion about the things we already talked about for five months already Let's rehash them again even though the result is gonna be exactly the same and this goes back to what we're saying right the people who are working on this are people and a lot of them are doing it in their free time and when it seems like
Starting point is 01:24:01 the work you've been doing for all of these months is about to just go up in flames because like a few people have issues that they don't want to let go of like it's it's like i i look i for one wouldn't be able to keep my cool working in this repo. I'm very glad that the people who have voting rights in Weyland are rational people who can step away when they need to step away. Yeah, instead of letting it pile up until they just hate
Starting point is 01:24:38 their own lives and just don't let anything happen. Yeah, yeah. So, I guess, okay, with the whole, the Wayland support in Factorio, we've talked about the bad things, but besides the whole fractional scaling thing and making that work, like, what else has been
Starting point is 01:24:54 has been a positive with not just supporting Linux, but supporting Wayland? I'd say uh, hmm. I don't know, the fractional scaling is pretty good but some people have said that the game feels smoother and but i actually i don't really know because i use wayland has inherent v-sync inside of it and that's there's like tearing
Starting point is 01:25:21 protocols that are now starting to go through finally that lets you get screen tearing back when you really need it uh but theoretically it uses fewer resources but it's mostly just uh the same experience if you're on a 1.0 display scale thing uh x wayland is so good that you're not going to notice half the time like all proton games right now run through X11, and you have a great experience. I'd say the upsides, the reason why I focus so much
Starting point is 01:25:54 on the negative is because the positives are a lot harder to see. You know intellectually that it's running through Wayland, and there's the new stack. That makes me happy. But for the end-user experience, on Factorio 1.1 especially, it's running through Wayland and there's like, oh, you have the new stack. And like, that makes me happy. But for the end user experience, on Factorio 1.1 especially, it's actually a detriment to your experience
Starting point is 01:26:11 in a lot of ways because of the input overflow issue and the throttling when it's not out issue. So I guess that's why I focus so much on the negative because the positives, when it's working, it's great. But there's still some glaring issues. So it's hard to keep that in mind. Yeah. The positives, then maybe not positives that are inherent to the Wayland platform. Maybe they're positives over X11, but in a lot of cases, the things that are working
Starting point is 01:26:41 well are a lot less visible, right? the things that are working well are a lot less visible right like if you're if things are good and it's working like it should be like if you know that it otherwise wouldn't be working maybe a couple months ago then yeah you can definitely like oh hey look it's working now thanks uh terran protocol for example um but other things where it just behaves like it would on other platforms. I guess that's the, it's not a, a like exciting selling point, but like the best selling point is it just works the way that it should be
Starting point is 01:27:15 working. It just works. Yeah. Uh, that pretty much sums it up. Yeah. It's, I had a point and then I forgot it.
Starting point is 01:27:25 So now I'm stalling. So with the whole tearing support thing, what is your personal thoughts on having tearing there? Because the discussion there was really weird where initially developers were like, why would you want tearing? Like the whole point of this is perfect frames. Like, you don't, nobody wants tearing.
Starting point is 01:27:47 Like, what's the point of that? But I had been a supporter of the protocol from the start, and I'm very glad that it actually got merged. And I think the coolest thing about that discussion is Simon Sir was the first one who commented on that, being like, I don't understand why anybody would ever want this. but he was also the first person who ended up getting it implemented yeah i've had a pretty good experience overall with the source hut guys uh like i use sway that's that's circumference wayland compositor uh and i had used actually used sourceUp for a while and I liked my experience
Starting point is 01:28:25 with there but I like the tearing protocol because most of the time you're right like most people aren't going to notice a couple milliseconds but I play osu! I'm not like super high in the ranks or anything but I play it at a high enough
Starting point is 01:28:41 level to be able to tell when the vsync is causing lag so i've been really looking forward to the tearing protocol because it will get rid of that much more latency from where my cursor actually is to where i see it and especially when you get higher into that game it can make an extreme amount of difference especially when you have like a 60 hertz monitor 16 milliseconds is a long time. Especially if it's a 60 Hertz monitor for sure. Yeah.
Starting point is 01:29:08 Like I have a 144 Hertz ultra wide that I'm using here, but I play osu! on my laptop sometimes. And I have to switch to i3 for that because the, the, the latency on sway is just too high. Yeah. I guess with like the regular desktop stuff, right?
Starting point is 01:29:24 I think that's the, I think this is a big, a big problem with a lot of the um the wayland discussion it's a problem and i i get how it happens right the people who are developing wayland a lot of them are not like the regular linux users and that that makes sense because they're spending all of their time writing C++ code and writing XML files. Like, it makes sense that you are a very, very, I guess,
Starting point is 01:29:53 how would you say it, like, deep into the Linux ecosystem. This is why a lot of, like, Fedora, for example, they swapped default Wayland back in... God, like, 2017, I want to say. Maybe even earlier. How long ago?
Starting point is 01:30:09 Yeah, on the Gnome side on AMD GPUs. Yeah, they swapped a long, long time back. And back then, you couldn't screen capture. Like, there was no screen capture support at all. There was a lot of other things that were broken. And just, it was not usable for a regular user let alone the nvidia stuff where nvidia back then i don't think you could do gpu acceleration on x wayland like gaming was impossible uh i mean that only recently landed yeah acceleration was my land i don't remember
Starting point is 01:30:38 how long ago it was but it's definitely relatively recent uh maybe in the past couple of years i thought it was the past couple months months, but I could be wrong. No, no, definitely, definitely longer than that. Oh, no, I'm thinking, okay, no, I'm wrong. You're right. Explicit sync is the past couple of months. Yeah, that's probably what I'm thinking of, but I thought it was also the hardware acceleration
Starting point is 01:30:55 in general in X-Wayland. Yeah, no, it's definitely, you might be thinking of something else, but it definitely wasn't there back in 2017. And obviously I use AMD, so I don't actually know what the problems are. Yeah, that's fair. I do as well. It just works for me.
Starting point is 01:31:09 Yeah, yeah. I do as well, but I still like to keep an eye on what's going on. But when that swap was made, it was not ready. It was not ready at all. But if you're a developer and your entire day consists of opening up element to look at matrix opening up a browser and opening up a text editor wayland worked perfectly there was no issue at all but yeah i mean for the users like it was a little rougher back then yeah and i mean linux i mean hopefully especially with the windows co-pilot garbage that happened
Starting point is 01:31:46 recently uh we're probably going to see an influx of linux users and so the requirements that people have for wayland to be usable for them is going to go up like for me i the lack of global hotkeys is still really annoying for me because i only have one monitor so whenever i want to stream i have to have obsBS on my screen. In order to switch scenes and stuff. It's just not a good experience. There are workarounds for that. Like the way that I do it on KDE is there's a thing called the Legacy X11 app support.
Starting point is 01:32:16 Which just lets you pass in your keys directly to X-Wayland applications. And I run OBS through X-Wayland. And it just does the thing i suppose if it's using pipewire it would work just fine so what do you mean for screen sharing i mean oh screen sharing yeah yeah that's gonna work um but the global hotkeys i guess a there are some some workarounds you can do there is the um obs web socket cli so you could use that and then bind sway hotkeys to uh web socket commands i actually did that last week as an experiment and it works but it feels bad okay yeah um another option is there's a android app called obs blade which is also controlling over WebSockets, but is done from an external device.
Starting point is 01:33:06 Oh, that's cool. I've been meaning to do a video on that for a long, long time, but yeah, the OBS WebSocket API is gross. There's a lot of things where I just the app so OBS Blade, it has
Starting point is 01:33:21 a section of things that works, and then it has an advanced section where it's just a list of other like things that you can call. And it's like, I don't know what any of this stuff does using this may break OBS. That's hilarious. Yeah. I, uh,
Starting point is 01:33:37 I'm hoping that the global shortcuts portal lands sometime within my lifetime. That'd be nice. The portal's weird because it's there upstream, and I think KDE has their portal implementation. GNOME doesn't yet. But we also just don't have any applications that are using the portal or expecting the portal. So you're in this weird chicken and egg situation
Starting point is 01:34:03 where you don't have the desktops adding it because nothing wants to use it but you don't have anything wanting to use it because the desktops haven't added it right and like in the grand scheme of things it's compared to other things it's not a huge priority so it's just going to take a while it is a big deal in the case of screen readers, unless they decide to add in some sort of another API for screen readers. Right. But yeah, that's the main issue. When it comes to things like push to talk in Discord working or hotkeys in OBS, like, yeah, it's annoying,
Starting point is 01:34:38 but it's not a major, major deal. But I think the accessibility argument is a lot bigger of a selling point for most people yeah i only recently found out that the accessibility situation in wayland is garbage uh i don't have to worry about that thankfully because i have two arms and functioning eyes and ears but uh uh for people who don't like it's just their lives are terrible on wayland right now yeah the accessibility stuff is a big part of the reason why Gnome hasn't actually dropped their X11 session completely.
Starting point is 01:35:11 They've made it not the default, but it's still sticking around in a big part because of that. Because if they drop it, like, you are effectively just dropping all of those people. Right. And there's only so much you can do fundamentally because correct me if i'm wrong uh excuse me as far as i'm aware the x11 protocol has things like draw a text and draw a box whereas wayland you're just submitting frame buffers like the wayland compositor doesn't really know what the content of the application is it just knows hey here's some pixels display them please so it's actually
Starting point is 01:35:50 it might end up being that applications have to implement accessibility features and not have it be a part of the compositor which is going to be it's never going to happen to be honest like there's always going to be applications that just won't do it. Yeah. Especially video games and stuff. Yeah. Well, there's also the whole issue with non-Latin text. Where if you want to do, like, Japanese input or Korean input on Wayland, it does work. But it's very flaky between toolkits. Where certain... I think GNOME only supports IBUS, so if you
Starting point is 01:36:26 want to use anything else, then um... Yeah, you just can't type. So it's not just accessibility in that sense, it's accessibility for people who don't want to use their system in English, or can't use their system in English.
Starting point is 01:36:44 Yeah. It's a big problem. And fortunately, there are people working on accessibility in Wayland, but as always, it's a slow process. Yeah, a lot of the accessibility stuff on Linux was funded by Sun back in the early 2000s. And it sort of just stayed in that state for a long time. It's been kind of hacked on a long time. It just, it's been like, you know, kind of hacked on a little bit here and there.
Starting point is 01:37:07 But ever since that point, it's never had a big dedicated development effort behind it because like accessibility is very important, but it's also a, it's important for a small group of people, right? Like a thing that's going to affect a lot more people is getting, I don't know, screen tearing support done or getting just, like, these basic, like, global hotkeys, right?
Starting point is 01:37:34 So it's super important for a small group, but it's not, in the grand scheme of the desktop, a big focus. Right, yeah. Because within our minority of linux users the people who need accessibility features are an even smaller minority yeah and no matter how uh virtuous your intentions are you only have so many hours and so many brain cells yeah so uh like you have to allocate resources yeah that's that's a big problem with pretty much anything that you want to do like there's always especially because as we've said like most people in linux are volunteers and you know maybe you have it maybe you're in a lucky position where you have a job
Starting point is 01:38:15 where you can work on open source but that's just not that many people and even then those people generally being paid for a specific task they They are being paid as a GNOME developer to work on graphics support, they're being paid to work on a distro, they're being paid to work on the Linux kernel, they're not being paid just to make random commits to random things. A lot of those people do make commits to other things as well, but like it is... it's a difficult thing to solve because ultimately they are going to end up still doing stuff in their free time and there's only so much free time sadly it would be nice if we all had multiple lives we could live at the same time and do a bunch more work but
Starting point is 01:38:58 it doesn't happen yeah i've felt that because i i have many Factorio mods and I have several other open source projects for example I'm writing a Lua language server because the ones that exist right now are just not good enough but that project is taking over I've been sitting on it doing almost nothing for like 8 months or 9 months, I just recently started working on the type system again because I only have so many brain cells
Starting point is 01:39:26 I can allocate to programming in a day. And now that I have a full-time job where I'm working on a complicated C++ code base, like two plus million lines, once I'm done working, the last thing I want to do is work more. Right. So my amount of anime watching
Starting point is 01:39:43 has gone significantly up in the last year well you know what let's go let's go completely um completely side tangent then what are you actually watching then uh right now i'm watching well right now i'm uh staying current on demon slayer and konosuba uh my favorite show is free run i'm a basic guy. I like the top rated show on my anime list. It's great. It's so good. I'm not like super into I'm not like a super niche weeb, but I like a lot of the mainstream shows, although I still haven't watched Chainsaw
Starting point is 01:40:15 Man or Jujutsu Kaisen. How did those ones skip your I don't know. I watched the first season of Jujutsu Kaisen and it was fun okay okay especially like i'm not gonna be like one of those people who say oh you have to boycott things because of their working conditions but like i i already wasn't that interested in jiu-jitsu kaisen season two and then when i heard about the hellish working conditions they went through i'm just like no i'm just not gonna watch it that's fair and then chainsaw man i just i don't know i just never got around to it yeah i i i'm watching all of that and a lot more um yeah i like your figure collection i probably
Starting point is 01:40:55 should yeah i've got a couple of things back a couple of things back there um yeah i probably Um, yeah, I probably should watch less, but I want to like my, my next, um, my next programming goal is I want to, I want to start learning Rust. I've been like, so Rust is weird for me because I've known about Rust and I've been talking to people about Rust since the Rust beta. There were people who were selling me on it back then, like, this is going to change the way people do development. It's going to become such a big language this is when nobody was using rust um and now you know rust is like google has adopted it for android development like in like in their kernel level stuff um there is a bunch of other companies that are adopting it now we
Starting point is 01:41:41 have cosmic coming out which is a full rust based desktop which is just not something that was possible that long ago on on linux because system 76 is a big part of the reason why there's even developed rust gui tooling like it existed before but if you look at iced they are like a lot of the System76 guys are now like top contributors on that project. Like they have brought that ecosystem so far forward. So you were a Rust shill before it was cool. I wasn't a Rust shill. I was just aware of it. You know, I was like you, uh, I, I knew about Linux way back when, and I just hadn't, hadn't ever messed around with it. Right it right yeah i actually used rust for a year uh for a lot of my side projects well two of them uh but i ended up dropping it in the end because
Starting point is 01:42:31 uh the limitations were bothering me and my development productivity was too low and people will tell me that that's a skill issue and they're right i just i don't like rust very much but everyone is different yeah Yeah, that's true. Well, going back to C++, how do you feel about C++? Not just your experience with it, because we touched on that before, but how do you actually feel about the language itself?
Starting point is 01:42:59 I feel like if you stick to the same subset of it that actually makes sense, like, oh, hey, you can have classes. Oh, hey, you can overload some methods. It's actually a really nice language to work with like i can express what i want to do in a concise way a lot of the time and uh there are some things like the error messages are horrible like it took me a long time to figure out that there's a specific one i'm thinking of where uh the error message is something like cannot uh's no implicit copy constructor for this thing. But the actual solution is to just dereference it.
Starting point is 01:43:36 Or no, the actual solution is to put const in front of it. Because that's a const copy constructor, but not a non-const copy constructor. It's just things like that. copy constructor but not a non-const copy constructor uh it's just things like that uh but if you stick to the same subset of the language i feel like it's not that bad until you have to actually build your program and then it's just terrible all around so yeah i am i've gotten a lot better at it over the last year so what is your your background programming actually like because obviously you did the vectorio modding but did you have experience doing any coding before that or what was it like actually the majority of my
Starting point is 01:44:12 experiences in lua okay before i got into linux i made uh rainmeter skins uh for windows a rain meter is like a desktop customization thing where you can get skins and uh you can put them on your desktop i made a suite for that called modern gadgets you can actually still find it on my github but it's archived now but it was fairly popular and uh the skin the skins themselves are ini files but you also can use lua scripts to do fancier things so that was my initial foray into real programming my experience up to then being Scratch. So I went from Scratch to Lua for Rainmure skins. Then I graduated to Lua for Factorio modding.
Starting point is 01:44:52 And then I did Rust. And now I'm doing Rust and Go and a little bit of Python. Although I don't really like Python. But mainly C++ now. So you learned to program in Scratch then? Yes. Okay. when was that uh that was around 2009 so uh that was back when scratch was still a thing you had to install on your computer you had to download the scratch editor to be able to make scratch programs uh that's where i learned things like if statements and uh well it was, it was called forever if, but, uh, four loops and things like that.
Starting point is 01:45:28 Uh, and then my mind exploded when scratch 3.0 came out and you could define custom blocks that do things, which is just functions. Uh, that was amazing. Uh, but that's what got me into programming. And I actually made some pretty stuff. I'm pretty proud of on scratch. Uh, yeah, it's, it's it's fun it's i recommend scratch if you will have kids that are interested in computers give that give them scratch like
Starting point is 01:45:52 expose them to it because it is a really great learning resource for programming for kids especially i was completely unaware of things like scratch when i first started programming it was definitely out because i would have been what like 12 something like that 12 11 or 12 um but i my first experience with programming was a um a thing called greenfoot so i'd say it is a java uh game library toolkit sort of thing um i was lucky enough to have in my high school a programming class and we were using this to do our game development um now the funny thing about it is the teacher who was running the class he he was not a very experienced programmer. He just wanted to run the class,
Starting point is 01:46:47 but he was reading the textbook, basically a chapter ahead of us for each class. So whatever, so I came across like this thing called an enum. And I was like, hey, how do enums work? And he was like, I don't know what that is. That's hilarious. Yeah, I didn't have, well, actually, I did't know what that is. That's hilarious. Yeah, I didn't have... Well, actually, I did have one programming class in high school.
Starting point is 01:47:10 I forgot about that, actually, where we used Java. And I was the top of that class because I'd already been doing Scratch for so long. Whereas my classmates were struggling with if statements, I was like, oh, these are easy because Scratch had already taught me how they work. That's why I really recommend Scratch because you don't have to worry about syntax you just drag and drop so once you figure out how like if statements and for loops work then all you need to do is translate it to the text representation of the language that you're using and that's a
Starting point is 01:47:38 much smaller step than learning the fundamentals of how programming works. That's why Scratch is so beneficial. Yeah, I kind of wish I had known about it when I was younger and before I had gone to high school because I probably would have really liked it then. Because I always liked the idea of programming. I didn't know... I think the problem is knowing how to start, knowing what to start with.
Starting point is 01:48:06 I know there's going to be someone out there being like, I started programming with C. Yeah. Like, yeah, I don't care. You guys are spoiled. I started in assembly. Oh, God. Yeah.
Starting point is 01:48:21 Scratch is so good that even CS50, the Harvard course, starts them on Scratch for one week before they go into C. So, like, they teach them C, but they actually start them on Scratch for a week first so that they can learn the very basic fundamentals. Huh. That's probably a really good idea, then. Huh. Yeah, it's incredible.
Starting point is 01:48:42 Like, I'm, like, being a shill for Scratch. It's so good. I guess it looks like a kid's toy, so it's, like, you know i'm like being a shill for scratch it's so good i guess it looks like a kid's toy so it's like you know i mean it is well yeah it is but it's it's a kid's toy that has like a a really good like it's a really useful learning tool i guess and i guess if you want to know like what's possible with it like go to the Scratch website, and they have a lot of really cool stuff just being shown off on their homepage. Yeah, I mean, people make some pretty incredible things. The most incredible thing I made
Starting point is 01:49:15 was I made a little simulator where there were these little people, or these little robots that were eating sludge, and they just randomly wandered through this area and ate sludge until it was all gone. I was really proud of that. But the people make full-on some people even made 3d games but the most impressive one i ever saw was someone made a fully functional platformer like with a scrolling stage and everything it was it was truly amazing it's called scratch napped like that was like that just blew my mind when i was a teenager it was like holy moly how did
Starting point is 01:49:46 not only how does this work in general but how do they do it in scratch like it's incredible yeah and of course you wouldn't be surprised but there are multiple people who have written doom in scratch because of course oh yeah of course i think that's that's that's super cool like obviously that's not the intention of it. And that's people who are just actually really good at programming who are like, I just want to go back and use it. Um, but yeah, if you, I guess, yeah, if you, if you want to get started, it's probably, there's probably worse ways to get started, right? Like I know a lot of people who got started on Python. I know people have gotten started on c
Starting point is 01:50:25 but i guess if you want to just ignore i guess the syntax is probably the part that's probably relatively scary to a lot of people like if you look at c plus plus like what like or like c right what is a a what what is a reference and what is a pointer like why is there an asterisk here like what is that supposed to mean? Like, it's not... It makes sense if you understand the language, but when you're getting started, I guess that syntax can be kind of a barrier to entry. Java is really bad for this as well.
Starting point is 01:50:58 Like, Java is very, very wordy with a lot of stuff. Like, it has libraries upon libraries upon libraries just for basic things like system.out.println just to do a printing a string and yeah yeah i mean it's better than c++ where you have to do std colon colon c out left bracket left bracket your string left bracket left bracket std and line just to print something. Yeah, anytime there's a, I look at a C++ tutorial, I don't think anyone actually explains what that is. They're just like, oh, just ignore that. This is just how we do it.
Starting point is 01:51:31 Just don't think about it for now. It's like in a lot of languages, there's this really dumb metric where like how small is the hello world program? In C++, it's like one, two, two lines minimum. Because you have to import Iostream first, which has to be its own line. And then you can do your main function and stdc, yada, yada.
Starting point is 01:51:54 Whereas in C, it's one line, because you can just do int main. And then in your body, you just printf. In Python, it's just print. In Scratch, it's just say. It's a really dumb metric, but it's kind of interesting to think about and then there's assembly where it's like okay well good luck yeah we're all spoiled we have functions although i guess assembly has routines but i don't really know much about assembly so yeah that would be a fun thing to play around with at some point it's it's not going to be like a productive use of my time i'm never going to write assembly code
Starting point is 01:52:28 for anything actually useful but it would be nice to go and actually have a a core understanding of how that stuff fits together oh yeah like one series i highly recommend is ben eater uh he made an 8-bit breadboard computer from scratch uh including programming all of the opcodes and stuff by programming them by plugging in wires. It is incredibly educational about how computers actually work at a fundamental level. I highly recommend it.
Starting point is 01:52:56 I will definitely check that out if I have some time. Yeah, and the reason I brought that up is because he sells a kit where you can build your own, and I really want to do that, but i just haven't gotten around to it because there's so many things i want to do and so many brain cells only so many brain cells like i said before so much to do so little time much to do yeah only 24 hours in a day it's not enough yeah that's uh you know well there are you know we you're aware of leap seconds technically is a
Starting point is 01:53:26 little bit more depending on hey we also have the daylight savings so sometimes my sometimes my days are an hour shorter or an hour longer for no good reason at all so much like it made sense back when we were all farmers but now it doesn't really make sense anymore yeah yeah i guess so but like oh the the problem isn't getting getting an extra hour it's losing the hour that's the problem uh yeah uh spring forward is the worst fall back is great you get an extra hour of sleep but spring forward is terrible well i don't usually i just wake up my normal time anyways like hey it's seven o'clock instead of eight now what's going on uh oh because i don't like i have everything just automatically change so you know i don't
Starting point is 01:54:15 think about it um yeah someone will usually mention it to me like at work like hey daylight savings like oh yeah that's a thing isn't it i'm actually quite blessed in that regard too because uh like for example i'm going to prague this weekend uh for a three-week work trip and uh last year when i went i didn't have any jet lag whatsoever i somehow managed to luck out in such a way that uh i managed to line everything up perfectly that i didn't suffer from any jet lag but then recently we flew to Texas to watch the American Solar Eclipse. And when I came home, it was like maybe a two hour flight and then only an hour of time difference. But I was completely destroyed.
Starting point is 01:54:55 Like my body was not happy for several days after that. So, yeah, it's really it's really fascinating how different people can be. And especially even the same people can be and especially even the same person can be different in different circumstances when it comes to your sleep yeah i'm in australia so if i go to america it's gonna be like a 15 16 hour flight but because of my time zone it's gonna be let's say i leave i left like 10 aam, it'll be like 12pm by the time I get there. So things would just not make any sense. I mean, you could line that up by sleeping on the airplane, but if you're someone
Starting point is 01:55:36 who can't sleep on the airplane then you're just hosed. Yeah. Yeah. I do want to go to things like Fostum and Gwadek and things like that at some point in the future. But it's also just expensive for me to get anywhere because Australia. Right. Yeah, Australia is just so remote from everything.
Starting point is 01:55:52 Well, there's some things around you, but most of the places where tech happens are in Europe and America. Yeah, we are getting developing tech scenes here. We've had stuff in Sydney for a long time, like PyConf happens in Australia, for example, but we don't have any big Linux events here. Yeah, I do want to go to FOSDEM at some point.
Starting point is 01:56:14 That sounds like fun. I also want to go to GDC. It's all just time commitment and money commitment. Yeah, yeah. Well, on the topic of time, we are closing in on the two hour mark already geez i was a little worried when we started this like how are we gonna fill two hours but here we are yeah you know most people are kind of worried about it
Starting point is 01:56:37 and then they realize like they actually have a lot more to say and i don't know but as long as you're able to respond to questions with more than three words uh usually it goes by pretty easily yeah and i definitely have a tendency to ramble so like i wasn't even planning on talking about cocoon and then we did that for what like 20 minutes something like that yeah that's the uh that's what i was saying earlier before we started i have these topics here i don't aim to hit them if we hit them that's good um but it seems like we pretty much hit everything i wanted to actually mention by the looks of it nice go us um i think the only thing we didn't bring up was the uh the whole sway flickering with rapidly changing images but that's something that i really want to fix because
Starting point is 01:57:26 it doesn't really affect me, but it's just so annoying. Even when I'm in tiled mode on Sway, when the window first appears on the right half of my monitor, it spazzes a little bit. When I'm in Prague, I'm going to work with our graphics guy and hopefully get that fixed.
Starting point is 01:57:42 Hopefully. I don't know. There's also real quick lightning round. The SDL clipboard thing that I mentioned, like, oh, we're going to open source our software. Yeah, someone beat me to the punch and already submitted a PR for that because I was taking too long. Very nice. Yeah. At least someone got solved.
Starting point is 01:57:58 Open source is great. Doesn't matter who solves it. At least someone solved it. Yeah, at least someone's solving it. Awesome. Well, I guess let people know where they can find you, where they can find Factorio, and anything else you want to direct people to.
Starting point is 01:58:14 Yeah, you can find Factorio on factorio.com. I recommend buying from us because you get a Steam key anyway, and then we get all the money. But you can also find it on steam uh as for me uh i'm ryguard you can find me on twitch twitch.tv slash ryguard i swim i stream occasionally not very often uh especially in the next month i'm not gonna be streaming at all because i'll be away but i'd love for you to hang out if you have some free time i also have a youtube channel but i don't post anything to it you can find all of my links on my website,
Starting point is 01:58:45 rygaard.me. Awesome. Nothing else you want to mention? That's pretty much it? No, thank you so much for having me. It's been a pleasure. Absolute pleasure. As for my stuff, you know what, we're going to start with that one. I have my gaming channel.
Starting point is 01:59:01 I stream twice a week there, probably playing through Sekiro, and I might be doing a collab stream with ren we haven't decided on the game yet this is uh i have a backlog so i don't know what will be happening by the time we uh get there i have like four podcasts recorded ahead of this so i need to just stop for a little bit um yeah the main channel is brody robertson i have uh linux videos going out there six days a week check it out there's probably something on waylon probably something on various other linux related things if you're listening to the audio version of this you can find the video version on youtube at tech over t if you want to find the video uh wait if you want to
Starting point is 01:59:41 find the audio this outro is a mess if you want to find the audio, this outro is a mess. If you want to find the audio, there is an RSS feed. It's going to be on your favorite podcast platforms. Put in your favorite app and you're going to be good to go. Give it the final word. How do you want to end this? Well, keep on Linuxing and have a good time.
Starting point is 01:59:58 Awesome. See you guys later.

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