This is a human-recorded transcription for the second episode of 0intro, done by Chloe (a.k.a Column_1 on 9fans). This is not strict verbatim, as stutters are excluded, but fillers and utterances are included. Interjections from the other person are marked as {interjection}, laughter is marked as either [laughter] or [chuckle] throughout this document, and anything I absolutely could not make out is marked with a ____. Time stamps are included every once in a while, in the form [{HH:}MM:SS]. Henesy: - discuss today your history with the Plan 9 operating system and the community, and some of the software you've written for Plan 9, and fixes you've contributed. I was wondering if you could start by telling us a little bit about yourself? Sigrid: Sure, my name is Sigrid, I've been very much into 9front since I think 2012, uh, it started as uhm, mostly an interest in the Go programming language, and then, uh, I read sad news about one of the members of the cat-v community at the time on the Go mailing list, I think it was ... sl who wrote the original email. Then I learned about cat-v, I learned about 9front, and basically since then it all went downhill for me. Henesy: [laughter] Sigrid: I started writing C every day and night, since then. Henesy: Wow, how long do you think uh, it's been since you started doing that? Sigrid: Uhmmm, well I started writing C in general since 2007, yeah. Henesy: Wow, that's quite a while. Sigrid: Yeah. And specifically for Plan 9 C, I started writing since 2012, and I don't think I wrote that much of anything for Linux since that (just as well). Henesy: So you wrote a lot of Linux C before coming here, so you had a fairly long background with C do you think? Sigrid: Yeah, it was a lot of things, mainly game dev, embedded, at some point I had to touch uboot and Linux kernel itself. Henesy: Yeah. So how is Plan 9 C different for you then, do you prefer it over the way that POSIX usually does C? Cause with POSIX and even, I guess a little bit, APE in Plan 9, you get a much more close-to-the original kind of K&R style, whereas on Plan 9 it's a little different, and the libraries and interfaces are little different. How has that been for you? Has it been like a positive adjustment, are there any major differences you like or dislike? Sigrid: I think it was an extremely positive adjustment for me, when I started trying to write something in C of course it wasn't, uh graphical programs at first, I had to read a lot of manpages in order to relearn how to do things, but it was just making way more sense than whatever the hell POSIX has now, or had before, and I guess it only keeps adding more stuff. So yeah, I was liberated. Henesy: [laughter] What do you think the first major program you wrote for Plan 9, was then? Or port I suppose, is also perfectly valid. Is there like a big first project (they have a fairly long repretoire now) but was there kind of a big first "aha" or a the first comprehensive thing that really jumped out at you? Sigrid: Yeah, it was the first thing that I started writing that uh, is big enough and useful enough - sorry, it was useful back then, I guess now it's not useful at all, it was an XMPP client with rooms functionality, because back then I was heavy on XMPP, I was sitting in many channels, talking to many people, I was administrating one channel, so I kind of needed something to do whatever I was doing before, just in, uh, 9front. So that was the first project that I wrote. It was just text interface, kind of like ircrc, except it wasn't written in rc, it was written in C, but still pretty simple interface. Slash [letter] commands and stuff like that. Henesy: Yeah. I would imagine that that involves some, uh, like threading, or multi-process work, yeah? Sigrid: Yep, it did. I can't remember exactly if I used - no I had to use multiple threads, yeah. Henesy: [chuckle] What's your thoughts on uh, how threading is handled in Plan 9, I guess if you came from Go, you might've already been familiar with the way that inter-process communication and whatnot works traditionally in Plan 9 C, since they're kinda distantly related. Is that something that you write around, or do you like the CSP style, or do you use a more traditional POSIX style of concurrency. Sigrid: To be honest, I kinda hate POSIX style, in POSIX for multi-threading I would actually much more prefer for the threads to talk over some pipe or whatever, by not sharing any memory. It was always very confusing to write in POSIX style, and CSP, uhm, when I just started writing multi-threaded stuff for 9front, uhh since I already had experience with Go, I was like "ahaa, so that's where it came from". It was of course very easy to use from the get-go. Henesy: [chuckle] How long do you think you were writing Go then, before you came over to Plan 9? Go's been public since uh, don't quote me on this, roughly 2011 or so? maybe a bit earlier, 2008 even? You mentioned I think that your Plan 9 C started well after that, so were you in the Go community for quite a while? Sigrid: Uh, I was not writing anything work-related in Go at the time, I was just playing with it, writing some personal console commands, and stuff like that, small hacking, it wasn't anything serious, I was just very interested in the ways how Go routines could synchronise, send data over channels, as a first-class citizen in a programming language where you could send a channel over a channel, and do all kinds of weird stuff, that was very exciting. Henesy: Yeah! Do you do stuff like that in C ever? Sigrid: Uh sending a channel over a channel? No [laughter] Henesy: I guess I don't know if you can even do that in Plan 9 C, that's something I haven't thought about, I think Sigrid: Yeah, you can, you can send a pointer over one channel, then use that channel, so yeah you can do that. Henesy: [laughter] That's fair as well yeah, that makes sense. Do you have a maybe favorite library, program, abstraction, in Plan 9, or is it just the ubiquitous kind of file interface that made it appeal for you, or is there like an individual favorite? Sigrid: Uh, I think my favorite would be Bio, and maybe Draw as well. Henesy: Oh yeah, I think there's, I mean there's a pretty decent amount of graphical software for Plan 9, pretty sure I've seen some of the ones you've made. Did you have a good experience with Draw? /dev/draw, at least in my thought, is pretty different from the way that POSIX, or basically any kind of UI development I've expereinced, is executed. Was that a big learning curve for you? I know it was a big challenge for me. Sigrid: I don't think so, mostly because before that I was involved in embedded programming and game dev, so there I already had almost kind of the same interface, where I create an object, which is, an image, for example, then I load pixels onto that image, then I start composing one onto the other, and I was doing UI in OpenGL for some ARM embedded device before, so that was kind of like "okay, yeah, that all makes sense, it's almost the same" except the difference is that with /dev/draw, all of these things, they're piped, to let's just say a file descriptor. Henesy: Right, yeah. That makes sense. So what other graphical programs have you written for Plan 9? Sigrid: ... Henesy: It doesn't need to be a comprehensive list, do you have any kind of, uh, favorite list, for that? Sigrid: Favorite list? No, I think my favorite program, that I use the most, is uhm, I actually have no idea how I would pronounce it, I've never said it out loud, let's call it zuke {Oh yeah! Zuke}, as in zukebox or whatever. It came out of frustration over - what was that program on 9front - I think it was just called "juke", "jukebox", something like that, that never worked for me, couldn't make it play anything, I tried fixing it, I couldn't so I was like "okay, I'm just gonna write my own". [10:26] Henesy: Yeah! Is that an approach you like to take? And you have a fairly long list of things written for Plan 9, do you typically take advantage of finding something you could do with C differently, or have done differently, and just doing it? Sigrid: Totally, I chose 9front as my main operating system, I tried it for many years, unfortunately I couldn't ever do it until now, mostly because there was no vmx, now there is vmx, so I don't really care to have any linux or openbsd on real hardware anymore, I can just run it in vmx. So now I just started one by one, writing whatever programs I need in my life. Of course, it's music player and video player because that's mostly what I do, as you can imagine. Henesy: Yeah! Absolutely, that makes sense. So do you think that vmx was a big part of what allowed you to adopt 9front or even just Plan 9 in general as like a daily-driver, using it every day or using it close to every day, using it for the bulk of your development, do you think vmx was a big part of that? I know for Ori it was definitely the new ssh client is what he had pointed out. Do you think vmx was the big enabler for you? Sigrid: Yeah totally, before that I think I would agree with Ori, that ssh client - a good one - was also a really good point where I started doing stuff directly from 9front. Back then it was using drawterm, I was running 9front in kvm on the same laptop, I tried doing weird stuff like carrying around two laptops connected over ethernet when I was working at Spotify but that was not exactly the most functional way of working, I would say. Henesy: Right. That makes sense! Sigrid: Now it's vmx, so that's very easy for me, I just have one laptop for everything. Henesy: Yeah! That's pretty nice, that's a good time. Is there anything you wish that vmx did that it doesn't do right now? Sigrid: Uhh, I can say something that I wish it didn't do, that it does right now. [laughter] Henesy: [laughter] Okay? Sigrid: Using way too much CPU time on context switching back and forth, and heating the living hell out of my laptop, so I can't keep it on my lap, so I have to turn off vmx once I'm done deploying to google cloud or something like that. Henesy: Right. [laughter] Nice. That is kind of an intensive program, I think I only got vmx running once; I just don't have a lot of hardware that supports it at the moment. But, it's nice to know that it gets so much use. Do you think that - you boot up vmx every now and then, what is the usual workflow you have on Plan 9, do you use like sam, acme, or do you have a lot of supporting scripts that you rely on to automate parts of what you do? Sigrid: I use sam for writing anything, I don't use any other text editors, maybe besides vi sometimes if I'm connected using ssh, or if I happen to use something running in the virtual machine on vmx, where I don't necessarily want to use ssh. Otherwise, I don't really have that many scripts that automate anything, mostly because uhm ... I'm not very much into automation, I really like doing stuff manually. Recently I started adding more automation to my workflow, just to ease up some things that I keep doing all the time, like for example properly closing a virtual machine that just exited, so that vmx doesn't keep running and eating the memory. {Right} The script is called just vmquit {[laughter]}, run vmquit, and it quits, and that's enough for me. [15:19] Henesy: Very nice, yeah. Do you like rc a lot for scripting on Plan 9, I guess there's not a lot of options that the leave you with, but {yeah [chuckle]} [laughter] Sigrid: Yeah. Unfortunately. I think I hate it, very much, that's why I prefer to write C rather than rc, but I mean it's fine for something extremely simple, but I'm very much not into writing anything that is longer than - maybe like - 30 lines in rc. I think when it gets to that point, it's just a sign to do it with some other tool. Henesy: [laughter] Yeah. So do you write a lot of like pretty short - I don't know ballpark sub-100-200 line - C programs just floating around? Sigrid: Definitely. Henesy: Yeah, nice. That is a pretty, cozy way to go about making your day-to-day life easier. Is there any, if you don't like rc very much, scripting languages that you do like, one that you've preferred more that maybe rc could learn from, or is it just that scripting languages, as an interface aren't what you're looking for? Sigrid: I think, yeah, the latter, because I know my problem with scripting languages like rc is mostly related to error control, if there is an error, I tend to just - in the beginning of the script - tell it to fail on any error whatsoever, and that's kinda in my opinion, the best error handling you can get in a shell script. {yeah} It's not easy to do. I wrote one huge script just for fun in ... in POSIX shell, so it wasn't even bash, it was using specifically POSIX features at most, and was supposed to be portable, it was really hard to make it portable, it was a script that would take a .flac image, a cue sheet, and split it into many files, it could go recursively over a huge directory, like a music collection {wow} -- all these things, but it's huge and it's terrible, I rewrote it later in Go and it became much simpler, much faster, without any of the bugs that the shell script had. Henesy: Right. Sigrid: So I was just like "okay, I guess I won't write any shell scripts anymore". Henesy: Right. What was your experience then, with other high-level languages, kind of above C, even if C is arguably kind of high-level -- but, before Go, was there anything you used a lot like Python or something like that, and even with Go, like was there anything at the time you were exploring other than Go in terms of high-level languages? Sigrid: At the time, before I started being interested in Go - also partially the reason why I started being interested in Go - was that I was writing a lot of Erlang {Ah, sure}. And it was just a bit different from Go, not necessarily better or worse, I wouldn't say exactly if it's high-level or low-level. It is high-level in a sense that you have all these primitives like supervisors that take care of your logic being restarted properly, mailboxes - how would you call them - uhh yeah. So Erlang, then I was also interested in Haskell quite a lot, but unfortunately since I couldn't apply it practically at work, my time was very much limited with it, and I had no use with it in most of my hobby projects, because the thing that I found it most useful for is uhh, parsing, code generation, and that's kinda the only thing I was using it for. Henesy: That makes sense. Were you using Erlang at work then, did you use Go at work or anything like that? Sigrid: I used Erlang before, then I found Go, I was still using Erlang, but I started shifting towards preferring Go, and I started doing a lot of propaganda at my work, back then it was Klarna {Right}. It was probably a bad idea because the whole company was basically hiring anyone who would be able to write a single line of Erlang back then. So all Erlang programmers were hired, and not a single one I knew who was interested in Go at the time {[laughter]}. I got a few people interested but ... it didn't *Go* anywhere. Henesy: [laughter] Sigrid: [chuckle] Henesy: Yeah, it is kind of hard though, yeah, adoption is pretty difficult, I know in my job, the uh ... approach to Go is pretty distant and looked far upon -- I think right now Rust is more in their line of sight, but it's mostly C++ programmers looking to escape. So yeah Sigrid: Now I write a lot of Go, I was hired as a Java programmer, I didn't write that much Java, I just switched over to writing everything in Go, and everyone seems happy. Henesy: That's good, nice. Do you still write Go on Plan 9 pretty often? Sigrid: Uhmm no actually, I got the impression [chuckle] I got the general idea that [chuckle] writing in Go for Plan 9 is considered ... how do I put it ... {sacriledge?} yeah, it's like committing treason {[laughter]} [chuckle] It's better to write in C, so I was just writing C, since I was already comfortable with it. I was a bit surprised with the binary sizes, to be honest, so that was one of the reasons that I was not writing Go for Plan 9. Henesy: Ah, Go binary sizes on Plan 9, or just in general? Sigrid: In general. Henesy: Yeah, that makes sense. Have you interfaced with the a.out binary format at all, in the past? Sigrid: Uhm, nope? {[chuckle]} Not that I can remember. Henesy: Sure. So speaking of committing treason, you have a port called treason, do you want to talk about that and how that went? I think that's a fairly significant contribution that people have been waiting for for a long time. Sigrid: We can ... talk about it, it's mostly just a port of several libraries. Uh, for each video format, it's libvpx for vp8/vp9, dav1d4av1 format - it's the new one that eats all of your CPU, while showing the same quality of video, very useful -, another one is openH.264, obviously that's for h.264. And the rest, it's just kinda like front-end, that is called treason, it's written in C, it just uses all these libraries to decode images and just draws them on the window. Another program that is also in that treason bucket is mcfs, it stands for multimedia container filesystem, unfortunately it's not really a filesystem yet, it just dumps the data out to standard output, but that was enough for now, I will make it into a filesystem later, for now I didn't really have the reason for it. But that will need to happen for basic controls like going backwards or forwards, pausing, uh, for playing streams as well, just didn't have time to do it yet. Henesy: Yeah, yeah. How do you imagine mcfs being laid out, have you written a lot of filesystems before, or is this kinda one of the first big ones? [25:13] Sigrid: I wrote some before, I don't think the ones I wrote were made public, because I was writing them when I was working at Spotify, I was writing them as a hack week project, just to showcase how the whole system could function if Spotify would use 9p. I was trying to impress as many people as possible, but mostly it was just my teammates who would be impressed so, it didn't go further, and after that I can't really remember if I wrote any other file systems specifically that were made public. I think mcfs would be the ... {kinda first big one?} second. I mean I wrote some before, just for whatever reason, I can't remember which ones these were. I would need to open a webpage with my projects to remember that. Henesy: That's okay. Um, yeah. Do you like the filesystem advantage very much, do you take advantage of it a lot? I mean it's kinda how everything is served up, but is it something that you think works very well for you? Sigrid: Yeah I think so. I'm not exactly happy with the interface to those libraries, I think it's - I mean there are two interfaces for that, one very low-level, where you can do basically whatever you want, but you can also, by using this library, shoot yourself in the foot in so many ways. There is also a bit of a higher-level library that works with basically static filesystems, where you can define the file tree from the get-go without doing too much, and that one -- oh yeah, actually that one was the one that I used before. Henesy: 9pfile? Sigrid: Yeah yeah, I think it was easier, otherwise I use the low-level - now I remember - I used it substantially, it's the ext4 filesystem for Plan 9, with reading and writing. {Nice} That's where I used it. Henesy: Got it. That makes sense, so ... let's see ... How do you feel about lib9pfile, do you remember it very well? Cause Moody and I, a long time ago, had written a filesystem in 9pfile and we had tried to do something that 9pfile didn't want, I don't remember what it was, but we ended up breaking the interface a little bit, and ran into all sorts of refcounting errors along the way. Do you think that 9pfile works pretty well? I think there's a few other people in the community that have mixed feelings about it and prefer to just use lib9p directly. Sigrid: I think the problem with 9pfile specifically is that it's too simple, perhaps too high-level, so if you start with 9pfile, and you wrote something, and then you realize "oh I need to do this specific thing", there's just not way you can do it in 9pfile that easily. You start switching over to ... just 9p with a low-level interface and you start struggling because you're basically on you're on your own with - what was it, section five manuals? - trying to understand how 9p works in general, so you don't make mistakes, and you still keep doing them all the time Henesy: Yeah. That makes sense. It's kind of hard -- and section five is a little cryptic I think, I mean it's probably the best reference we have right now that's just fully written out, but I think it takes a few passes for someone to get everything they need out of it usually. [29:44] Sigrid: Yeah, it has a few "gotcha"'s as well, that just keeps stalking me all the time, like this one specific thing is where you're providing reading of a directory, and I keep forgetting that you might eventually receive an offset that is lower than the last one that you received, and you basically need - if you're, for example, exporting a real directory through 9p in your file server - you need to start reading the directory all the way from the beginning to reach that specific offset that the client is asking for. I think that's the issue that I face a lot, and I keep forgetting about. Henesy: [laughter] Yeah and you've put a lot of fixes out I think, for just various things. Is there any like patch that you've submitted or put in that you were really glad was able to get merged in, that you were thankful for, uh, that even you put out, is there something you remember fondly or anything like that? Sigrid: Yeah, my most favorite contribution to 9front ever is Ctrl-B for sam, you can go to command buffer by a keypress. I was very scared to push it {[laughter]}, because it's not mouse control, {right} but, I mean we already had it for windows, so- Henesy: Yeah, rio windows, yeah Sigrid: And then Ctrl-G was added, I can't remember who's patch that was, but it was also very useful. Henesy: That's nice. Do you have any - and yknow it's okay if you don't, or don't want to talk about it - but do you have any, like, fixes that you haven't provided that you feel might be too treasonous, but you use on your own time? Sigrid: Fixes? I wouldn't say so, it's mostly just treasonous theming, and stuff like that {mhm} I'm pretty sure will never be accepted in 9front, and I'm not even trying to push it, because ... I'm not sure even I'm going to use it in a few years, I might give up on that. Henesy: Yeah, I know there had been a bit of a theming effort from - oh man, I think it was Moody and Mischief? - where they made a full library for it, and a bunch of patches for various things in 9front, maybe they got merged into 9ants, I don't remember, but it was uh- Sigrid: No, I don't think so [chuckle] Henesy: Okay, yeah, oh well if the repositories somewhere on the archive, but I think they died when the mercurial repositories on bitbucket died. Sigrid: Yeah, I never used this approach, I don't think it's going to work well, because there's just too many programs and they all need to be patched, and every time they change, the patches might have to be updated. Henesy: Right, yes, this is kinda the trouble with all of that. ... Do you have any advice for someone that would want to submit fixes - or, I mean you've got a decent number already - so, if somebody wanted to kinda get started contributing back, is there any advice you'd have or any guidelines you think that are unwritten, and might be helpful to someone who can develop, and can try to fulfill either bounties or fixes, is there anything for them? Sigrid: Uhh, brace yourselves [chuckle] Henesy: [chuckle] Sigrid: I think the main point would be that whatever you do, even if you think that people won't like it, you can still do it, it doesn't matter, you can keep it as your local copy, you can share it with other people. Other people might find it useful, even though it won't be in 9front, you might think that no one will want it, then it will be merged to 9front- Henesy: [chuckle] Sigrid: I just say don't have any expectations and keep on hacking, keep on reading manual pages, and keep asking questions, however stupid you think they are. Henesy: Yeah, that's nice, I agree, I agree. I hope that people find it withing themselves to put things out even if it might not be merged. So the community - you're pretty closely involved with them, might actually follow this, just put it out and make it available as like the public grid - do you like the public grid very much? How long do you think you've been floating around that area, and is there anything you've put out on the grid, that you shared in kinda this "not necessarily intended to be merged manner", or as like a completed thing, but maybe is floating around gridspace? Sigrid: Uhh, I joined grid this year ... {mhm} ... I was putting a few patches there at some point, but now I'm mostly just talking, there are sometimes I might put a picture, something, to share it, but I don't use griddisk that much for anything. Henesy: Yeah, that's fair. Is there anything you wish was hooked up to the grid that the grid doesn't have right now? Sigrid: ... Mmm, I actually don't think so, I think the only thing that the grid is missing is *maybe* more people, and I know that some people might disagree with me - the popular vs unpopular thing - I don't know, I just think it needs more people to be there talking and collaborating. But, as it is right now, I'm extremely happy with uh, grid, and people on grid. Henesy: Right, yeah! ... I guess kinda by extension of that, is there anything you wish that Plan 9 or 9front had that it doesn't have right now? Sigrid: Hmm. ... Henesy: It doesn't even have to be practical, but- Sigrid: I think it has everything, it even has uh, how many, three browsers right now! {[laughter]} At least three, if you count the one that converts html to plain text, there is even more. Henesy: Right, so you've used the netsurf port then? Sigrid: Yeah, I started using it sinc vmx keeps my laptop hot, I'm trying now to patch netsurf, so it's easier for me to use, so yeah I'm just gonna use vmx less and less, just for deploying stuff. Henesy: What's most of what you do on Plan 9 then? Is it just writing these tools as you want them, or do you talk to people most all the time through the computer, or is there like any kind of recreational programming or activities that you partake in through Plan 9? Sigrid: Uh, I think for me specifically, 9front is mostly about talking to other people, uh, it's great, maybe just a bit of irc, not that much. Full-time job, where I write a lot of Go, in Sam, and the rest is just recreational, and therapy-style C programming, where I can get away from all the shitty technologies technologies of today's world. Henesy: Yeah, kind of a programming zen garden? Sigrid: Exactly. Henesy: Yeah, it's very nice that way. Plan 9 feels kind of like a little garden that you can step away from so much more of the software/programming world, and find a lot there. Sigrid: It's like an, uh, operating system for meditation. It doesn't have much, but it doesn't really need much. Henesy: Right, yeah exactly. So you write Go in sam, do you have like supporting programs for that, like I know for the acme Go people, they usually have a little swiss army knife toolbox of stuff to automate like compilation, or stuff like that, do you do that, or do you just use the normal go tools and the regular expression parts of sam to do the heavy lifting? Sigrid: I do just that, I use sam on its own, sam expressions to do a bit of refactoring, that's really it. I was doing the same with Java, I did have just a few scripts to ease up my work, one of the scripts was you could select an expression in a Java file, and then it would go to command buffer, and write a really small command -- the script would go through the current Java project directory, and search for that definition, where it's defined in the jump there. That was a bit helpful, but otherwise it just sam, and no other tools. Henesy: Right, that makes sense. That's pretty impressive, especially writing Java in sam, that feels -- I mean the little bit of Java I've written, I've only written a small amount of it outside of an ide -- certainly not with something like sam, that's very nice. Do you find the sam language very powerful, does it suit your needs, is there anything you wish it did or didn't do? Sigrid: Yeah, it's really powerful for me, I think it needs to be accessible outside of sam, I think the idea of having something like that where you don't necessarily write it as string commands, but maybe function calls or something, would be very useful for string processing, so it doesn't look that low-level with regex and stuff like that. And I think one thing that I'm missing in sam command language is, when you put expressions in curly brackets, those expressions must never work on the same -- they shouldn't change the text that is going to be changed by other expressions in those curly brackets or something like that. I can't really remember, but I think that's mostly the only thing that I miss. Henesy: Yeah, so sam as a library, I think that's something that's been off-and-on discussed on #cat-v for quite a while. Is that something that you'd like to see written? I mean, you expressed interest already- Sigrid: Oh yeah. Henesy: Yeah? Sigrid: Oh yeah totally. I think it would be the best thing after sliced bread. Henesy: Do you think it would be very difficult to implement, just from a distant perspective? Sigrid: Mmm, it depends, I didn't really look that much at sam command languge source code, I added a few commands myself, but I didn't explore it to full extent. I think it would be easy. Henesy: That's good Sigrid: Sorry what? Henesy: No, that's good, yeah yeah yeah. Sigrid: I think it would be easy to rip it out in some way. I don't think writing it from scratch would be the best idea, maybe it would be, but you would need to make sure that it does exactly what it does in sam, otherwise, it ... probably shouldn't be called libsam, or something. Henesy: [laughter] Sigrid: And if that library exists, then sam should just use it, and other programs could use it just as well. Henesy: Absolutely, absolutely. Sigrid: Could add it netsurf, to find all the pictures, and, I dunno, run pico on them to invert the images, or something. Henesy: That'd be pretty fun, yeah, yeah. Do you use like the ssam command ever, do you like command-line sam for scripts, or anything like that? Sigrid: I use it a bit, mostly I was using it for some kind of refactoring, but for that to be useful for me, I have to keep doing the same thing over and over again, that doesn't usually happen, usually it's pretty small commands that I will just type in sam command window itself, I won't really reuse it for streaming sam. Henesy: Right, that makes sense. Is there anything you wish sam does differently than what it does now {Oh yes}, do you dream of an editor that has like sam's language but isn't sam, or maybe better? I know Ori want's to write a new editor of some sort, probably inspired by sam. Sigrid: Yeah, I think maybe one thing that I *really* dislike about sam is the infamous scrollbar, it doesn't scroll, it just drives me insane every time. Henesy: [laughter] Sigrid: And to add to already a lot of pain, when you expect that the keys would work better when you press up and down, it's also actually I think worse than using the scrollbar, so it's just terrible. Someone please do something. Henesy: [laughter] Sigrid: Not me, someone else. Henesy: Right, right. Yeah, there's probably a reason it's stayed that way and not just been touched up quickly. Sigrid: I think everyone who actually tried to fix scrolling just ended up giving up on 9front altogether. Henesy: [laughter] Yeah, I think it was a long time ago, but I remember someone trying to do a lot of fix-ups on sam, maybe it was mischief, and just kind of giving up on sam as a whole. Maybe it wasn't, I don't remember, but it was -- yeah, I think they had a really rough time with that. Sigrid: Yeah, I can imagine that. [chuckle] Henesy: [laughter] So it's been mostly sam up until now, what's your thoughts on acme then, since it's not the preferred child, but do you just prefer sam to it, or is there anything explicitly wrong with acme, or do you just not prefer it? Sigrid: Uhh, I used acme right before sam, mostly because I saw a lot of acme screenshots, I didn't really see many of sam screenshots at the time [chuckle] {[chuckle]} so I was like "okay, that's the text editor that everyone is using", and I started using it. Then, in #cat-v I started saying "oh acme, this sucks" and they sent me that, use sam. And I didn't really like sam in the beginning, I thought it was very cumbersome, like it was just "okay you get a blue window, you get a yellow window, great. What should I do with that. Then I very much appreiciated it after my projects started growing to more than one file, where I had to use a laptop with pretty small screen resolutions, so may acme didn't really fit that much, every time I wanted to switch to a different file, I had to go through many windows, to try to find where even is this file, because ... I dunno. It was just a mess. So I tried sam, took me a while to get used to it, after acme, but yeah, it's really good, 10/10 would recommend. Henesy: [laughter] Nice, nice! Wow, so do you think that like the way Plan 9 software is written in C or otherwise, has that affected the way that you've written code outside of Plan 9, maybe at work or in Go, or anything like that, do you steal like naming conventions, or stylisms, or anything like that, is there anything you've adopted? Sigrid: Oh yeah, I basically adopted Plan 9 style in whatever I write for the outside of Plan 9 world, mostly it's also the like small wrappers that I write for network handling, like in Plan 9 it's dial, I have a dial for Linux, and many other things that I found useful, that I took out of Plan 9 and just copy-pasted in every project that I wrote in C for Linux after that. And yeah of course variable naming, function naming, the size of the source code decreased considerably because instead of using three words, for example, a few letters of every word. [chuckle] Henesy: Right [laughter] Sigrid: So yeah, my programs are much smaller than before. Henesy: Nice, when you develop outside of Plan 9 do you use like plan9port, or do you use more standard POSIX stuff, or do you have a preferred compiler or anything like that? Sigrid: Yeah, I don't use plan9port, mostly because I want the projects to be still ... changeable by people who are not specifically aware of Plan 9 interfaces, so maybe for things that are just easy to wrap into Plan 9 style interface, like dial, I will leave it as-is, without using plan9port, so I will just write my own implementation. But for everything else I use the standard POSIX interface. I think it's better to keep using whatever is standardized on the platform you're developing for, just the same way as I wouldn't really use pthread's in 9front. Henesy: Right. Sigrid: Even if it's some, like ... hmm, if I'm porting the software, I wouldn't try to replace pthread's with something completely different, I would just try to repeat the same interface, but for new software, I would never use something from the outside, but it's just personal preference, really. Henesy: Yeah, all totally valid. So then do you think that Plan 9 has affected the way that you view or interact with other software significantly? Sigrid: Yeah. I started feeling very much desperate about most of the software, so in a way you could say that Plan 9 made me ... uh ... sad? Henesy: [laughter] Okay ... Sigrid: But also happy, because I can easily write whatever I dislike or miss for 9front, and just use it. So not such a big deal for me. Henesy: Right. Since it's not a large barrier do you think it's very easy to just write a general-use or general-application piece of software on Plan 9? Sigrid: Definitely. The problem with other operating systems, is because they're so big and they have so many different ways to do the same thing, starting from audio libraries, or UI libraries ... you just get lost even before you start writing anything, you have to choose this library, or this library, every single one of them has specific issues, you might dislike one, like the other one, there is just too many things to consider, and once you start, because there are so many moving variables, it just takes an enormous amount of time to develop anything. Henesy: Right. Sigrid: Since it wasn't implemented from scratch with rethinking -- none of them -- the operating systems, POSIX interface kept adding stuff, because of that, it's really hard. In Plan 9, you have a really small set of standard libraries, a very small amount of functions in each one of them, and yeah it's really easy to just read a few manpages and start writing things, and just look at the other programs. Henesy: Right. Sigrid: The best thing about Plan 9 is that it's self-contained, so whenever you have 9front installed, you are basically, you got yourself a filesystem for which you can develop, and learn everything from, without ever connecting to the internet. You already have everything there. Henesy: That is pretty impressive, yeah. Do you find then, that just reading Plan 9 C is very uh -- do you find like the libraries are intuitive, and the C style works for you a fair bit, it seems? Sigrid: Some of the libraries -- I mean, all of the source code in 9front is a bit different, mostly because it was written at different times by different people, but most of it makes sense, looks good, is very short and understandable. And the parts that are not, well, you don't really have to read it, you can either use the API of it, or just find some other source of source for education. Henesy: Right. Do you have a favorite piece of software that you've read on Plan 9, or favorite library in the standard library, or something like that? Sigrid: Hmm ... Henesy: Either most useful, or entertaining, or horrifying, all valid options. Sigrid: I mean, I think all the horrifying stuff is external, it was, {[chuckle]} added to 9front to do stuff that 9front didn't care much to do, on it's own, or for the lack of alternatives, like Ghostscript, comes to mind, Python, mercurial, all that stuff. Otherwise, I can't really remember anything that horrible. Henesy: Yeah. That's good! Are you excited for the shift from mercurial to git, if and when it happens? Sigrid: Oh yeah, I can't wait to get rid of Python {[chuckle]}. And mercurial. I already got used to git9 quite a lot, I stopped using linux git by now, all my projects are - like, work projects - git9 usage based. And I am really scared of using mercurial, because to me it seems like one wrong move, and I have no idea what to do. Like if I accidentally make a commit, I always have to specify every single file I'm going to put into that commit, because my local tree is full of, uh, changes, everywhere. So if I forget to specify the files, it's going to be a disaster. Henesy: Yeah, I've definitely run into that before when I've tried to like build a patch, and something I just did not want is there, or if I made the mistake of making local modifications that interfere with a sysupdate later and not boxing them off into a branch or something. Yeah, nice. Is there any software that's not within the Plan 9 ecosystem that you really enjoy or admire, that -- you don't even necessarily have to wish it was in Plan 9, like some people are really fond of smalltalk, or vms, things like that? Sigrid: I think the things that I miss the most is mostly related to multimedia, so in my opinion, for me personally, it would be a decent image editor, like not as a programming language, but more as a conventional style, where I could use a drawing table, and stuff like that. And another software that I miss is software for audio editing. I don't think it exists, in any way on Plan 9. Those are two main points for me, because I do a lot of this, and a lot of that, but still there isn't that much on 9front for me. Henesy: Yeah! If you want to answer, what do you do most of your audio editing for, do you make music, or anything like that? Sigrid: I do a bit of music sometimes, but right now it's mostly recording vocals and then layering them together with a music track -- but the music I didn't write myself, just recording vocals, filtering out all the noise, making sure everything is levelled properly, removing all the clicks and pops, stretching, applying effects, all that stuff that I do is nonexistent in 9front. Henesy: Right. Is that something you'd be interested in writing? Sigrid: Oh yeah totally. I start writing one small part of it, maybe a bit unrelated, it was just drawing waveforms, I was trying to see if it would even be possible to have something like audacity for 9front, at the time, and the answer is yes totally. Drawing waveforms fast is possible, even with a drawterm over the network, it will still be very much useable. Henesy: Nice. That's exciting! I would love to see something like that. You mentioned a drawing tablet before, do you like doing digital art or anything like that? Sigrid: Uh, I wouldn't say it's art [laughter] {[chuckle]}, it's just me holding a pen, trying to do something with it, I'm not a very good drawer, but I would definitely do more of it if it would be available in some way in 9front. Right now the table that I have is working, but it has a really low resolution, so every time I move the pen, it jumps I think like four pixels, instead of just one. So I have to zoom in a lot [laughter] {[laughter]}, nad mo sure everything is levelled properly, removing all the clicks and pops, stretching, applying effects, all that stuff that I do is nonexistent in 9front. Henesy: Right. Is that something you'd be interested in writing? Sigrid: Oh yeah totally. I start writing one small part of it, maybe a bit unrelated, it was just drawing waveforms, I was trying to see if it would even be possible to have something like audacity for 9front, at the time, and the answer is yes totally. Drawing waveforms fast is possible, even with a drawterm over the network, it will still be very much useable. Henesy: Nice. That's exciting! I would love to see something like that. You mentioned a drawing tablet before, do you like doing digital art or anything like that? Sigrid: Uh, I wouldn't say it's art [laughter] { sure everything is levelled properly, removing all the clicks and pops, stretching, applying effects, all that stuff that I do is nonexistent in 9front. Henesy: Right. Is that something you'd be interested in writing? Sigrid: Oh yeah totally. I start writing one small part of it, maybe a bit unrelated, it was just drawing waveforms, I was trying to see if it would even be possible to have something like audacity for 9front, at the time, and the answer is yes totally. Drawing waveforms fast is possible, even with a drawterm over the network, it will still be very much useable. Henesy: Nice. That's exciting! I would love to see something like that. You mentioned a drawing tablet before, do you like doing digital art or anything like that? Sigrid: Uh, I wouldn't say it's art [laughter] {[laughter]} it's just me holding a pen, trying to do something with it. I'm not a very good drawer, but I would definitely do more of it if it would be available in some way in 9front. Right now, the tablet that I have *is* working, but it has a really low resolution, so every time I move the pen it jumps I think like four pixels {[chuckle]}, instead of just one, so I have to zoom in a lot {[laughter]} [laughter] and mostly draw pixel-by-pixel, and that's not very useful {[laughter]} and it doesn't have pressure detection at all, so it's either you press it or you don't press it. Henesy: Ah, sure. Yeah. Well, that's about all the questions that I have, do we wanna try and take some live ones, if we have any, I can look at discord, or twitch chat, and pull questions from there. I didn't have any sent to me, but we can wait and see if anyone has anything they'd like to ask. Sigrid: Alright Henesy: Cool. ... ... ... Well, I had a really good time Sigrid, thank you so much for taking the time for this, I really appreciate it, is there anything else you'd to go over, or are you good? Sigrid: Uhh, yeah, I'm very much good, thank you! Henesy: Awesome. Thank you so much, hopefully we get to do even more of these in the future, and I really appreciate you sharing with us. Sigrid: Yep, thank you. Henesy: Take care! Sigrid: Bye-bye!