National Treasure 4: Kung Fury 2

Streamed

Logrotate maybe finally fixed (no). Byroot’s Bluesky thread on LLM pull requests, social contracts in gift economies, and the money fountain. TOTP window. User tree fragment caching PR. Reset textarea PR and hide without JS PR. And yet office hours banner persisted. Prevent empty blockquote-only comments. Blowing up prod with a Ruby syntax issue.

scratch


topics
  fixed logrotate (maybe even for real)
  PRs
    tag combinations https://github.com/lobsters/lobsters/pull/1907
      byroot https://bsky.app/profile/byroot.bsky.social/post/3mgcjtlrfcc2t
      social contracts in gift economies https://lobste.rs/s/utbyws/mitigating_content_marketing
    time drift https://github.com/lobsters/lobsters/pull/1948
    user tree https://github.com/lobsters/lobsters/pull/1946
    reset textarea https://github.com/lobsters/lobsters/pull/1945
    hide without js https://github.com/lobsters/lobsters/pull/1938
  issues
    office hours banner https://github.com/lobsters/lobsters/issues/1943
  peter breaks prod again
  finishing user tree caching

title
  uv taught me to love again
  if I click on this link and I see anime porn I'm gonna be mad
  national treasure 4: kung fury 2

post-stream
  debug audio stutter some more, with claude?
    

Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.

Recording



03:46Howdy. Where's my... Aha. Okay, so howdy. I'm Peter. This is Lobster's Office Hours. And I am starting a minute late because I got Nerd Sniped, which threw off my morning, but it was fun. And I got to make my first couple of lines in Rust to contribute to Gleam, so that was neat. So let's take a look here. So this is Lobster's office. pushcx This is Lobsters office hours, ask questions about the site anytime!
This is Lobster's office hours. Ask questions. Any time. Time. Let's see what's been going on. Monday's stream got cut short by tech issues. Everything has been behaving the last, well, I wouldn't say since, but the last two days. So we'll see. A little frustrating that I live in a big, dense city, and I cannot buy a better internet connection. But at least I don't play CSGO or something. Instead, I play GitHub PRs. Actually, did I close a PR since? No, this one is OK. Yeah. I did something. Oh, that's what I did. I did a maintenance thing that I was going to mention. I think I may finally have solved the running hassle of log rotation, which has been a hassle since we moved to Hatchbox. Yeah, yesterday I just kind of sat down, spent a few minutes playing with it, and it's very silly, but I didn't know about LogRotate-D, the debug mode. I had just been, for years I've been fighting LogRotate, and I was just reading the man page. writing config, waiting a few days. And it's very hard to learn things and fix things. Your feedback loop is days long. Hopefully, hopefully logs are good. That'd be nice. So let's, was there anything else I had to do about that? I don't think so.

06:45Is it working? The catalog is a little suspiciously small, but maybe we're okay. Alright. That one I don't worry too much about because Caddy is such a workhorse that I don't really worry about increasing load on it much. It's the real side.

07:23Let's take a look at PRs.

...31Actually, this one that's come up on Office Hours is maybe worth touching on and closing.

...50There was... I can't see replies, I'm not logged in. Dang it. This is the, me getting nerd sniped and playing Thrust a little. let's just play it over. With replies, replies, what's the...

08:38pushcx https://bsky.app/profile/byroot…
Here's the thread I'm looking for. This was an interesting one. So, Byroot here, Jean Boussier, is a... I know he's Braille's core. I don't remember if he's Braille's core. Ewo_On_Sight Sup
But he's dropped by the stream and helped with performance issues. And I was really caught by this small thread he wrote about Ewo_On_Sight The steam is stuttering.
Ewo_On_Sight Are you on Gentoo?
how to deal with how to deal with llmprs because i basically wrote exactly what i wrote over here so this was someone wrote a very large is it god damn it is the audio bad or is it because i did oh no it's the audio thing hoistbypetard Ewo_On_Sight it's stuttering for me too
I am not. It's Arch Linux and the audio should be okay now. Thank you for pointing that out. hoistbypetard better now
I have a long-running audio issue where the best guess has been that it's a buffer underrun Ewo_On_Sight Oh I see you must be using pulse audio.
Ewo_On_Sight shorks1LOOK
Ewo_On_Sight I knew it!
where the microphone is not getting pulled properly yeah and i have a workaround i just only remember to start the workaround about i seem to be running about 75 of the time lately yes yes it is pulse audio and or honest to god i can't keep track of the layers of linux audio Ewo_On_Sight I use pipewire.
because it changes every four or five years, and that's faster than I can learn things. It's faster than I want to learn things. I'm pretty sure I use Pipewire too. The Linux audio stack just seems to be like every five years, they add another layer on top and they never remove a layer. And I'm like, what is this, a web browser? Ewo_On_Sight Pipewire is replacement for pulse audio
And somehow we get a breaking change, but then we also get a wrapper on top. And I'm a little exasperated by it as a user because I just have piles of config files. You say that, but it never goes away. Like, also is still down there somewhere.

11:25Ewo_On_Sight lbunixTheMYTH
Is that a... Is that Joe Biden? I don't know what that emoji is.

...38Ewo_On_Sight It's like the Scooby Doo meme where they take the mask off.
Ewo_On_Sight Oh look it's alsa.
So... Scooby-Doomium where they take the mask off? Ah, yeah. That's... That's appropriate then.

...52Ewo_On_Sight LUL LUL
Maybe I should throw Claude at it. It's a reproducible enough bug. Speaking of feedback loops, I have thrown Claude at, I have this weird ass config file issue. And it's like, here's an option from a man page from 25 years ago. Ewo_On_Sight Throw Claude at it we'll do it live.
And I'm like, okay, that's not something I knew or had been able to find for 25 years or wanted to learn. Nice. Maybe that'll be post-stream. Do it live? No, it's too painful. Like, it just hurts to hear. I've tested it, and I've tried to fix it.

12:40Luckily, it didn't at first, but I found a local program that stutters. Because, like, of course... one does and one doesn't. I think it's in my notes somewhere, but I think Audacity, when I recorded, did not stutter. And then I did something else. Oh, if I get OBS and instead of streaming, I tell it to record, it does stutter, which is It's clunky, but there is the core elements of a feedback loop of reproducibility. Ewo_On_Sight I never have audio issues.
So anyways, speaking of throwing LLMs on it, Jean hit kind of all of the exact same topics I did where I am jealous and happy for you, but mostly jealous. When I get PRs that are generated by LLMs. Ewo_On_Sight I make my Arch build 0% reproducible.
Like, the quality has improved noticeably over the last year. I'm not saying anything novel. Everybody has noticed that LLM output has jumped up.

13:59Yeah, I do use... I think it's called etckeeper to version the etc files. That saved me a couple of times, but then otherwise... YOLO. Actually, I have... I have wondered if Claude could make Nix bearable. I don't know. Maybe. Ewo_On_Sight Arch Linux plus ZFS plus encryption and secure boot and apparmor.
Because what I bounced off of was bad docs, bad error messages, that they invented their own programming language. Surely they've worked on the docs in the last four years, right? So between that and Claude, maybe I could actually get somewhere. Ewo_On_Sight Good luck getting secure boot on NixOS.
Ewo_On_Sight LUL LUL
I don't know. So I think what Jean is getting at here is

15:07Ewo_On_Sight It ain't gonna happen
And I don't think I could have said it until I responded here, but there's not really any point to responding to an LLM pull request. Because if I wanted to use Claude on something, I could use Claude directly rather than do it through talking to some rando in the GitHub PR comments. And if I'm talking to an actual person who submitted a handmade PR, even if I am explaining the most basic Ruby and Rails stuff, and there is one actually open where I know I'm going to be explaining a basic Rails thing because I started reviewing it yesterday or the day before and GitHub threw away my pull request review in the middle of writing it, which was obnoxious. I don't know. I don't... I didn't think I had put the word social contract to it before, but it's that, like, if you put the time into writing it, I will give back some of my time reviewing it, and, you know, even if that person doesn't make another contribution, they'll have learned something. And that's kind of, like, what this first sentence of this response from the, LLM contributor is about, but it's just not plausible. Ewo_On_Sight I'm starting to see more and more people using markdown files in their projects for AI rules. So the AI automatically reads it.
The thing I pointed out is such a beginner code thing, and having looked at their profile, they're obviously not a beginner coder.

17:07Yeah, we've got a Claude.md and an Agents.md similar link to it that is exactly that.

...25hoistbypetard and, probabilistically, if you make that effort with a set of earnest human contributors, some will respond well and become contributors
This morning.

...41hoistbypetard with llm contributors, there's zero chance that they learn and respond, only that their next iteration gets a bit better.
Yeah. And you know, like that is part of it, but I've seen, I've seen PRs where it's like, I know I'm never going to see a second PR from that person, but it's still worth iterating with them because anything I share is going to go back. And it's not, it's not unilateral. Like sometimes I've told, I've written a review and I've said, well, you should do X, Y, and Z. And they've said, no, you're wrong. hoistbypetard yeah. you're making the "ecosystem" better
And they were right, and I learned something, you know? There's a collaboration that happens with a person that cannot happen with an AI that forgets everything every time you type slash clear in it, right? Yeah, like we're actually participating. God, you know, it just connected. I'm talking about another phenomenon that I wrote up once ages ago. This one I know has not come up on stream otherwise.

18:51No, oh no, it's in the story text.

19:00ChaelCodes Hi!!
pushcx https://lobste.rs/s/utbyws/miti…
Yeah. So years ago, hey Chael, years ago, I wrote this post about content marketing. And there is also an attempt to deal with content marketing that was overzealous, and I had to roll back. But I'm coming back around to it. But we now consistently average over 20,000 visitors per weekday. Programming is an enormous, growing, lucrative, powerful industry, and thus a very expensive demographic to advertise to. So a link on our home page sends traffic that would otherwise cost $15,000 to $30,000 on Twitter, AdWords, or LinkedIn. When this is sending attention to celebrate someone advancing the state of our understanding or sharing what they've created, it's the internet as its best, as a gift economy. Unfortunately, some people see the site as a handful of rubes naively standing around a money fountain, so why not try and take a taste? And that is the exact feeling I'm having when I get LLM written PRs. Especially when someone tries to present it as their own work, where it's a social contract of a gift economy is being violated. It's that kind of offense that I feel. Ewo_On_Sight My opinion is pretty much the same as Linus on LLMs.
Where it's, you know, if you're standing in the park playing frisbee and someone comes along and knocks the frisbee out of the air and says, well, you all suck and throw some slurs at you because you're losers. Like that interloper has failed to understand the game you are playing. And they are not able to participate effectively. So in the same way, like when we're standing around and we're having a nice chat and we're sharing links and we're learning things from each other and someone goes, Hey, your attention is valuable. Why don't you give that to me? They have failed to understand the social context and they're being an asshole. Yeah. I don't know how to put it better than that, but like, we're clearly all sorting out what the social norms are going to be around these things. in addition to the legal norms and the technical norms.

21:40This was a topic, oh yeah.

22:00let's grab this link to leave in the notes that has not even there we go actually it's

...30Did I? Yes, I still have the by route. All righty.

...57This will start at the end here.

23:16Ewo_On_Sight Have you tried openclaw?
Oh, hey, Chael, you're getting thanked here. ChaelCodes Me?
At the end of this pull request, thanks for the dev container. ChaelCodes AWESOME!!!
It made getting a dev in almost instant. That's you. Yeah, you did the dev container setup. He doesn't, they don't know they're thanking you. I don't know who this is. Dan Lamanna? All right, we'll go with he. But yeah, he's thanking you. Let's take a look at this code. It could just be drift behind, drift ahead. Okay. I mean, I also want to check and see if prod has the right time, but it should be set up. Let's take a look. I'll let that run. That's going to be green if they if you wrote that test. So we'll just get the green dot there. I don't want to do this like. That's a. Oh, it's just 24-hour reverse. So I do know my local machine is correctly set up. Do I? We were just talking about my audio setup being broken. Maybe I don't know. dzwdz time.is is an easy way to check
All right, let's go look at prod correctly. It's got to have NTP out of the box, right? Time.is.

25:16dzwdz for the record i have no idea how time.is works
Well, we are accurate to within a second there, which is not enough to rule out this bug that was reported, but probably is.

...52dzwdz well dan's clock could've been off
Yeah, actually it is. I mean, I want to double check NTP, but NTP D, what do we, what do we call it?

26:32A Stack Overflow answer from six years ago. Time, date, CTL. Let's take a look at this. davidofterra Is it systemd-timesyncd?
I've heard of this program before. Status.

...53System clock. Okay, so you think the system clock is synchronized. Is it systemd-timesyncd? Let's try that.

27:10Ah, you got it. I didn't realize you were correct from the beginning. Thank you. So it's been running. It's been running continuously since the server came up. It thinks NTP is active.

...31What was the other command there? There was a show. Ewo_On_Sight Ah classic systemd it's either the best thing that had happened or the worse thing that has happened.
No. Oh, and here's your config. Ewo_On_Sight Depending on which side of the fence you're on.
So I really do think the server correctly has NTP enabled and is as accurate as it's going to get. Okay.

28:46dzwdz i'm surprised the totp library doesn't implement the drift already
dzwdz also note that even if there's no clock skew you still have to check adjacent time periods
dzwdz if you autofill the code near the end of the period
Now watch this. graefchen heya pushcx and chat limesHi
Now, GitHub is giving me the fear, so I'm going to copy that into the clipboard because the way my work was thrown away a couple of days ago was I wrote the start of a comment just like that, and I went to the diff, and when I came back, my comment was gone. Oh, hey, Griff.

29:23Ewo_On_Sight They might be a Manjaro user. LUL LUL
ChaelCodes GitHub's been a lot less reliable lately.
Because of possible clock drifts between the client and server, this limit can be set forward and backward. The valid rate is set to two time steps. And what is it? Is a time step like an entire 60 seconds?

...58If the time step is 30, seconds but i'm pretty sure you know i've been thinking yeah chill real theme of the stream unfortunately oh did my okay this comment didn't get lost it looks like it's not on by default Oh, and this doesn't match the PR because the PR or at least the quoted spec talks about steps, and this is integer seconds. Then it said interval. What is the attribute interval?

30:54Oh, I bundled. I bumped Breakman using Dependabot, which also means I'm going to be behind. So was that totp.interval?

31:35This is one of those places where. Types could have caught it, but so like an interval is 30 seconds and, but then most things take arguments of number of seconds instead of number of intervals.

32:07Yeah, I really wonder if it's just... This guy. I don't know. dzwdz if you're really worried about this you could just add a test with a code that expired 60 seconds ago or something
We're... We're pretty... twitchtd maybe his clock is out of sync rather than the server? not sure if that matters
Okay.

...42I'm not really worried about it beyond... Yeah, TD, that's kind of where I'm getting here because the server seems to be correct. Every time I touch something that's security related, I get hesitant. So that's kind of what I'm chewing through is that feeling of, hey, dummy, you don't know much about security. Don't mess with these settings. And I don't have... dzwdz neither clock has to be out of sync! some time passes between typing in the totp code, submitting the form, and the server actually processing it
dzwdz it's normal for the server to receive the previous code
tvsr8 Hello
a great feeling for why totp chose 30 or 60 seconds and what it means like what are the risks of it i guess you could hold an otp code longer yeah How do you TV straight? I don't know. I guess at these nicks. dzwdz also re: "holding" TOTP codes, see the after parameter maybe
So like the risk of accepting a code early, the only way you'd get a code early is if you had the secret. So it doesn't feel like that's a big risk. The risk of accepting a late code is, you know, those are precious seconds that the attacker could be tvsr8 ti-vi-es-ar
seeing the code and trying to race the user on, because these codes only get... Actually, it doesn't have state. Somebody could reuse a code in the window, because we definitely don't record TOTPs that we've seen before. TVSR? Okay. TVs are what? dzwdz the api has a thing for that, you just need to store the last login time
Let's see the after parameter, maybe.

34:47dzwdz yeah
Yeah, we don't track a last login.

35:02We probably should track logins, but... I don't know. I know I'm doing it. I know it's a perfect is the enemy of good kind of thing, but almost every time I think about... adding more audit logs to the code base, I go, why don't I just rewrite the whole thing to use event sourcing?

...34I realize that's not a rational decision.

36:42dzwdz i'm kinda surprised people even use TOTP for lobste.rs
dzwdz like what's the worst thing someone can do with my account. post a vibecoding story?
People like to use it everywhere. I have thought about... No, that is not the worst. Somebody could, you know, get you banned, and the banned message is going to say, DZ posted this awful thing XYZ, and then if DZWDZ is a nick reused a bunch of places, then that attaches to your personal reputation, right? dzwdz so does posting about vibecoding
That would be lousy. It would hopefully... Like the actual author showing up and saying like, no, I didn't post that. My account was hacked. I shouldn't have reused that password. I don't know. I might be able to see it in the IP logs. Sometimes those are plausible. Sometimes they're not. So... tvsr8 you can use totp/hw keys for security
Actually, I mean that in general, no one has ever said, hey, I didn't post that comment I got banned for. I've never had that claim. graefchen Honestly ... getting banned doesn't sound as bad as posting a vibecoding story limesGiggle
I have seen account takeover, I think, three or four times now. Yet, TVSR, we're reviewing a pull request that is about TOTP, which is currently implemented on our site.

38:21The enormous expressive disdain is really unpersuasive. Because it's not a, hey, I disagree with you. It's, I'm so confident I'm right, I don't even have to explain myself. And so I'm just going straight to, I'm going to try and shame people who don't agree with me. Which, you know, if it's true, if you're talking about, I don't know, liking ABBA, yeah, go right to shame. Nobody likes ABBA. ChaelCodes I like ABBA. :(
If you're talking about a current topic that everybody is still like wrapping their heads around and it's a very fast moving one, It really comes off as... Yeah, I was going for what's the silliest thing I can say. ChaelCodes I went to Mamma Mia live.
I hope it's clear it wasn't serious. hoistbypetard nickelback
I don't have a lot of opinions on music besides enjoy the music you enjoy. tvsr8 i enjoy calm techno music on souncloud
Oh yeah, I have that... tvsr8 specially calm techno
That classic MP3, I'm pretty sure I got it from Napster, where it plays two Nickelback songs at the same time, and one on the left audio, one on the right. tvsr8 omg i don't know how to type today
tvsr8 FeelsDankMan
Laserswald omg i need this
different Nickelback singles and they have the exact same timings and breakdowns so like they each hit the chorus at the same time and the breakdown and the solo and everything is identical anyways I'm rabbit-holing I guess it wasn't a good example because it was a very distracting one so

40:28Yeah, TVSR, you want to share a link to the music you like? It sounds pretty chill.

...40Hmm.

41:22dzwdz an attacker should never be able to reuse a TOTP code
Yeah, there's, maybe I'm not using the right security terminology because there's reuse in the sense of use one that has already been used or reuse in the sense of copy one that hasn't yet been used. I don't know how to, do you know the jargon for differentiating those two things? dzwdz it's in the rfc if you want to take a look, 5.2.
hoistbypetard fwiw, i usually accept them one period late, just as a usability thing to defend against user and network slowness
I guess you would just say use versus reuse, but I'm trying to get it. dzwdz not sure if i should paste the relevant sentences
The attack could be that the attacker is somehow infiltrating them. They see the code. dzwdz First, a larger time-step size exposes a larger window to attack. When an OTP is generated and exposed to a third party before it is consumed, the third party can consume the OTP within the time-step window.
5-2? I just had it up. I'll take a look. Thank you.

42:16I will certainly admit that I have never read this actual spec. Now keep these generated and exposed before it's consumed. Right. dzwdz also the last paragraph in that section
That's what you just said in a sentence. Maybe you're... Okay, you're quoting it here. That is exactly what I am trying to reinvent from first principles. Thank you. dzwdz i've read it ages ago, my memory is fuzzy
Sure. Let me take it from the top, though, because clearly me coming in without context is not working. I'm just reinventing wheels badly, you know? Which is why I have that gut feeling every time I... touch something security related. I'm like, someone smarter than me has already thought through this possibility. The best I'm doing is recreating their work. I feel that same way about legal stuff. When an OTP is received, an evaluation system doesn't know. Yep. Typically use the timestamp when an OTP is received for comparison due to network latency. Yeah, I'm sorry to read this out loud, but... Oh, God. Somebody sent me a... a video clip of a programmer and he did this weird thing where he like selected every word as he read it out and he did a funny, it was very strange. The gap, number of time steps. Is a time step different from an interval? Presumably that's the difference between the 30 seconds and the 60 seconds that I've seen. dzwdz since you're streaming reading out loud probably is better fwiw
When OTP is generated at the end of the window, falls into the next. Yep, that's my thing. Validation should compare within the transmission delay. Sure. dzwdz i don't *think* it is? iirc
It just feels like the worst bedtime story in the world. Oh, God, there's actually a what's the there's always a Calvin and Hobbes for it, right?

44:30Yeah, this one, right? pushcx https://www.reddit.com/r/calvin…
He calls his dad at work. God, I love Calvin and Hobbes. dzwdz the spec doesn't use the word "interval" anywhere
So I feel like I am Calvin's dad here. And if I'm reading someone the TOTP spec, section 5.2, like this is me in the last... Speck doesn't use interval. Oh, good. Then this is one of those places where the implementation and the spec slightly differ in terminology. And we get to reverse engineer whether it's meaningful or not.

45:31We recommend a default time step of 30 seconds. OK. I'm pretty sure our default is 60. Maybe I'm just confused. Second, the next different OTP must be generated in the next few seconds. Wait till the clock moves on.

46:13chamlis_ you have to shout for the capitalised words, I don't make the rules
hoistbypetard I tend to use "interval" and "window" interchangeably
Must not accept the second OTP we we totally do you have to shout for the.

...26yeah so I understand what it means, but like time step is clearly their preferred jargon. I guess they call it a time step window.

47:11hoistbypetard it's been too long since I've read the spec and the libraries i use tend to say "interval"
dzwdz oh i've seen this dramatic reading of an RFC once on fedi
dzwdz i wonder if i could find it
What is today?

...22Oh, I know exactly what you're thinking of. dzwdz also you might want to erase the first sentence :p
Yeah, they hired a voice actor, and I think they had them read, specifically they had them read the RFC that is about how to write RFCs. Why? What's wrong with that first sentence?

...45dzwdz yes!
I checked on prod. It really does look like our system clock is accurate. I mean, instead of creation, I couldn't say setup.

48:14dzwdz read the beginning of 5.2. again
OK. dzwdz both clocks can be correct, there's a delay between inputting the code and verifying it
Okay, I don't know what you're pointing me at here, Deezy. I mean, I know it's a deterministic system. dzwdz the user has to actually submit the form, it has to go across the network
Both clock can be correct. Right.

...37Oh, you're saying... dzwdz The receiving time at the validation system and the actual OTP generation may not fall within the same time-step window
Yeah, I'm really just responding to his mention of clock skew, because it was the easiest thing to rule out.

49:27dzwdz there's no reason for them to doublecheck their desktop tho
it's one of the things that could be wrong here i agree that this is this the delay crossing the time step boundary is more likely the problem on a modern desktop but it is not exclusively the cause

51:01say rather than last login is it to tp see now i'm not going to risk my comment see this is one of those things of like once you lose somebody's work they get paranoid

...32Crescent Doe.

52:05hoistbypetard it's not paranoia if the system is really out to get you
Let's see. Let this be a lesson. When you contribute to lobsters, if you give a mouse a cookie, he's going to ask for a second PR.

...30This one's out here. Fragment caching. Ah, this is the one where I lost mine. This one is the user tree. It hasn't changed since I looked. Nope, still just the one commit, but yeah. So I'm going to go through this pretty fast because I already saw it, but I suggested a cache key and I was wrong.

53:13dzwdz btw can you merge https://lobste.rs/s/3dtgmr/ into https://lobste.rs/s/jr3zym/
Let me take a look real quick.

...22This one. dzwdz it's a direct response
I got to double check on something real quick related to that one. One sec.

54:04Yeah, thanks. So let's grab this ID and bring it in here.

...20Thanks for catching that, Deezy.

...44It's, it's Doe Cash, right? My favourite foot gun? Yeah.

55:41Speaking of losing things, we have talked about this before. And the answer is no. Required true is fine. No.

56:08Where did I talk about it?

...15This is kind of searching for a god object.

...27I probably said the word reload, right?

...36No. He also.

...47Thought there was a solution. Did FIDM do that? No, does not have an item potency key.

57:57marcoroth_ πŸ‘‹πŸΌ
Oh, hey, Marco. Where'd it go? This one, right? No.

58:46Oh, Marco, I saw your Blue Sky post about finding elements that are duplicated on both sides of a branch. marcoroth_ that's ironic lol
And I just saw that on a PR the other day on Monday's stream. And when I saw that, I went like, oh, that's a nice little cleanup. And I bet Marco's ERV tool could catch that. I didn't know it was something you were working on right then. Jamamp_ I, too, have been burned by filling out text fields/areas and posting only for the server to fumble it and I lost everything. Not on lobsters though, just other sites.
Yeah, it's this one. I saw it here. Where'd it go? It was a divider tag, right? Well, this PR has changed a lot. Yeah, here. So they've tweaked it, but this divider tag was on both sides of the branch. And so I saw it in the diff, and I was like, huh, yeah, Marco could have caught that. If I wasn't allergic to JavaScript packaging.

59:57Yeah, GemEmp, it's a North for me because it's incredibly discouraging to, I mean, we've already talked about it. I just had to rewrite a pull request review because that exact thing happened to me. It sucks.

01:00:24Yeah, I'm kind of puzzled by this one. Federico has made a whole bunch of front-end pull requests and has struck me as quite a thorough developer. So I'm puzzled by him taking an approach I explicitly said I don't want to take.

01:01:02marcoroth_ I'm looking to port the whole linter/formatter away from JS. So we can also use it from Ruby!
mikuwayo Sweet, looking at other people trying not to break things when I decide to get some good earned rest
ah neat yeah it's sort of funny until i saw herb i would have said that you know i actually no i would say i'd still say that erb is just fundamentally the not not the right way to do ChaelCodes In the meantime, it could be run in a GH Action, right?
HTML templating. I think just doing it as string templating rather than something with a more builder API. Cheo, in that same vein of things that are discouraging, I hate a build you can't run locally where it's like The only way to iterate then is to make a pull request and push things up.

01:02:09ChaelCodes I use it as a VS Code extension at work.
does not update after action. That's an interesting bug.

...25ChaelCodes Fair.
Oh, I didn't grab that last one.

...40You know, I'm talking about how Federico has made so many great PRs. Hey, speaking of GitHub bugs. Oh, no, this is the issue. And I responded on the pull request. I was like, did my comment just disappear? How do I? Wait, now my comment is here. Was it? I would have to go back, but I'm pretty sure my comment disappeared for a second.

01:04:08marcoroth_ btw, are you open to refactoring `app/views/comments/_threads.html.erb`? It's one of the last two views that are still failing to parse
Jamamp_ Can confirm. There was the squash & merge button but no comment. Classic github
Yeah, GitHub is... Am I open to refactoring it? I'm willing to do quite a lot to get rid of heinous inline partial if I don't have to give up the performance. And the only reason I do that is At the rails level more than 50% of our hits are the single story page that.

01:05:03marcoroth_ I'm not even talking about the render calls, but more about the ul and li placements
That that improves the speed of. marcoroth_ It's so hard to follow, even as a human
render calls more about the ul and li placements oh oh yes yeah because of the the workaround they're they're broken right now and i would like them to be fixed there are i don't know what the actual repro steps are yes it is i would not say it is possible to follow it as a human and i know it is not correct so i would love to have it fixed and made correct so yes i'm i'm totally open to it i think the one big asterisk is Well, I guess the two, the first one is the performance thing, which you already know inside and out. The second one is that the view is also used on the user threads page. So if you go to here, we can just go to mind, push CX threads. The same view is used here to show threads and These don't always start from a root comment. So actually, this very first one is a good example. This, I think this is me. Yeah, I'm responding to someone here, but you don't see the parent comment. And I don't remember what that conditional is offhand, but then also it does include all of the child comments. So anyways, Reusing this in a second place just means that second place needs to also work and it's very easy to get it fixed on the story page and not on others.

01:07:23But yes, your criticism is entirely accurate. I'm not happy with that template.

...42marcoroth_ gotcha, I think I will take a look to see how we can improve that
Okay, I mean, just set a phone alarm, timebox that one, because it's our god object, right? So there'd be dragons in there.

01:08:07Speaking of gift economies, this kind of Marco can improve his tool by picking up our own foot source. That is super rewarding.

...25marcoroth_ exactly!
I got map recent key.

...46Yeah, FedEmp is clearly a better front-end designer than me and knows the JavaScript APIs better. OK, so that's all just cleaning up my mistakes. What's happening here is the diff. So if there's upvote or unvote, clear that reason out of the way.

01:09:21And then put in the text. And this one is find the element switch. Oh, I like it more already. If it's an upvote, I wonder why put this on its own line instead of do the null propagation operator, because JavaScript has one now.

01:10:06Yeah, and that's the end of the function. If point is less than zero, why is there, why does it care?

...36marcoroth_ I think people are still afraid to use it because of browser compatibility, especially if you don't have a bundler
hmm and we do not have a bundler because of one of the couple of things peter is weird and real picky about i was just talking about that oh no i was talking about it with you yeah that I used to have this same hang up about Python packaging and Python tools, but I started using UV to manage tools written in Python. And after a couple of months of that actually working, where I previously had not been able to keep enough of a Python environment running to run anything written in Python for a couple of months, I learned to love again. UV taught me to love again.

01:11:38dzwdz stream title?
Yeah, as a sign of my exasperation, like, I have been a professional full-time Python developer for, I think if you ran it all together, like, haha, I got there. If you ran it all together, like, five years, maybe six of my career, and I have not been able to keep a Python development environment healthy I was just in the habit of every quarter or so, some minor update or Tuesday would blow it up and I would just pave and start over.

01:12:38twitchtd https://xkcd.com/1987/
1987. marcoroth_ Whenever I have to run python, I still type `python3`
I don't know if a number Oh, yes, yes, this is. This is exactly my experience with Python environments. Jamamp_ loadScare
Does it mentioned two to three in here, or three to two or I just saw the beginning of that and it was painful. Yeah, but this This is exactly it. marcoroth_ Its missing pip3 too LUL
I know you can, he allows remixing these comments. So we just have to draw like a little bulldozer coming in and that's UV shoving all of this into a hole. Pip three. Oh, I could name like four more. Jamamp_ poetry right?
There's like, what else was there? There's wheels. There have been so many Python packaging tools. Was there something called soup? twitchtd pipenv
Poetry, yeah. Maybe this another pip is pip three over here. davidofterra wheels, eggs
marcoroth_ was conda also one?
What year, what decade did he write this comic in? I don't see a date.

01:13:59Conda, probably. plexx___ why cant i sub?
I was talking to someone yesterday about Ruby. Wheels, eggs, yeah. grayhatter_ preprend explain to the domain name of the xjcd
And what did she ask? She was saying, oh, she asked why a tool had a silly name. And she was like, why don't you name it something related to Ruby? Not me, but you know, in general. Jamamp_ Not like JS is much better. package managers, bundlers, transpilers, etc. all out the wazoo
And all right, there's that wiki, right?

01:14:44I do not see a date. dzwdz at the top, april 30, 2018
I see that other people know the horrors and then this implies 2018. Okay. Yeah, Jam Amp, how we got down to that one is the only reason I haven't installed Marco's excellent tools is ChaelCodes @plexx___ - He's not an affiliate, Twitch demands a real phone number
I have that exact same reaction to the JavaScript tooling ecosystem where I'm just not willing to accept it in projects I maintain. You can pay me to do it, theoretically. But it's been a minute since someone's managed to do that. grayhatter_ it says in the middle above the comic in the comic number
Hey, you say real like it matters what protocol the phone is speaking underneath. Yeah, there's the flex, there's the follow button. Above the comic in the comic number, I totally missed it. Oh, you're saying up on the explain site? Aha, 2018. grayhatter_ :)
Thank you. chamlis_ oh by the way @ChaelCodes I finally got around to Assemble with Care after you recommended it ages ago so thanks for that - a nice and cosy short game
Yeah, the other thing is, even if I became an affiliate For subs, I wouldn't be able to turn off ads. So as irritating as it is how many things are gated behind, you have to have an expensive phone number. ChaelCodes @chamlis_ I'm so glad you liked it!!
I feel like if I unlocked any of those, Twitch would probably force ads on the channel and that would just be irritating. So I'm just going to keep taking free stuff and not giving it back. That's a totally normal thing to say, right?

01:16:47grayhatter_ Take everything! GIVE NOTHING BACK!
Oh, I remember this one. I sent this to a friend of mine, and she got a kick out of it. So yeah, thank you. plexx___ k i understand, appreciate the anti ad stance
ChaelCodes I've been replaying it. The 3 year old loves it, but she can't handle the wiring.
Lately, she started playing, what was it, Power Wash Simulator as one of those games where you just want to turn your brain off and chill.

01:17:22ChaelCodes THE ADS. I HATE THEM.
dzwdz do you mind questions about unrelated parts of the codebase
graefchen Oh. Yeah. That game was small, simple and fun. limesSit
Yes, DZ, I'm very happy to, and I'm like two seconds away from done with PRs, so if you want to hang on until I finish this other one from Federico, this is great, so...

...57this one. Yeah. So jump back out to see what he said about it. Oh, great. I'm glad my explanation was clear. Because my explanation was a little short, it was just basically like, Don't change this type signature, and I'm pretty sure if you were factored to fit that type signature, the code will look like I want it to look, which was a little bit like, hey, put in a bunch of work, and I'll judge you again. But let's see how it came out. All right, so the Ruby is still good.

01:18:55If it keeps it up, we might accidentally grow an API for the site. That would be a shame. All right, so this, that is a nice refactor. Props every p, p in obj. I am okay with this amount of like this is obviously oh and squared but when n is like. 10 you can do those kinds of things, and this one was anyways.

01:19:47Okay, so this one became. Print defaults. Grab the submitter. Print double. This is one more diff that GitHub got wrong, where marcoroth_ @chamlis_ I assume you know about "A little to the left"?
enough lines got added in the middle i just saw this on a pull request i submitted in gleam the other day sounds promising where i added a line or two of code and then it just was diffing things wrong. chamlis_ nope, but thanks for the suggestion
I don't know if the GitHub diff algorithm has changed or this is just an unlucky couple of diffs. But either way, this stuff gets really hard to read because now I'm scrolling up and down to compare. There is still a try catch. OK. Yeah, and it's this try catch.

01:21:11marcoroth_ @chamlis_ it looks very similar, and is so cozy and satisfying too
This is clear. And now this one. And now this becomes an wait. I still don't love this type signature.

01:22:00chamlis_ I've wishlisted it and should get there eventually (it's very rare I play a game to be honest)
One nice thing about this type signature, though, is the function is actually using that bucket of strings as a bucket of strings. It doesn't have any. There has one if, like this next action kind of thing.

...30But it's not like this function is doing six things based on the value of a string inside this hash, which is really my fear with functions that take six arguments.

01:23:19marcoroth_ why are doing that `instanceof` filter on L410. Doesn't the selector already handle that?
This is ready to go line 410.

...49marcoroth_ it was also there before that
marcoroth_ but yeah, seems redundant
yeah the query string all is a pretty thin wrapper right it was also there before that if it was there before that it's probably just cruft that was quer carried along

01:24:18marcoroth_ unless its for types
marcoroth_ to type-narrow it
yeah this should always this is a pretty thin wrapper over query selector all so yeah it should always return a list of elements to type narrow it Oh, maybe. Yeah, I don't know. I've written a little bit of TypeScript, but not enough to have any kind of intuition around that.

01:25:48no it's not the it is actually a little belt and suspenders maybe right because what this is saying is kind of i don't know here it says all right yeah i thought this was more generalized than it does the way selector gets input type is submit there's no way you should be able to get anything that's not in html

01:26:37marcoroth_ unless config.selector includes a comma
less config selector yeah okay that's fair it's also there are exactly two functions that call this it is unlikely there will be a third it's not like it's you know a general purpose api that randos are going to code against so that has a level of bulletproofing Or foot gun preventioning, I'm not too worried about. And then there's the HTML change and that hasn't changed.

01:27:29Yeah, we're doing it again here. And it's less redundant here because they're checking HTML form element.

...46Yeah, like it's a minor style, right? I would write this as QSA. Honestly, just shove it up into the selector, you know, add like brackets input or something to it, or do it as an explicit select to have kind of a functional style. But I don't know that I care enough to block.

01:28:57marcoroth_ yeah, I also think the other one is technically fine, since it was like that already
I don't know, maybe I've just written pre the good parts JavaScript, pre jQuery JavaScript enough that when I see stuff like a general purpose for, and then an if inside instead of a select and then a single imperative line, I'm just kind of like, yeah, that's JavaScript. Like it could be better, but forget it, Jake, it's JavaScript. I'm not trying to be cynical. It's just why I don't jump at it. I would if it was Ruby, funny enough.

01:29:50Yeah, I think this is good to go.

01:30:35Is this multiple? Yeah, this only needs to be one commit. Alright, so DZ, if you want to start typing your question, I'm going to take a peek at a little to the left as a game. dzwdz i was wondering what's up with .mobile_comments
But now is a great time to ask. Oh, womp womp. Well, that was quick. dzwdz seems like a leftover from an old feature
Either Steam is having an outage or Oh, there it goes. Dot mobile comments.

01:31:17Oh, that's cute. It's another game about arranging things. I don't know dot mobile comments off the top of my head.

...45Where was it? OK, so it's in list detail. And then heinous inline partial is replicating it. dzwdz i was looking through the history and you actually were in the git blame at some point lol
dzwdz but it seems to be back from jcs' times
I'm always to blame. Come on, DZ.

01:32:14Yeah, this commit is what me cleaning up URL generation. That's not important. davidofterra You can blame society.
I would suspect off the top of my head that when you're on mobile view, we displayed the comments count in a big clickable button. I would guess it's that. So like this with the cute little, dzwdz wait ooooh
comic book-y word balloon around it. dzwdz right
Blame society. You can't blame society for HTML. We blame Tim Berners-Lee for that. dzwdz right, you make it visible with a media query
dzwdz nvm
So... Yeah. So that's what that is. rather than find the existing comment thing yeah all right i mean it probably could be rewritten with css so that like this link became that link that would just be a lot of gyrations and I don't know, CSS is becoming dynamic enough that you can really start dragging stuff around on the page and popping it out of parent elements and in and all that kind of stuff. It's just a little more trouble than it's worth. marcoroth_ it's crazy what you can do with grid and flex tbh
All right. Any other code questions?

01:34:05Yeah, Grid and Flex, they're a little bit... They just have a couple of features for... dzwdz in unrelated news i took my chronological comments view script and turned lobste.rs into 4chan https://i.imgur.com/tKJlDVa.png
reordering elements and moving them around. This one, yeah. Pure empty. Huh.

...41it doesn't have the star that they edited that's just a you know this one's a quick one let me just knock that out even if it's a good first issue you took your chronological comments and turned lobsters into fortune i really hope you're just talking layout and not content if i click on this link and i see anime porn i'm gonna be mad okay

01:35:46ChaelCodes Can I tell an HR porn link story?
Huh. dzwdz actually doing that in an userscript would be painful but it feels like that'd be a good way to keep up with discussions
So you did it on the front page. Oh, you did it on active. dzwdz the active page, it's bump order
So these are five, five, one minute ago. But it's using your layout cleverness.

01:36:09Can I tell him? dzwdz the 3 last comments from each active story
Yeah, Chael, with you, I'm not too worried that it's going to be inappropriate. I would probably say no if Deezy had asked that question. He's a little spicy sometimes, but like... I think, unfortunately, everyone who's had a job for a couple of years has a story about a coworker who decides to look at porn at work. That is a very unfortunate universal.

...49It's the active page, so bump order the last comments.

...57Yeah, I was puzzled by it because it is in chronological order rather than reverse cron, which is kind of what I would expect for active. So the stories are reverse cron, but then the comments in them are cron.

01:37:20dzwdz blame 4chan
I must have touched a cat chair cat hair. I'm sneezing. Oh, am I just showing off my ignorance of how the 4chan homepage sorts? Okay. This continues to be a really interesting presentation of comments. It's a very power user kind of feature to tweak the layout to show new comments more. dzwdz i always felt like /comments had too little context to really be useful
And with social software, people form daily routines. And so I feel like it's amenable to power user kind of things. Ooh. Yeah, that could be really useful on slash comments. You kind of have to know all of the stories for that one to make a lot of sense. ChaelCodes My friend works in HR. When there's a disaster, they send out ERP links for government resources. In that list was Mexico's medicaid link. But they had let the domain expire, and it was replaced by a porn site. No one checked it. So they accidentally emailed a porn site out to everyone.
Or you have to be reading it like the moderator where it's, you know, I'm looking for naughty words and people being mean.

01:38:35ERP links for government resources. Okay. dzwdz the other kind of ERP
And that list was Mexico's Medicaid link, but they had let the domain expire. Oh, no. Oh, no. I had an old LLC, and I still had the domain online. And just a couple of days ago, a friend of mine was like, hey, I think this was your thing, right? It links to this website as a, like, we made this, but that looks just like a total spam bucket garbage site. And it was not porn, but it was, you know, that same neighborhood of an expired domain. And so I was just like, all right, I didn't even realize the LLC was still on auto renew. Let's throw that out too.

01:39:33All right, so... We can go in here. Does anybody have a good Simpsons meme for this one? Because a couple of these comment validations are a little bit snarky, a little bit silly. As you can see, like off the top of my head, I could search for the meme because i remembered it's how this works so we got to think of a cute message for this is what i'm saying it doesn't necessarily have to be simpsons it's just you know we have a couple of these simpsons memes that are older than some of the users so why not right

01:40:28Did it have to have a space? Probably not.

...45Nope. All right. And if they did two lines, yeah.

...58dzwdz unbalanced parentheses
chamlis_ the only thing that springs to mind is something like "you can't just say quote-unquote"
This possibly followed by any number of spaces and possibly repeated. And it doesn't make sense to talk about that being case insensitive. dzwdz does it work with < too?
You can't just say quote unquote. Oh yeah, maybe we could make a joke about air quotes?

01:41:39Shouldn't.

...44Does less than mean anything in Markdown? No. You get a bad comment, but you get a comment that's at least visible.

01:42:07chamlis_ "all style and no substance"?
dzwdz lol
There is the classic, don't quote me on that. Oh. All style and no substance. That's... I get it. I was, .. It's almost a Glomar response.

...32dzwdz also i think you don't need the " *" - it's stripped already, right?
Do we know that one? ..

...44DZ, it's for the, oh, the new lines, possibly.

...59pushcx https://en.wikipedia.org/wiki/G…
dzwdz do newlines not get stripped, then?
So, Glomar, there was a, this is a journalism thing, there was a sounds like a Tom Clancy novel kind of CIA mission in, I think the early 70s. And a journalist asked about it at the time. And they finally got the the incredibly evasive we can neither confirm nor deny. Which is to say like, because if you say no, that's not us, you confirm that it's happening. So It's not quite a Glomar. It's a little meta to joke about. If you mean user new lines in comments, they are included. You can see it here in my dzwdz by String.strip
thing and i mean it got collapsed down but if you say it carries through the new line even though in html that's just collapsible whitespace at that point the trailing ones sure but We checked that it produces the same output for multiple greater thans.

01:44:59dzwdz ahh okay
The space star would only be if there were one that would catch it. marcoroth_ I think you need squash/squish for newlines (I always forget the name)
Yeah. Yeah, that's the fun of regex is you really get to play computer in your head in parallel. Both in terms of test cases.

01:45:32chamlis_ do you have any book recommendations about journalism, by the way? I find how the profession operates interesting in general
dzwdz i wonder if you could match the resulting html, see if it actually contains any text
I mean, we could put in something like If a tree floats in the woods and no one hears it, does it boast a comment?

...53I mean, at that point, I might as well just say if a tree falls in the wood and does it make a sound? It's not so bad.

01:46:14You know, we do, someone did just write a version that renders and then strips out the markdown or the HTML tags. We could check that that is non-empty, especially calling strip afterwards to remove the resulting white space.

...41It does make sense. would certainly be a string of named functions instead of a string of line noise like that regular expression I just wrote.

01:47:05Yeah.

...28mikuwayo Did the dust settle around Ruby governance? I have to start learning the language but I'm kinda lost with all those events
marcoroth_ are you using the rails saniatizers/loofah for that?
Did the dust settle around Ruby governance? There was literally a story about it two or three days ago.

...43pushcx https://lobste.rs/s/g6moku/four…
There you go. 42 hours ago. Marco, I don't know what loofah is.

01:48:03mikuwayo Oh thanks! Been touching grass for too many days
So this one's odd. It turned it into a single quote mark. marcoroth_ the nokogiri based sanizizer that rails uses too
Yeah, yeah, that'll get you every time, Milky Wayne. You need to be extremely online. I could send you a couple of Blue Sky threads. I did see some really mad people on Blue Sky about that post. And the higher you get your blood pressure, the more correct your opinions are. Jamamp_ loadSigh real
I'm venting a little.

01:49:07So this is, I don't understand this to raw output.

...17So it takes the text to portion coding, parses it, it walks the tree. Oh, and then it turns back into common marker rather than, yeah.

...39I was thinking this just deleted all the HTML tags, but no, this is just all right. Jamamp_ So how much do we like ruby/rails? I haven't touched it before, which scared me a bit from trying to contribute. It does remind me of ASP.NET though.
chamlis_ can you not just add "blockquote" as a case there?
So DZ, I like your strategy, but I don't want to actually write the code for it. I want to throw a regular expression at it. It would be more reliable, but this is a corner case that took 13 and a half years to come up, so. No, it's the too common mark at the end.

01:50:27marcoroth_ what are you trying to strip?
How much do we like Ruby Rails? Marco, I'm trying to strip it. I'm just trying to prevent a comment that is empty except for a block quote.

...46chamlis_ ahh, missed that
I think this suffices. This build is going to be green, especially because I didn't add any tests. And I think we're OK. So how much do we like Ruby and Rails? At this point I would say ASP.NET looks more like Rails because it wisely copied some of the things Rails got right, rather than anything else. But, you know, we learn these things in the order we learn them. I was just saying this morning that Rust looks a bunch like Glean. marcoroth_ @Jamamp_ especially with blazor it does look a lot like rails
And I am aware which of those came first.

01:51:41As for how much we like Ruby on Rails, I'm reminded of that Bjarni Staustrup comment. Jamamp_ I thought blazor was more like react, if I'm remembering my one project with that haha. Old ASP has these same `<% %>` tags.
He's the creator of C++, and he said something to the effect of, there are two kinds of languages, the kind that everyone complains about and the kind that no one uses. mikuwayo '(i agree)
And I criticize rails and to a lesser extent Ruby a bunch in my streams. But mostly is I would criticize whatever tool I spent the most amount of time in because it's the one I'm most familiar with. I always have some amount of gripes.

01:52:44Some of them I don't know it occurred to me yesterday that. I could probably give a conference talk that is like. Things that are broken in rails. That cannot be fixed. Because there are a couple of early design decisions in rails. That haven't aged well.

01:53:18Jamamp_ Rails at least seems to have a ton of history behind it. One project I did was using Go's server html templating, but the experience there is lacking quite a bit. I should try again to get lobster's local setup done and poke around
More than that, they were wrong at the time. And... Realistically, the process of deprecating and fixing those things... You know, it's that old saying, you can't get there from here. Yeah. And I've been playing around in Gleam a lot lately, the last month, and it feels very much like the Rails... I don't know... rails two days where there is not a library for everything at least not natively in gleam there pretty much is in elixir and you can import that with like two lines of code like one line of import and then one line putting a signature on whatever you're calling but in other ways you know the community and everything is immature in the way of the early Rails days.

01:54:55marcoroth_ I feel like a lot of these stripping and similar cases might be handled by `rails/rails-html-sanitizer` or loofah directly
Why don't I see main on that commit?

01:55:06Because I'm seeing things a little out of order.

...24Yeah, Marco, probably.

...40I thought I did this after that last merge. Guess not.

01:56:03I was just saying to somebody that one of the things I like about jujitsu is the undo, so I feel safe. just doing a rebase without even looking at the tree and stuff. Cause it's like, ah, if it gets weird and I get errors, I'll just put it back in one second. That safety makes it very easy.

...58This one is worth tracking. I'm not going to try to fix it off the top of my head. davidofterra Thanks, that's an excellent reason to learn Jujitsu.
olexsmir oh yeah undo is the best part of jj, with git i always felt "scared" while doing a lot of operations
mikuwayo I was using git yesterday to bootstrap a weird custom NixOS setup, jj segfaulted on me and it borked my install with an unexcepted EOF misammoCry
hoistbypetard i've been letting my attention bounce to and from the stream to other things... i'm surprised how much consideration the '>' one required. i reported it thinking it'd be a papercut that'd serve as an excuse for someone new to jump in :)
But I forgot that when my network connection crashed, obviously, OBS couldn't run its little shutdown command to, yeah, David, that was what made it so easy for me. It didn't run its command to clean up the office hours banner. And there's no timer or anything on it. Yeah, this is just not reliable.

01:57:51The Twitch API, that's very funny.

01:58:10mikuwayo And it's been like, many months now I've been using jj? And I felt the pain. I couldn't even use Magit
mickey wayo someone was just saying there's a jujitsu based version of magit available now like the project just came out in the last two weeks or at least i noticed it in the last two weeks i'm not a nemax guy so don't pay a lot of attention mikuwayo Oooh shiny
mikuwayo I'll hunt that.
I have definitely never seen a seg vault out of Jujutsu. I would call that an accomplishment.

01:59:02All right.

...13olexsmir https://github.com/0WD0/majutsu…
olexsmir it's the magit but for jj
Majitsu, that is probably the thing I heard of.

...22mikuwayo @olexsmir <3
I, did not click on the link, but there you go. You want to app mention them so they get the, Oh, it looks like they saw it. Great.

02:00:23olexsmir dont know how well it's done though (i dont use emacs btw)
mikuwayo I'll get a hat and put a "I segfaulted jujutsu" sticker on it
know you say that but and i'm i'm aware from the way you told your story that it's probably way too late but if you could reliably segfault jujitsu i've been hanging out in their discord they seem like very friendly folks and they would love a bug report like that and i say it's only too late to get a a core dump or something or figure out reproduction steps in C2.

02:01:13Oh, actually, as soon as I write this,

...22mikuwayo I've been there too and they're nice, but it was like 2am and I just wanted the thing to work sadly, otherwise I would have tried to reproduce it
11 yeah 11 15. i've got a second let me set my alarm here i can do that pretty easy actually yeah that's like two lines of code all right so let's do two lines of code

...55And file dot... What's the... I think it's just... Go away, bug.

02:02:11marcoroth_ FileUtils?
Dumb bugs that like carbon dioxide. Hope the compressor caught that clap. File utils.

...24Ah. All right, that's it. That's three tries. I got to look at the docs.

...38marcoroth_ File.mtime was right, at least it exsist and expected an rg
marcoroth_ arg*
See, there's file. It's going to be here or it's going to be in. mikuwayo @olexsmir I'm in the process of learning elisp so anything's good!
Yeah, here we go. Oh, yup. That'll teach me to read an error message properly. So if I said gemfile.lock. Okay. olexsmir @mikuwayo have fun then :) lisps are fun
If it's after, wait. I just was fixing a bug, so wait. If the mtime is before one minute ago. There we go. What if the file doesn't exist? Can I collapse these? No, I can't. And so come here anytime. This is see now I'm bad. I'm repeating a constant. I don't want to extract a constant because ERB is String soup, right? mikuwayo @olexsmir I would have stopped programming if not for me finding lisp honestly. Nobody told me about AST
Like, if this was a builder, I would already have extracted it, but... What am I going to do? Put it in helper? Oh, look at my edits. Getting distracted.

02:04:19Yeah, if you haven't, you might check out that classic little Lisper book. Honestly, if you're in the process, you're probably ahead of it. But there's that, the little schemer, the reason schemer. There's some fun stuff in there that are about learning to think in the language. So wait. And it's after. So if it has changed in the last 60 seconds is what I'm trying to expect to say. Does this correctly express what I'm trying to say? Yes. So like for the gem file, if I said after a minute ago, it would be false because it hasn't been touched for days. But if I said month, we did that break man update, so that should be true. Yeah, okay. So I'll do that. mikuwayo I think I've read the little schemer? But for the last couple years I've been focused too hard on nix + system languages
And then...

02:05:31Oh, do I want to, it feels like a little bit risky to tinker with this script right while I'm live. Where is it? Tools scripts, pre-stream. Yeah. There's nothing interesting in there. Right. Config awesome.

02:06:06mikuwayo I'm getting some interest in Ruby since it's adjacent and it is embedded in a couple of small game engines
marcoroth_ oh boy, I hated scheme lol
Yeah, so.

...23So this is the. Other side of the magic for the office hours is. This terrible little script where.

...42if it's starting streaming i don't remember why i put recording in there i think that's redundant because i would never put on the banner for just recording you know only thing i'm going to do there is something very confusing if i'm recording without streaming i'm probably deploying the microphone back to where we started and then Here, I want to set up a timer and every 60 seconds, do this touch. But if the touch isn't here, where did I put it? Because this one's commented out.

02:07:58I'm looking in the OBS config directory. There's something that mentions the file. Something in scenes? What? Why would my scenes mention that?

02:08:21Ah, the scene. Right. I couldn't get this to work. There was something about... This was so painful. In part because I'm not a Lua expert. Speaking of not really knowing languages.

...55So I set it up so that It saved the variable because there was this whole prompt. Ah, that's what it was. I couldn't get this to prompt. And then I don't remember if this worked because I couldn't get this to prompt. And this needs that. I really don't want to learn the OBS plugin system. And I'm slowly getting forced to. So, scene collection... Where do I see the settings? Actions?

02:09:57Yeah, alright, so...

02:10:06Can I not? Ah, it's a floating window. Weird. What even is a floating window? So I set up advanced scene switcher, which had a way I could prompt for a variable. So it asks me, do I want to turn the banner on? Yes or no. And then This one says, okay, so if you actually typed Y, when the scene changes, because I just needed a timer or an event, then run the SSH. And this is so painful that I have to split up the arguments into four things, but like it works. And then when I end, It's if the stream is stopping, reset the variable and try and delete that file. So is there a, if can I make a timer macros let's call he's Marco, not macro. Oh God, you gotta be sick of that one. Right? this hours, heartbeat.

02:11:40marcoroth_ I always read my name LUL
Sure. You always read your name. Yeah. Okay. Do we have a check the conditions of the currently selected macro? There we go. There we go. So we say we will check this every 30 seconds. So We're back to time step and interval, right? So this is half of this. And then input parameters. Did I have to do that for the other ones?

02:12:36marcoroth_ or you keep running "watch -n" over your ssh
no all right so now didn't expect me to be programming in a gui language like this did you or you keep watch dash n yeah i would rather have obs affirmatively doing this than have a separate process, because then I have to get into saving the pit of the process and all that entails.

02:13:16So if variable, no. OK, if variable, where do I put the name in? Not something I wanted. How do I undo? Oh God, you're just getting worse. Go away. If variable just is on the next line, banner equals Y. Can we make this a little bit A little bit bigger. All right. Looks identical. That's a visual diff I just did there. chamlis_ you probably want to uncheck "perform actions only on condition change" at the top?
It's very funny to me, hoarding serious software development concepts to like this. Form action only on condition change. Right. And I do want this to go in parallel. just in case I ever write other macros. That would be painful to debug. So then this one says, the thing you are going to do is not switch scene. The thing you are going to do is run. Is that how this worked? Yes, run. And I'm not retyping any of these if I can get away with it. ChaelCodes What is this?
Yes, the advanced setting of passing an argument. It's giving me a pop-up. olexsmir i once tried one of those graphical programming languages, and i was very strange when i started doing OOP LUL
All right. ChaelCodes I just removed after a meeting
I don't just copy. ChaelCodes *rejoined
So all of the pop ups are appearing off screen. So this deploy at lobsters. Oh, hey, Joe. pushcx https://github.com/lobsters/lob…
Well, this is me unbreaking the office hours stream banner, because on Monday, when my connection dropped, marcoroth_ I think Scratch is more intuitive
The script, this macro here that went to go delete the file couldn't run because it was offline. Hey, Scratch is a typed language. Types are beautiful.

02:15:50So touch and definitely come on. Let me copy. olexsmir scratch has types, we learn something new every day
Why is the clipboard fighting me so hard? It is not using the correct clipboard. Copy.

02:16:19Honestly, it might be faster to just open up its JSON file and do it manually, right?

...29Yeah, Scratch, if you look at the...

...38The different color coded and shaped blocks. A bunch of them are enforcing AST structure, but some of them are typed values. Like I think they make an integer string distinction. They almost certainly have a like function distinction. It's been a while since any of the nibblings were young enough that I've looked at Scratch.

02:17:12OK, so then this parallels this. Actually, I could get rid of enable, because touch will do it automatically. I think I can leave it alone. And then the office hours thing will start 30 seconds after I start, rather than when I switch scenes.

...43CarlDots I just tuned in and the UI is immediately overwhelming. There's so many things omg
I'm thinking through the failure modes here. So the variable protected just in case I just started to start streaming video games. chamlis_ it's been a while since I used scratch but it might even have linear types?
Oh yeah, this is the OBS macro thing where it's a programming language as a series of settings rather than just a script.

02:18:12I couldn't tell you. I'm pretty sure Scratch has dependent types, right? You can say this number has to be positive. This array has to have a couple of elements. I don't know. Boss, the cat has arrived and he is clearly in the mood where he's going to bite me in like 90 seconds. Sir, sir, you wear your heart on your sleeve and your heart is black. I know you are working up to biting me. That is not how we communicate. marcoroth_ the boss is upset at the UI too, I get it
ChaelCodes chaelcSmug
Even if I am your employee, I will report you to HR. HR will come and scri- Sir, he just tried to bite me. Oh my god. Kat, Kat, you gotta go. You gotta, you gotta find somewhere else to be, sir. Shiftless Kat. when he was a kitten he was adopted by someone i've never met and you know i've never met them because i'm not in jail for assault and they clearly didn't give him enough attention and he's smart so he needed lots of attention and eventually he taught himself that if you really want attention and they won't give you attention put teeth on them you will always get attention because a certain level at a certain level level of desperation All animals, humans included, can no longer tell the difference between positive and negative attention. ChaelCodes You know...... It sounds like the boss wants attention.
And we have been training that out of him for eight years. But sometimes when he's really bored and he wants to play, he says it with teeth. Yeah, that was it. I don't know if you could hear him going mer and merp. mikuwayo Get them a ferret? Monkey paw wish
File argument that does not exist is created empty unless C or H. So dash C means no create. That's not memorable. Let's go with no create. Get a ferret. Get the cat a ferret. I think getting him a prey animal would beat animal abuse.

02:20:45Look at that. I'm swapping my args around. What a funny interface. mikuwayo Ferret aren't prey, or you meant the inverse?
ChaelCodes Aren't ferrets carnivores?
All right, so this feels safe. It checks the banner. Every 30 seconds, it goes and touches the file. ChaelCodes Or is that mongooses?
graefchen Yes, yes they are carnivores
marcoroth_ swapping args is def easier that way
aphex17 he read about the scratch types in chat and is about to try it out on the wallpaper
ChaelCodes lol
ferret aren't right i had no idea obviously i don't know anything about ferrets i thought yeah i have no idea what they ate i don't know hey man it's called lobsters not mammals all right so that's that's saved right i don't have to do that twice just because i closed the window no okay it did save as i went Apex, that's a good one. Thank you.

02:21:59Let's actually write the...

02:22:51just looking at what director does it land in temp office hours live okay there we go so i started this stream this file should have been created what two and a half hours ago and instead it's been touched in the last minute that's That's it. It's working, right? I mean, I'm going to keep an eye on it for two seconds, but because I didn't think to. My aliases get me like this. I didn't think to double check the file time before I added the heartbeat.

02:23:52So I am waiting to see that 8 tick to a 9, which, yeah, I don't know. In OBS, I just said every 30 seconds. There it went. I don't know that it'll happen on the 0 and 30, but there we go. Two systems have been coupled in a reasonably fail-safe way.

02:24:25marcoroth_ nothing can go wrong here
And one of those is written in not a programming language. But yes, it's clearly a programming language. Oh, God. The best story we've had in the last month. Have you... Oh, man, I loved this thing. It's so wild. pushcx https://lobste.rs/s/rhgsiy/x86c…
And I know I'm a sucker for x86 assembly, but... This is such a good... project this is so beautiful and ridiculous i'm gloriously cursed hey hoist by petard see you right there i'm so delighted by this project there was so i started following her on blue sky the creator of this And someone messaged her to report a bug that their program didn't work if it was at offset zero and they had to move it to 100 hex. marcoroth_ this really reminded me of the running doom in typescript types project
And I felt like I knew instantly exactly what that was that the reporter was seeing. Running Doom in TypeScript types. Oh, there you go. graefchen dont fill the stack! limesD
Let's do Fibonacci sequence for a while. So I use push.cx as my... Oh, right, because it's polling. It's not interrupting. She didn't actually implement a terrible operating system on top of this.

02:26:22It's that... There's a cute meme comic about this. The one where two birds are on a branch, and one is in the middle of doing something, and the other one comes screaming in to interrupt, and it's like, I am the keyboard, I have an important message. olexsmir e
mikuwayo E
E. She didn't actually implement interrupts. Anyways, God, what a beautiful, terrible hack this is. ChaelCodes E
mikuwayo Aren't all hacks terrible?
it's only terrible in the sense of you know it inspires terror the old word for religious awe so speaking of terrible hacks in the modern sense of terrible let's push my commit yeah and i you know i say hacks because it's my first draft But in the written word, I always try and say cludge and I will be, this is like, this is such a petty grievance. This is like the tiniest of like loose threads to pull. But I am annoyed at Paul Graham trying to repopularize the word hack to startup entrepreneurs so that they use it. And so I always write kludge instead, because I really want to get a head across the fact that, yeah, it works, but this is not a place of glory. This is an ugly way of doing something that I am not proud of. I just want it to work in a reasonable amount of time. There we go.

02:28:27mikuwayo Hackerman gokaid1Supershiro
You know, I better deploy, right?

...39You know, there's a like feature length sequel to Kung Fury. It took them years to make to raise the money for it and. They actually filmed a feature-length sequel to Kung Fury, and I believe Arnold Schwarzenegger had at least a cameo in it, which is wonderful, because it's riffing on 80s action movies. And then they got into some kind of fight with the producer or the distributor over rights, and I can't guess what it is, because they had it in private, and I tapped out my limit of curiosity about it. But an entirely finished, edited movie that is ready for distribution has been sitting on the shelf waiting for the rights to get sorted out. Which is a shame. chamlis_ ooh I didn't know that
chamlis_ anyone fancy a neist
chamlis_ heist*
So let's see. Oh. Yeah. I bet it's got a Wikipedia page. A heist? Are you going to steal the stream? I'm happy to. I always think of it as throw to you. Because that's the proper journalism term, right? I throw to you because your stream has a chyron. If you're going to get started, I'll raid you. I'm coming up on the end of this stream anyway. chamlis_ oh no lol I meant steal the finished kung fury 2
Otherwise, you know, I've actually been properly reminded of the word raid. And I can poke around in the streaming channel. There's somebody I've thrown to a couple of times on Mondays. Oh, steal the finished Kung Fury 2? It's the, .. It's National Treasure 4, Kung Fury 2. There's the title.

02:30:56jamienvc btw, just updated the PR that you commented on a little while ago
Jamie, which PR? veqqio 500 err
jamienvc jamesnvc there
Do you have a different username on GitHub? I would love to take a look and give more feedback. Ah, you are... James. Oh no, did I just break prod? I didn't run the... Oh no, I broke prod. Fuck. Dumbass, I didn't run the build. Sorry. Thank you, Vec. Let's... What did I do? I didn't think to run RSpec. This could be like a typo. And yeah, it's the combination of double ampersand. This is a precedence issue, isn't it? And I'd stop, do it again. Jamie, I'll come back to your PR in one second. jamienvc Haha, no worries of course!
I'm busy lighting the entire site on fire.

02:31:57dzwdz finally we are free
marcoroth_ at least it wasn't your OBS scrit
It is especially ironic that I caught a bug in your pull request that I wrote and was like, here's how you can do this reliably.

02:32:21Lobsters deploy. No, let's... Lobsters deploy. Oh my god. That's an embarrassing one.

...50It's not the first time I've done that on stream. We get to talking about something, and then I forget you always have to run the build. And yet I am going to run the full build here. graefchen i am slowly getting ptsb from "los" because of a stupid essay i ned to write limesS
dzwdz what was the error btw
not really worried there's going to be something wrong but yeah marco the the real nightmare here was that that script could run amok and turn on the banner when i'm not streaming and i'm already i don't want to be self-aggrandizing of like everybody should check out my youtube channel like and subscribe you know it would just be too painful DZ, it's a precedence thing in Ruby. If you have a double ampersand, you can't do the no parentheses thing on a next function call. And I could not tell you the actual line of BNF. I've just seen this one enough that I flipped over and I instantly recognized it.

02:34:10marcoroth_ I had no idea
dzwdz wow
dzwdz so && obj.fn?() doesn't work?
Yeah, so parsing Ruby is kind of incredible. olexsmir sounds like somebody was too lazy to write a proper parser
No, DZ, that's fine. Here, I'll show you in console. So this, this is fine. This is not fine.

...41dzwdz hmm
No, Ruby has this flexibility that you don't have to give the parentheses around every function call. And it is one of the things that allows you to make APIs that read really nicely. And it's obvious that, you know, if I took these parentheses away, you would wonder what does this dot after apply to? Does it apply to the string or jamienvc This is why I like Lisps, just don't think about precedence at all πŸ˜…
Does it apply to the result of this? And then you've got to ask, okay, well, does it apply to the result of this or this whole thing, right? It's just a precedence hassle.

02:35:25dzwdz any other fun grammar quirks of ruby?
dzwdz now i wonder what else is hiding in there
Yeah, Jamie, that's... Oh, how long do you have, DZ? Ruby... Ruby has a lot of complicated grammar, and there are just a couple of gotchas like this where once you get comfortable with the no parentheses, it is easier to type this. Speaking of unfixable issues, like I was saying about Rails, I really do wish that dzwdz site seems to still be down btw
marcoroth_ Kevin Newton, who worked on Prism, the new Parser Ruby uses, has been sharing a lot of Ruby quirks
the word and and the double ampersand have the same precedence in ruby they have slightly different precedences and so you just have to have but the build is great maybe ruby crack no we would be seeing the We'd be seeing the Hatchbox error. Hang on. dzwdz @marcoroth_ oooh! any links?
jamienvc My understand is that '&&' and '||' are supposed to be used for logical statements and 'and' and `or' for flow control
I'm going to kick it from the Hatchbox side because it has a... Oh, God, why is Firefox being bad?

02:36:55Speaking of Prism and Lisp, jamienvc like, `if foo && bar` vs 'thing and do_bar'
No, and Jamie, it's ruled against in style guides because they have very slightly different precedents, and the word does not get you the precedents you expect under all circumstances.

02:37:27vortism1 can you give a quick rundown of what ruby is?
Hatchbox is not loading for me. Let's go look at prod. Bortsim Ruby is a programming language. jamienvc @vortism1 Perl plus smalltalk?
olexsmir ruby-lang.org
If you look at ruby-lang.org, maybe somebody can type that when I'm busy fighting a fire. That's also a pretty good approximation, yeah. marcoroth_ @dzwdz I was just looking, i think it was mostly on his Twitter
Thanks, Alexamir. vortism1 then what's ruby on rails?
No, it's dash dash user. I hate these. System, CTL. jamienvc A web framework written in ruby
Okay, you think we're up, but you are throwing errors. No such file or directory. dzwdz ruby on rails is a thingy that helps you make websites, using ruby
This is after the... Are we seeing a precedence issue right now? Can I replicate this locally?

02:38:42Yes. And the theme of this five minutes is it helps other better programmers. It just helps me break broad. Oh, god. vortism1 is this used widely?
We're in a weird state. That's great.

02:39:09ChaelCodes Yeah
olexsmir if your framework doesn't help you break prod, then it's a bad framework
This is what I get for fixing things that aren't broken.

...34dzwdz wikipedia says twitch itself uses ruby on rails
But the Rails server tab started with the wrong thing, and it doesn't reload that. dzwdz i wonder if that's still accurate
Okay, there's localhost.

...56marcoroth_ I think the biggest pain is parsing HEREDOCS, since you can nest them etc
ChaelCodes https://usingrails.com
There's... What?

02:40:04vortism1 what os is he using?
You can nest here, Docs? graefchen I do not think so. I for a fact know that Twitch uses React. limesHmm
That is... Yeah, that is cursed. Arch Linux, there is a fact link underneath the video on Twitch that explains some of this kind of stuff.

...28Why...

...35CarlDots I just bumped into my crappy table and the table chose violence just like your cat. It made a loud screeching noise. That table is now my enemy
marcoroth_ you use dashes vs underscores
I did, it's fucking, I did control P and the, you got it just as I did. All right. dzwdz wait, OS X *shipped* with rails?
So there's that. dzwdz wtf
There's that. All right. Let's, let's commit some sins. I'm force pushing. I'm not. marcoroth_ Apple has been/is using it. Ruby actually still shops with macOS
leaving that in history i am ashamed

02:41:42marcoroth_ ships*
graefchen But at the same time... some orgs are so big that I would not be surpirsed if something at Twitch doesn't run tails. limesO
olexsmir @dzwdz for some reason i read it in DHH voice
And I'm going to watch the actual site build. We're past the point where it was failing.

...57dzwdz shipping ruby is perfectly reasonable, but it's weird to ship a random web development framework
dzwdz obviously nothing on the system is going to use that
Carl, the struggle is real. All right.

02:42:24vortism1 how does ruby work in the web?
vortism1 does it compile itself
Oh, it's not GitHub. It's origin. Really? No, it's not. Why make aliases for these things? Take that GitHub.

02:43:03graefchen It runs on a server and not in the browser itself. limesHmm
so somewhere in the bowels of new jersey is a data center with a bunch of computers in it one of those is the lobster server and ruby is a programming running on that server the this front end like you see here would be running on your computer so when this requests the page from the Lobster server, a bunch of Ruby runs, but the Ruby runs on my computer, not yours. hoistbypetard "the bowels of new jersey" sounds like an especially bad place
You know, that's when it's running as opposed to when I've broken things. jamienvc Back up now, it seems
So 20% time.

...56jamienvc Order is restored
Yes, Jamie, it is. olexsmir lobste.rs is alive again
All right. So I I usually stream for about three hours I don't usually break prod but i'm coming up to time so let's take a last look at jamie's PR now that the site is no longer in fire on fire in production.

02:44:24haha yeah James it's. So there's, where am I going with this? The user tree is some of the first code ever written in the code base. graefchen I am also surprised that I am 'lurking' on lobste.rs since more than two years limesO
And Lobsters is the first Rails app that JCS had written. Maybe the only one. I don't know if he wrote later. So there are a couple of places where he didn't follow Rails conventions because he couldn't have known them And one of those is the user tree. It's really just, and of course it's, it's going to be things in our like core functionality, right? That's the nature of it. You do the most important stuff, but that kind of means the most important stuff that you do first tends to have the worst code quality because you have the least experience working with your tools and the least development done on your project. So that's why this tree action is odd and does three different things in a very, I would call this unrails-y way. It's not bad. It's just rail styles would absolutely be to split this up into three different actions and have them at three different routes.

02:45:55jamienvc Yeah, seemed a little bit odd for me, but I definitely know how it goes with very old codebases 😬
But if anybody wants, speaking of lobsters trivia, the very first commit on lobsters has the commit message, work on conversion from PHP tree. dzwdz fwiw i think it'd be interesting to see some examples of what's "weird" in that view
He started lobsters in PHP and then did not finish and switched over to Rails.

02:46:31I'm happy for that call.

...42jamienvc Anyway, since the last comment, added the `@for` instance variable to distinguish the two uses of the `list` view
The weird thing here is Almost any time you see a Rails action that renders two different templates, most Rails-y people would switch this up into two different actions. They also, especially for the era when this codebase was created, would not have created a general purpose action. They would have done the kingdom of noun thing and had a like a slash tree or a slash invites controller. And then this would be the index action of that separate controller.

02:47:37You added the app for let's reload.

...45I wondered how you were going to handle there is a Like a current action helper, but these aren't different actions, which is also odd, so I wondered how you were going to handle it that's why I didn't give you the whole recipe is, I was like. This is a totally reasonable way to do it.

02:48:19Three doesn't need at four. Why doesn't it need at four? Because it is such different behavior. Okay. Yeah, this is one of the reasons that I would expect this to be split up into two actions. Yeah, I think you got it here, Jamie. Okay.

...52jamienvc Great! And whoops, now I need to run and get on a call πŸ˜… Have a good day!
one of the dz the other thing that you can watch for in diffs about what's weird is there is a pattern in our code base where anytime you see us like call rails something ah good have a good call thanks again for the pr i'll get it merged when i quit rambling But anytime you see us do something that looks even a little bit low level and we delete that in a commit and the code looks simpler like this, you know we were doing something weird in the old version. And some of that stuff only became weird over time. I think this caching might... predate the implementation of Rails fragment caching that it uses. It certainly predates our code base having that configured, because we didn't add it until solid cache was added I think we added it a year, year and change ago, and Rails added it 18 months to two years ago, something like that. But it's this, when we fix bugs and code gets deleted, you know we were doing something weird. All right, this looks good to me. I'm going to ship this.

02:50:51The build is green. He tested with cash. The cash key looks reasonable. Yes, I'm just I'm just being paranoid. Because I broke prod, this looks green. And I had thought about accepting it with that key well before I broke prod. I thought about it a day and a half ago when I first wrote the review that GitHub threw away. So let's go ahead and deploy that. Let's fetch it.

02:51:46All right, so let me throw up The last call notice because there's going to be this delay and I'll click on the user tree once or twice, but that's pretty much going to be the end of the stream here.

02:52:09So if anybody has any last questions you want to ask about the site of the code base now is a great time to. toss them in.

...23veqqio I wish you a lovely weekend <3
And I do have to end reasonably promptly on time.

...38Because the boss who tried to bite me doesn't even know it, but he has an appointment at the vet today. Womp womp. For him. It's just an annual checkup. dzwdz maybe you should tell him
He is in good health, but he is... He's got to be about 13 now. I'd have to double check a calendar. Maybe I should tell him. Yeah, I'm going to tell him by pulling the carrier out. He'll know that. ChaelCodes The vet will give the boss lots of attention.
Something is slow here. Hmm. Hmm. yeah oh my god it's funny so i'm waiting on the deploy that is just ticking along slow there we go all of the time we go to the vet and they're like he is the sweetest most good-natured boy and i'm like ha ha ha they're very funny we learned this oh god he misbehaved so much especially when we first got him but he you know like the the fight flight or fawn responses for women he goes into a fawn response when he's stressed so he gets to the vet and then he is the sweetest good boy and he shows the tum and he is kind to them and not so much to me as a boy and the vet techs at the vet are all women there's one guy but he's not usually in when when we come by and so they are like no he's the sweetest good boy and he is for them he must just be saving the good behavior for them so let's see if we see something usable reasonable at the tree

02:54:57ChaelCodes Mine got "AGGRESSIVE" in all caps written at the top of her chart.
is my internet connection falling off a cliff this is slow and now that should be cached and about instant because i'm logged out aggressive wow that's that's very cheerleader coded b e aggressive my mom's cat was labeled fractious which is ChaelCodes lol
such a good word we use it all the time now yeah and then i should still be able to see the moderators equals one view yep and i didn't get served the wrong cache all right we're gonna call that good until the next bug report comes in Or Monday when I have the next scheduled office hour stream and let's double check my calendar. No Monday is fine. The week two weeks. Two weeks i'll be spending some time out of town and that schedule is not totally locked down but we'll burn that bridge when we come to it and I will take a look at this issue off stream I didn't miss it, if you are the reporter. OK. Well, thanks for hanging out, everybody.

02:56:36Then let's.

...47Let's call it good. All right, everybody, well. Take care. ChaelCodes Thanks for the stream!!
Have a good weekend. Email me if you need anything. marcoroth_ thanks for the stream, see you!
Next Monday, next Office Hours stream is Monday evening. Oh, and I even remembered I was going to do the raid browser thing. Are we raiding Chael? I don't think she streams now.

02:57:18ChaelCodes Me?
Let's see. There is a for you. OK. Can I search for anybody saying Gleam? ChaelCodes No, I stream on Sundays now.
Oh, no, that's searching usernames. Nope, nobody is streaming Gleam. Not surprising. But here's someone who is streaming software and game development in Godot. And it says, chill and good vibes. So let's roll the dice on chill and good vibes. Is this Portuguese? No, it's English. Okay, cool. Bye, folks. I'll see you on Monday. Take care.