It takes a ruby amount of time

Streamed

Reviewed several Lobsters PRs including updating commonmarker, reinstance /top/rss, and postfix configuration. Banned a contributor who was submitting LLM-generated code and didn’t understand basic Rails concepts. Got offended over bizarre date formatting (year-day-month with dashes). More tidying after Hatchbox deployment: updating /about, decommissioned web01, recorded puma workers and matched AR connection pools to them. Getting into Obsidian for notes and tasks with Synctrain.

scratch


topics
  PRs
    updating commonmarker https://github.com/lobsters/lobsters/pull/1627
    reinstance /top/rss https://github.com/lobsters/lobsters/pull/1629
    postfix https://github.com/lobsters/lobsters/pull/1630
  getting offended over date formatting
  hatchbox/todo list

still next time:
  logrotate :(
  test with email rep service
  HSTS
  hatchbox notes

2025-17-06
2025/17/06


title
  It takes a ruby amount of time

post-stream
    

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

Recording



01:11All right, let's get started. I guess I'm forgetting at the end of the day to make sure that at the end of a stream that the mic is muted so that when I start OBS the next day or the next streaming day, it's correct. All right, so. Hello, this is Lobster's office hours. So I am pulling up my scratch and I am editing it from last one. There we go. Good. What was that date? 17th? 16th. All right. So let's leave the message. pushcx This is Lobsters office hours, feel free to drop questions in chat anytime!
This is Lobster's office hours. Feel free to drop questions and chat anytime. There we go. So folks see that when they drop in. And then this on the left is Lobster's. We are a website and discussion forum and Rails app, and we can talk about any of those aspects. I just tweeted out the... couple of meta things that had happened. Mostly I have this time so that it's a different path to just ask about stuff that feels less formal. Some people find it easier. And then also it is a chance to look over my shoulder as I work on the site or talk about meta stuff. And the general gist of it is there's no magic here. I want folks to understand how things happen and why. And, I don't know. Frici Morning 👋
The best way to do that is just let you watch me make typos and clean stuff up. So typically I stream for about three hours. This one, and I'm putting this at the beginning of all these, you know. This one is going to be shorter in the 60 to 90 minute range because I am busy working on a personal project. pushcx https://recheck.dev/
If you're curious, the personal project is recheck.dev, which is very neat. And oh it's going well yeah I just did a whole bunch of that like really unexciting admin stuff of make sure the state of Illinois is happy with the business registration and then open a bank account, which was going back and forth like nine times and then get the stripe account open and just. Getting all this stuff wired together the core of it works, you know I have. gtfrvz solemn corpus christi
and I'm mostly doing like optional feature stuff, but there's so much admin to launching a first product or at least first for the company. Yeah. I don't know the reference GT. gtfrvz holiday in bunch of countries
And good morning Fruity, of course. gtfrvz today
So yeah, so I have these topics. There are also PRs. and issues. Ah, I don't know that one. There is a famous Christy. There is a famous Texas town named Corpus Christi. So that's where I went. And then I rabbit hold on why you would be naming a Texas town. Oh, man, this sounds really Catholic. Is it? Yes. Okay. I want to see the stuff that goes on about body and blood and, you know, like the adjectives like solemnity and most holy. It's just like, all right, that sounds Catholic to me. Hmm. All right. Big holiday. It is a very different holiday here in the States called Juneteenth. pushcx https://en.wikipedia.org/wiki/J…
have the wikipedia keyboard shortcut in this browser and june teeth is a national holiday that follows the end of the civil war about people being emancipated from slavery and it refers to the day it's here when a union general so that is the anti-slavery side announced that war was over and slavery had ended in one of the places that was in rebellion or had been it came i'll let you read the wikipedia yourself but a big part of the holiday is the fact that it took a long time for the news to travel even by the pre-automobile standards of how long travel took so i guess everybody gets a holiday all right yeah so Holidays aside, we can go look at pull requests. And there is a thing worth talking about in pull requests that is not so visible and is hopefully becoming much less visible. All right. Bunch of familiar names. Excellent. So I will jump into the... See, I know the numbers at this point. So in the last couple of streams, you have probably seen me review this PR 16.06 and this one 16.10. And last night I banned this guy from the repo because it was very clear his contributions are vibe coded. So he wrote a test and I kind of glanced at it on stream and I was kind of like, oh, LGTM, you know. I didn't catch that it's a request spec, which is overkill for does this route work? This could be... Rails has so many test types. This could just be a controller test. This could probably even just be a routing test. And then Caius caught another bug. Caius is the person who posts the what are you doing this week and weekend threads. That is not a bot. That is just him. He has like a calendar reminder and is... and utterly reliable contributor. Kind of a neat bit of community lore. So this guy, I marked it as spam, but this guy was like, can you tell me what the path is? Like, if you can't run Rails routes or look at config routes.rb, you have never done hello world in Rails. You cannot have done anything in Rails and ask this question. if you ask a question like that you cannot have produced this code there is no way somebody i i just cannot believe someone with ruby and rails on their github profile based apparently solely on these two open prs because i couldn't see that they did any other rails things the idea that somebody knows the rspec dsl and not a route is just farcical and I don't know. It's a sign of the times. I have said that my least favorite game is, am I getting a PR that is vibe-coded slop, or am I getting a PR that is from a junior developer who speaks English as a second language? Because the latter is totally legit. The person is going to learn more about Rails, and the time I spend giving them advice is going to be time well spent. And when we polish their PR and we make it into something good, they get to learn from it. And when someone gives us slop, not only is it a waste of my time to review that stuff, I can produce an infinite amount of slop. We all have access to those tools. I mean, I don't actually need the LLM tools. I can write bad code quickly all on my own. And they don't, Nobody learns anything. Nobody improves. And it endangers the project because it is an open question who owns the copyright on the code that is spit out by LLMs. Like, there are so many active court cases right now so i don't want to take stuff that might be considered copyrighted material and thus not releasable under the open source license right so it is very clear that this author this is this top comment here is llm slop because if you read how he writes in other comments they're just like this one has capitalization punctuation and conjugation rest of these do not and then also he just says the most nonsensey stuff not done but like where was the one changes code like that's that's not correct grammar and it is totally fine to not speak english as a first language i certainly don't speak this guy's first language whatever it is but The edits he was making were totally clueless. The one that really put me off was, and I'm trying to find it again, was like, I spotted a bug of, yeah, this one, that this skip before action should only be in the login controller And then he just sort of treated me like an llm agent and was like why don't you write it for me and why don't you tell me what it is, and why don't you tell me what my bug is and I can't run the test, can you fix the test that I broke, which is like. there's a very dumb thing about lms also whether it's sort of sympathetic magic where. if you give them nonsense you will be moving into the part of the vector space that includes more nonsense because that's how the training they train on data and then they find associated data and if you talk to them with good english and correct grammar and you talk like a senior developer you'll see more code that looks like it could have been written by a senior developer so i really do wonder if that is part of why he was just making garbage edits it's clear that he just doesn't understand what is happening and why anyways this was really frustrating and a big waste of developer time which is the thing we don't have enough of so in happier news let's go look at you know actual contributions from honest humans

12:47And then was there anything in issues? Oh, and for anybody who digs into it, there is one small CSS PR I merged from him. There is literally no other way to write the CSS change. And I knew what the CSS change was before I filed an issue. It was intended to be the easiest issue in the world to pick up so that someone would get started with it and become a regular contributor. I try and make that first step very easy. so I'm not really worried on the copyright on that one because it is functional. There is no expressive ability in code that is literally one line long. pushcx https://github.com/lobsters/lob…
So yeah, so I've filed some bugs and we've had some discussion and because we're short on time, I'm not going to recap all this stuff. But there's a little bit of activity and issues that if you're curious, you can see. pushcx https://github.com/lobsters/lob…\
pushcx https://github.com/lobsters/lob…
The really interesting one is freefall here caught kind of a funny bug, typo, where someone put in a script tag in a comment to talk about a script. But then Common Marker assumed it was SQL injection, which, fair, you know, most forums are not programming forums. And it stripped it out, which made it hard to have a conversation. And I basically said, I thought I replied here. I must have replied to them in IRC where this first came up. Or maybe I wrote a comment and forgot to click submit. I did that on a PR recently enough, right? But basically I didn't want to try to fix this. Yeah. So free fall included my mention here. I didn't want to do that until we were off an old version of common marker. The only pin versions we have in the gem file are rails. Cause everything kind of flows from that and common marker. Cause we were using an old API and they've changed the API and pushcx https://github.com/lobsters/lob…
I just didn't have the spare attention to take on what was potentially a big, frustrating refactor. However, our VIP channelist did take that on, perhaps reminded by the recent post. And so this one's a draft PR, and I'm just going to show it for a minute because we're still working on it. But basically, We're updating, they've changed their API, and then the behavior of the library has changed very slightly. There are slightly different options for escaping and quoting, and we are doing stuff like, so this line of code has some obvious mistakes in it, because I just hammered it out in the comment field, but basically like it is comment singular, not comment plural, but loop through all of the comments in the database and tell me their ID if, we would change the rendering of their markdown, because that's the thing we care about. And we have some back and forth here where we figured out some bugs, and I had some confusion because I typed common marker to use that directly instead of markdowner, which is our wrapper with our config around it, because you should try to encapsulate your dependencies like that, especially the ones that have broad APIs. where we got was something like 20% of comments are different. And that doesn't mean bad, right? Like what could come out could be semantically equivalent, but it has slightly different spaces. Or instead of escaping to ampersand m dash, it escapes to ampersand backslash zero, and then whatever that hex code is, right? That would be semantically equivalent, but it would show up as different here. So 20% is, I mean, it is a huge number of comments. But just finger in the wind, this is probably like five differences, because, you know, half of comments on the site have a quote or an apostrophe in them, that kind of thing. So Chambliss and I are still working through that. It's going to be a second. And Chamlus did another bit of her characteristically excellent historical spelunking when she... You know, it's not always historical. But anyways, when she figured out why these first couple of comments that I looked at were wrong, and I looked at the first... I wanted to look at the most recent couple, just out of old man hunch, but I ended up looking at the first couple because... FindEach by default throws away your order field. I had wanted to order by ID descending. FindEach is like, nope, you're getting in my order. It's fine, I get it. But then ChamList caught that some of the differences I'm seeing is early on, we used a totally different markdown library called rdiscount. So it is possible that until this commit, which 2017, I was really hoping I would see an earlier date. Come here. So this database backup I'm running against is maybe two days old off the top of my head. Created at is less than or equal to. 2017, so five years into the site, 12. All right, so 80,000. So it is possible of the 110,000 that are failing, not failing, different, that 78,000 of them are totally fine because it's our discount. And again, these could be semantically equivalent. You know, if you are a regular stream watcher, you have seen me do things like let me go through a thousand submitted stories. I am not going through 80,000 comments. I will go through some of them. But if we change the rendering of some early comments, I am okay with that. And you know, now that we have solid cache working reliably, especially if we improve the tests on CommonMarker a little bit. maybe we want to drop the whole marked down comment thing. So comment and story, both, and private messages, they make a really common trade-off where they cache, they save CPU cycles by caching the output. Because if we parsed the markdown every single time, it's expensive on the CPU. And so they have a comment on them or a column on the table where they save the rendered markdown, we could probably drop that. I think solid cache at this point is reliable enough, and the amount of re-rendering we would do is low enough.

20:52Yeah, especially if I split rack attack out into its own cache, because rack attack generates a huge number of tiny keys that churn, and then eventually they lead to actual cache stuff getting evicted. Actual. Things that could be cached for longer get evicted because there's so much churn from rack attack.

21:26We saw that with I want to say the traffic helper and the stats. Yeah, these graphs. Yeah, they're not missing now, but they were repeatedly missing because they get cached in our one solid cache. And there's so many rack attack entries that they were pushing these out. This guy is still working. Yeah, good. All right.

22:00So as exciting as that one is, I'm going to handle it offline. So then here, the next, oh, wait, let me grab this URL to put in the notes.

...22That's not the one.

...31And this one is becoming urgent because I saw some weird warnings that looked like our version of common marker is old enough that it's depending on some feature of Ruby that has changed in like three, four, or is in the process of changing. I'm starting to see those deprecation warnings and that's a like, all right, you put it off. Now, you know, you got to go to the dentist.

23:07So let's see if this commit is ready to go. Got routing specs. Oh, this is comprehensive. Great. Caius has made a couple of contributions and they've all been really thorough and matched style.

...35Ah, that's what I missed when I was updating this. Good catch.

...48Okay. So what's different?

...56Ah, had to add a route. I see what I did. Okay.

24:24be a fairly slow test but especially to make 20 story or i'm sorry that's going to be 30 stories in the database for every one of these tests this is

25:28Hey, there's that new view of signs that I only just learned about.

...45chamlis_ is there a transpositional typo on 314 of home_controller? not sure if that's a ruby/rails idiom I just don't know
This is great. That's exactly the smoke test this needs. Route specs are somewhat unpopular on 3.14 of home controller. Not home controller spec.

26:15Oh, you're saying the new 3.14. Okay, yeah. Let's, length param.

...30chamlis_ should that be `params[:length]` essentially
i'm not seeing anything odd should that be params oh yes it is i was looking at this like wait a minute what is param singular where does that come from and yeah you can see it up here oh no okay so it's saying It's the, so params, I get what it is. So params is where you get your input in Rails controllers, but, where's this darn function defined? Interval helper. So we have this function called time interval that takes the individual parameter that is the string like 1w and turns it into a data structure, one of the things on it is param, which is what should you put back into the URL to maintain it for pagination? Because we want to parse what the user gave and make sure that we are reconstructing it only from known valid data as opposed to creating an XSX vector. So it is not a, chamlis_ ahhh, right
weird Railsism. Maybe I should have chosen better variable names to be less ambiguous, but yeah, that's what's happening here. Good catch, though. Yeah. Since you're just joining, welcome. Did you see that I talked about your common marker PR? Not this. That's my issue. Your PR. I talked a little about how we were digging through old comments, and I was going to continue to do that off stream. chamlis_ no I missed that
and you caught that there was our discount and I just cleared it, but 78,000 of our comments were from before we switched to Common Marker. chamlis_ okay, so there are some other things going on there
So of the, whatever that number was, 111 or so that, cool, of that 111 or so that were different, I mean, there's more than three quarters of them that are probably just different because of the R discount thing. so i'm going to continue tinkering with this to look at data yeah so that does leave us what 35k comments that are different yeah all right so this there's just literally that one tiny change so that we can delete this and this already goes so

29:49You know what? Let me just approve and.

30:20Let's look at those. I am going to just squash and merge because there's not a benefit to having separate commits here. And then over here, let's do that before I can forget anything. Gatch. Git fetch.

...56So then I want to edit on top of master. And then that new spec was called.

31:33grayhatter_ interesting, I don't think that's the correct position to take
rather have a slow test that makes 30 records than no test so let's respect spec controller controller i want to see the green dot make the refactor still see the green dot well if i delete this the test should fail

32:01yes exactly the way i expected of all stories are missing if i say let bang or old story and stories on top level thing i will there is a rubocop rule some people like to prohibit let and require let bang we should probably have that rule

...41Let's do a little interlinking. Within cells interlinked. Push that.

33:10You know, I actually... That's fair. You know, some of it is a style thing, and more and more I am drifting away from RSpec style, and I prefer mini-test style. I like the non-spec crappings of a test. I don't like having that extra translation layer. I don't think my end users... even in a hypothetical, like, I'm just a line of business coder context. I don't think my users are going to be reading the specs. And our spec is just so dang big that there's a bunch of ways to foot gun yourself. And if tests exist for reliability, grayhatter_ I was replying to having a slow test over no test
Probably as a matter of philosophy, the testing tool itself should be very simple and have very few ways to use it. But yeah. Oh, having a slow test over no test. Yeah, that one, when I say slow, I mean, maybe that test added a second on to the test case rather than like 10 minutes. I don't know. pushcx https://github.com/lobsters/lob…
Not too worried about it. I mean, you saw me run it in the terminal. It still took, I mean, it takes a Ruby amount of time, but it's fine. grayhatter_ > it takes a ruby amount of time
All right, so this one comes out of the chat room where we've been talking a bunch about the deployment. grayhatter_ it's "fine"
grayhatter_ I felt that in my soul :D
So it is a wonderful transition kind of PR to move towards some of that deployment cleanup stuff that I've been wanting to get to. oh there we go yeah that's me being it takes a ruby amount of time that's actually pretty good it's one of those where i mean maybe it's also a rails amount of time is what i should have said there because i have written ruby i am writing ruby that's not using rails and you know i can blast through a test suite of many hundreds of tests in like 100 milliseconds where the RSpec test suite can't even boot in 100 milliseconds. I guess that's part of why I'm leaning away from RSpec. I don't know, leaning away from Rails is they have just too much code.

36:04Okay. We do indeed get garbage mail, and one of the hassles we have with postfix, and I fixed it in Hatchbox, was when I made the Ansible script in the postfix config, I was like, okay, well, root's emails go to peter at pushcx, my email, and a bunch of the There are a bunch of aliases like support, admin, security, right? They all go to me. And bounces go to me eventually. And a sister site started and did not replace my email address. grayhatter_ lmao
And so I get all of the bounces for Journal du Hacker. You like my French accent? They're going to guillotine me for that accent. I don't know anything about any of these sites.

37:25That's funny, I got a comment about the thing I understand and I didn't get a comment about the thing I don't understand. Why? Fix reload. Oh, we got to put that. Actually, it's probably already in a big file, right? Root deploy. You say post fix reload, right? Yes, there it is. Just double checking. So this is saying, so postfix is broken up into a bunch of smaller tools. And I guess this is saying that when the SMTP tool fire, I'm gonna have to go read this man page. Command and args. grayhatter_ I just read it, ask a question
So why uncomment these other things?

38:35Are you my LLM? chamlis_ regis is in irc asking if there's anything they can explain
Can you write me a sonnet so that I can tell a girl I like her? No? Is that what we use LLMs for? grayhatter_ I'm not *that* french
Oh, great. Yeah, I can't have IRC open when I stream. I actually get pretty confused. It's... Master, I don't know what... Yeah, I was thinking of... There's some famous opera whose name I'm blanking on. Cyrano de Bergerac is the character. grayhatter_ that was my french reference
And he's like a guy with a funny nose and he hides in a bush and he whispers dating advice into people's ears like he gives them... romantic things to say. And so I've always thought of LLMs. Okay, good. Then you, I mean, I can't even remember the name of the play or if it's a play or an opera, so you got it better than I did. And it's my fault because it's my reference. grayhatter_ I was gonna try to spell his name, decided to be more obtuse
All right, so there are daemon processes started on demand. I guess my question for Regis is why do we have to start the other processes? I understand why, wrong tab. I understand why this one that invokes post screen. Well, what's up with the rest of these? Oh, this one mentions DNSBL. All right, so that's probably for this. And then there's TLS. Okay, I'm answering my own question by actually reading the PR. Weird. grayhatter_ incoming port (options) binary command that will be executed and "piped" the data via std in
So if you read code and understand it, you don't need an LLM? and then also you learn the thing. It's funny how that works. grayhatter_ lol, "understanding" lol, describing something that's literally impossible
Incoming port options, binary command that will be executed, okay.

41:04grayhatter_ you can't just understand software
grayhatter_ that's why we have LLMs now
dnsbl sites consider changing to drop after logs inspection so Don't actually need to run any workflows because that's not going to get touched by any of our tests or style.

42:37all right

43:58which I guess is a feature request I should file somewhere. Did I have that bounced? Yeah. Yeah, I did. All right, so let's jump back. That's number 800.

45:13hanging out for five and a half years. Tells you something about our pace of development, right?

...47I didn't put it in somewhere.

46:10Yeah.

...30Where is it?

...54maco_nix hallo
Oh, hey Mako. Welcome to the stream. We are bouncing emails. Well, no, actually, I lie. We are not bouncing emails. pushcx https://github.com/lobsters/lob…
We are getting bounces and throwing them on the floor four years at a time. So if anybody would like a nice little feature request, we can do that. That would be very nice.

47:28Yeah, so Grey Hatter, it's kind of funny because I mentioned here, there is such a cost to booting Rails. I want to say Rails is itself north of 200,000 lines of code, maybe more. And in a interpreted system that doesn't have Python's bytecode compile caching, that's a non-trivial startup time. Yeah. All right. So as long as we are talking deploy stuff and I have my deploy script up, let's look at... We looked at issues and don't have any. Let's look at my to-do list from Hatchbox. and see if there was anything else I can finish there. So just to kind of ping, this is office hours for lobsters and folks can ask questions about the site or why stuff happened or point out I made mistakes as a moderator. All of that kind of stuff is useful. This is done. And otherwise you can look over my shoulder as I code and this is gonna be a shorter stream. So I'm probably gonna go for another grayhatter_ I hate working with dates :<
you know 15 to 35 minutes depending on whether there's interesting and useful stuff to talk about or not and the thing i have to do is clean up after our deployment because the longer that hangs around the worse the instructions i write for the sister sites will be oh oh you know i saw speaking of dates i saw some system maco_nix WHAT
that recorded its date as year dash day dash month, and it made me so mad. It wasn't a hatch box. It was something else I just touched recently, and I don't remember what. Yeah. grayhatter_ people like that is why murder will always have to be illegal
But I was looking at it, and it said, like, 2025 dash... It was a couple of days ago, so it said, like, 1706, and I saw that, and I was like, you son of a bitch. I didn't email them and like yell at them because there was something else. I can't remember the specific circumstance, but it was so ridiculous. Oh, I fixed that route. This wasn't a race. This was, am I on a new? Yes. This wasn't a race. Route deploy was hooking the wrong thing. So every time a Rails server started, which we were just talking about Rails booting, chamlis_ don't americans do mm/dd/yyyy? that's equally irksome to me
which includes every time we got an email or every time I started a console, we were hooking that Rails boot instead of a deploy. So I fixed that. So that's fine. Oh, the action mailbox routing. I did that. Chamless, yes, that is what Americans do. And it is totally legit that that is irksome. Year-month-date. You know, honestly, if they had written... So, hold on. They wrote this. grayhatter_ y-m-d is the only sane option
And I say wrote, but it was a script outputting it. If they had said, this is how petty I am, if they had written with slashes, I would still be offended. grayhatter_ 100% agreed!
But less so, it's the fact that they did it ISO style with the dates, because ISO is the one that introduced the let's just do it with dashes. grayhatter_ it's the - that makes it unforgivable
Ugh.

51:31Here we go. There's my new topic, getting offended over date formatting. The dash makes it unforgivable. Yes, absolutely. All right. Oh, delete Web01. You know what? It has been two weeks. We haven't needed Web01. Yeah, I could totally do that. That's great. So an important thing. This is I'm going to give you a pro tip. When you are deploying servers, and you replace a server, you should probably decommission the one that you replaced so that you stop paying for it.

52:15grayhatter_ lol, life pro tip
Now, I know that's a pro tip and I went pretty quick. I can break that down, but it turns out you have to pay for the servers you use. Whoa, why am I on? So I'm doing this off screen DigitalOcean tosses up a bunch of info, like it has private IPs. They're not actually that private. And I think they show up in our config file anyways. And you could totally just rent a VPS for $2 and map the internal network anyways. I don't think it's a VPN for you. I think it's just an internal data center IP. All right, so... This is the old Web 01. It is already powered off. I click Destroy. Type Web 01 because that is its name, even though it should have been Web 02. And great. There's Peter remembers to save 50 bucks a month. All right. Yes. Life pro tip. Don't pay for things you don't use. Oh, DNSimple. Yes. So we're, I mean, especially if I just deleted Web01, we are definitely not going back to it. So DNSimple, where's your panel? Simple. Yeah. Let me log in here. I think this one is safe to show. We'll do the one time password. Yeah, yeah, I can bring this on. All right, light mode warning. So we've got these domains, we've got lobsters and we've got lobsters.dev and everything is chill. So let's go into DNS. I should have turned this up a while ago. This is a small bit of cleanup. But all of these timeouts can get turned up.

54:42Oh my god, why is that animated? That is so offensive. Hour. maco_nix can it please handle the weird domains well?
And you, you know, I have been seriously tempted to start a domain name registrar solely so that all of the domain config is stored in like Toml in a Git repository. maco_nix because i own mackenzie.morgan.name
And the only way you can update things is you make a commit to your Git repository and you push it to me. Yes, and it should have all of the TLDs.

55:31You know, there's a thing I'm going to do for DKIM. Well, this isn't DKIM, but if I turn up the... It's fine. You know what? maco_nix and when .name was created, it was supposed to ONLY be registerable at the THIRD level
If we've had wrong spam headers for like two weeks, having them for an extra hour isn't going to hurt. Let me just do the job.

...52There are so many weird limitations.

56:00maco_nix so me registering mackenzie.morgan.name would still leave ross.morgan.name available
So I would like... Yeah.

...08Oh, interesting. maco_nix but then later they started allowing second level registration
Yeah, I used to work at a domain registry that worked like that. So it was... Is it still here? maco_nix if morgan.name is taken, nobody can have a third level
maco_nix but if what i have is taken, then morgan.name is NOT AVAILABLE but also NOT TAKEN
oh that's really guy so they got acquired and i guess they haven't maintained their dns redirects that was lousy yeah so it used to be the dot pro top level domain and it used to be you could only do a third level registration of like morgan.engineer.pro or morgan.doctor.pro and we would actually check that you were a doctor a licensed doctor or engineer before registering to you and it was a little too strange and people had these same kinds of hassles yeah why is this

57:20maco_nix i had to go around to like 12 different registrars to get mine registered bc they all assumed "oh, morgan.name isn't available, therefore what you want isn't either"
Oh, I guess I already turned up lobsters.dev. Good for me. That's really frustrating. It's like, your job is to be a specialist about this. I wonder if they... You know, I'm really curious. I bet they did correctly special case maco_nix 123-reg.co.uk is where i got it, and i keep renewing there, and they don't offer it anymore
for UK domain names because you can order company.org.uk and company.com.uk and those are fairly common. I bet they get that right and nothing else.

58:18Well, if somebody else, if somebody should know, somebody who is on a third level domain should know. How funny.

...35I wonder if we as Americans are allowed to complain about that sort of thing because, you know, we are culturally dominant in the same way that second level domains are culturally dominant.

...50All right, so there's my DNS timeouts. Oh, about. This one's a fun one. At views about about. So there is a note that we are hosted on DigitalOcean with yes. That's for the web server. That's for MariaDB. for the irc bot and hopefully church will finish our rewrite in and then we'll fold away that and then who put their hand up thomas did thomas will finish our sqlite rewrite and we will fold away that that would be neat and we use rustic for deployment that's all the same setup details servers are provisioned deployed with oh this is not marked down hatch box hatch box And you can read all our config. You don't need to say all.

01:00:23Is in our repo. And then let's grab that GitHub link.

...40There we go.

...50So that goes away. Cool. All right. One more thing done. Tune puma threads right, so this one is. Digital ocean peek at that. So i've talked about how we have. How many threads and how many workers, do we have and. Basically, on advice from Nate Berkopec, who bills himself as the Rails performance expert, and if there is another one, I haven't seen them yet, he does much better content marketing than the others, says, yeah, your number of processors should just, or your number of workers, which is processes, should just match your number of processors in the computer and then you should tune the number of your threads to use your RAM. I'm going to jump into light mode because where's the... Let me get up the server and the thing I want to show first. There we go. One of the things... We had this exactly backwards. You can read it in the history of the config there. Coming for light mode. DigitalOcean ships with CPU graphs and stuff. They have a little watcher daemon. And I had disabled it. And I kind of read some more about it. And everybody was like, yeah, it's fine. It's not a performance overhead. And so I was like, all right, well, I'll enable it. And then we'll get those clever little charts. And it's not a huge amount of, so you can see we haven't even deployed the server 14 days ago. And can you see on the chart where I misconfigured the server? And then I don't know what the heck this spike is. Who are you? grayhatter_ lol, it's subtle
614? Maybe this is one of those LLM bots that everyone is mad at. Yeah, I don't know what that is offhand. Yeah. So... We started out at, I want to say, three workers, and then I bumped it to four, and I was like, hey, I'll give it a minute to stabilize. And you know, we want to have a little bit of wiggle room for disk caching and stuff, and performance on the site is fine. It's actually a little faster than previous, which is nice.

01:03:44But like, maco_nix hahaha
paid for eight gigabytes of ram i want to use eight gigabytes of ram yeah i'll leave it the box also serves avatars and things and it's nice to have those in disk cache and linux uses unused ram for basically disk caching, and especially with avatars. Like if you load the homepage, you are loading 25 images and the whole world is going to load those same 25 images or our CSS file. It would be great if Caddy and Linux had that in RAM and didn't have to touch the disk. So, okay, I'm not going to bump up the number of threads. We're fine. You know, don't go looking for problems. maco_nix logrotate busted?
Why is this climbing monotonically? maco_nix oh ok
because we are not yet at the point where we're log rotating. That's fine. Okay. Yes, log rotate is busted. We are trying to override the hatchbox config and not doing it correctly. So we can look at that. It's on my to-do list. This is fine. Oh, you know what? Record final. This is not fine. Hang on. Hold on. Where's... Why am I on this tab? config puma. config puma. So it says for, but it's actually fetching it from Hatchbox from this environment variable. And I definitely can't show this one on stream because it's hilarious. But so Hatchbox has this cute little web UI for editing your environment variables. And it's just like It's the simplest thing you can imagine. So it's a table that says like there's an input for key and there's an input for value. And then there's like a save button, right? maco_nix can you show it from their docs?
You can picture this. So if I pulled this up on stream, you would see the values, which includes things like the Rails master secret, the database password, that kind of thing. And then at the bottom of the page and at the bottom of many pages in Hatchbox, there is a like an API and it gives a, here, I can show you a screenshot of this, right? Let me grab a screenshot and then what did it land? I think it fell in my home directory. Oh, six 19. Now did it go into slash TMP? Yes. All right. So we grabbed it. Yeah. Perfect. So then at the bottom of every page, there's like a, This is such a nice nerd feature, but it's like, hey, you can curl this API to set or retrieve or delete variables, right? That's great. And they have this cute little reveal thing, but like one inch above this is the secret key base for Rails and it's not censored. grayhatter_ lol
It's like they only care about preventing me from foot gunning their tokens, but the ones for my app, oh, you're fucked, you know, just YOLO it. grayhatter_ I've seen that so many time
grayhatter_ [redacted half important] \n UNREDACTED VERY IMPORTANT KEY!!!!!!!!!
okay so i had actually created a where's my terminal i had created this environment variable rails max threads so that has been overriding this i have been using 10 in prod so i'm going to do that and then you can't see it but off screen i am clicking You know what, I'm gonna deploy this and then click the remove to delete the environment variable so I don't forget what I did. All right. Yeah, yeah, gray header, that is exactly it. And actually like that Envar API is totally sensitive. chamlis_ is it worth dialing down the threads in dev mode or does that not matter?
Actually, you know, can I... All right, how much do we trust Peter's setup here? So if we say, let's grab this screenshot and then bring up the... So you might see the screen is kind of dimming. I use a very neat screenshot program called Bireshot. There we go. And I can just draw on this image. All right, the red, this is gonna be hideous, but... then you can see what I'm talking about. And it's very funny, to me at least. Because every time I load this page, I laugh. Because it's such a 10. What time is it? 10, 10. Oh, shoot. I've got to be coming up on the end here. No. Not that image. Not that image. This one. There we go. All right, so this I can show on stream. This is what the page looks like. And it's red because usually I'm highlighting things.

01:09:18That's a fair question, actually. So it's like, here's all of these. Most of these are incredibly sensitive, like secret key base. And then here's Hatchbox covering their API key. And I guess it's especially funny to see these next to each other because like you have the CSS styling. You could put the CSS styling on top of this prophylactically. And I'm aware that like there will be an extra hoop to jump through because it's an input and you want it to be interactive. But like, come on, it's secret key base. If I have to roll this token, everyone gets logged out of the site. maco_nix what if they did it for anything that says "SECRET" in a var name
The contrast between my secrets and Hatchbox's secrets is what makes this page funny to me. maco_nix or KE/y
maco_nix KEY
Anyways, let's, what if they did it for anything? Yeah, like that would be nice. Although there are others, like you might just call it, actually the one that's up top there you saw was called ingress underscore password, right? So at that point, maco_nix password also seems like a reasonable trigger word...
There is a feature in Rails called filter parameters, and we are basically recreating that of, you know, some of these things, if you see a word, we should probably assume that it's too sensitive to put in a log. So here is a longer, more complete list. Although it is worth noting, we are adding to the default Rails list. I don't remember what it ships with by default, and it is, I don't think it's empty by default. So, yeah. Let's do the same thing here. Let's copy and paste rather than retype, because you're gonna be annoyed, Peter, if you typo here and you knock the site offline. Cool. There was something about database pools. Oh, have I been doing it over in config database? Is that why I don't see it in the source? All right, so this is a big stream for me pulling stuff up off screen. But hopefully, it is not a big stream for me rolling tokens, because that was two weeks ago. Patch box. There we go. So I'm looking at the prod config database that gets linked in and we have a pool. So the, it mentions having five for maximum default thread size of active record. I think it's trying to say default pool size of active record.

01:12:36Yeah, so I'm going to bump that up in production as well to match. You know what? 10. Yeah, that's probably fine. So remind me how I let's sync. So I am off screen, I am deploying the. rod config database, which is just a file in that shared folder, so the active record pool size will match this one in prod. In this description is set the end of the to do list is that everybody so that's that's done. cool. Alright, so that's done that's done. Hatch box support. Oh, that one's yeah. I still have to do that. Restick. You know what? That one's not done, but they'll get aged out. So it's fine. I will spend an extra 20 cents to not manually delete stuff from backup databases because it is not worth 20 cents of risk. So what if I delete actual database backups? So there's that. This one's done. Oh, did I want... That one can hang around. That's still an idea. In which case... So I started using... pushcx https://obsidian.md/
This is a personal productivity kind of note, which is off topic for the site. Topical for the stream. There's this app called Obsidian, and I've started using it. And I think I like it because I don't do any of this very clever... like make a knowledge graph thing. This is literally just all of my notes files, but it does using a sync train. pushcx https://github.com/pixelspark/s…
No, it's, so it's got both names. Yeah. And then there is this nice iOS app that supports sync thing on iOS. There's another one called Mobius sync that sort of mostly works. chamlis_ oh can you force it to sync with a shortcut?
But I have this rigged up to a shortcut automation on my phone so that every time I leave my home Wi-Fi or arrive at my home Wi-Fi, it triggers a sync of the Obsidian repo. And that is exactly what I want. I put my notes and my grocery list and stuff in Obsidian, and as soon as I, yeah, that's the big feature. chamlis_ mine ends up syncing every two days when I put the phone on charge
I think under the hood it's called Intents, but where is it? For a while. Yeah, it's that, because iOS is so opaque and draconian about background processes. And I get it. They want to avoid ill-coded apps draining batteries, but it's super irritating. Yeah, here we go. So this app intent, anything, I've been poking around this code base. Like I made a minor typo fix contribution. I have never done any iOS coding. I'm a little bit curious. You know, of course, like everybody else, I have the idea for, oh, I want a killer app. But you can specifically sync photos with it. I can't get this to work because I have too many photos. You can sync albums, and if you have a small album, that will probably work. But if you have thousands of photos, your phone will get very hot, and then the app will eventually crash. And I haven't wanted to report it because I don't want to be grabby. I do wish that this guy would charge me money for it. I would love to pay... I don't know, $1 to $4 a month, something in that range, so that he continues maintaining it. This is a passion project, and it is such essential infrastructure that I am like, shut up and take my money about it. So I've replaced my use of Mobius Sync, which did the exact thing that Chamlus describes of, unless I remember to open the app before I leave the house, it doesn't actually sync. And I do all this hassle because, I mean, as you can see, I run a Linux desktop rather than an iOS desktop, so I can't cloud it. I cloud it. God, I hate that name. And I don't do all of this clever knowledge graph. I don't have a Zettelkasten. It's mostly just to-do lists and grocery lists and then notes of stuff to sort out and i'm liking it a lot i am slowly over the last month putting more stuff in it and the more stuff i put in the more i like it because i like having all my notes everywhere so i'm going to as long as i'm talking about that and then off stream i have my notes did i make a little project ideas list yeah So the idea was on lobsters, where's my, there we go. Logs to DO durable object. This is something Hunter knew about and had an idea. So a DO durable object is like, it's like an S3 file, but you can append to it. And then DuckDB can read from it. And we write our logs in JSON, which is very nice. All right, so this one, I'm going to put a little dash. That means I put it somewhere else or I canceled it. Lobster's dev fix content type. Oh, I did that, didn't I? Right? All right, curl-i. Can't even type the alternate name. maco_nix ah ok i knew id heard of obsidian before, but i remembered hearing of people getting it into their personal workflow and then when they want to use it at work too SURPRISE that costs money but that changed in feb apparently https://obsidian.md/blog/free-f…
yeah so it says it's html so if you load lobsters dev you just get a note and at first I couldn't figure out how to get the content type thing in because I'm pretty new to caddy very totally new to caddy had never touched it before this project oh look and then I have another log rate thing you can tell I've been fighting log rotate because I put it in like four places

01:19:36yeah yeah that's a lot easier and then also you can pay for their syncing service or you can set up something like sushi train and sync thing to copy between devices and their thing with sync thing you can still get merge conflicts. I made a little cron script that runs, well, not cron script, what do you call them? maco_nix wait, cron is deprecated?
Systemd timer, because I'm trying to move over my personal stuff, that runs in the background and it looks in my obsidian folder and if it sees any files that are named like .syncthing.conflict, it puts them into a... It's not that cron is deprecated, it's just... maco_nix that damn syntax?
it's so full of foot guns and they can never get better where systemd timers don't lose logs by default yeah it's and the weird environment stuff and the often wanting one little bit more config than they can do it's not that cron is deprecated it's that grayhatter_ systemd makes me so sad
I am deprecating my own use of cron because, of course, you know, on my personal machine, I have a whole bunch of cron jobs to fire backups and this and that and the other. And so I'm slowly replacing them. All right. So what's left? I have to send that bug. grayhatter_ I feel the exact same way about systemd that I do about LLMs
Which. Yeah, I'm not going to do that on stream and then log rotate. I didn't get to it. grayhatter_ "good enough" is the worst fucking meme and I hate it
I know a lot of people aren't fans. We have the whole big... I don't want to be dismissive, but we have a bit of a hot-button fuss around the vibe coding tag on lobsters, and a lot of people are mad that people can write code with LLMs at all. I'm trying to accurately characterize not... grayhatter_ I don't feel that's fair
dismiss or mock here, and obviously I'm not the world's biggest fan of LLM code if I booted someone from the lobsters repo for sending us LLM code. grayhatter_ because I hate LLMs, but that's not at all why I dislike the current usage around LLMs
On the other hand, I also have written scripts that were made by LLM to do odd jobs because I don't care about the copyright on a script I run once and throw away. But it reminds me a lot of why lobsters actually has a systemd tag. And I don't remember when this came in, maybe like 10 years ago. And at the time, systemd was a lot more contentious. And now it doesn't get used so often anymore because the hot war has become like a simmering dlamz people have mostly gotten over it, it's great :)
Lingering conflict where old men sit at the coffee shop and talk about the war rather than a thing where people are actively shooting each other It's not that like hostilities are over they're just you know Mostly got yeah, that's another way to put it. Yeah. grayhatter_ systemd used to be a lot more toxic than it is currently... a lot of sane people have started working on systemd
Thank you tea lamps All right. Well speaking of mostly getting over stuff it is time for me to roll out And I got to all right, so let's say I grayhatter_ more sane != currently sane
Hatchbox to-do list, right? maco_nix ON THAT NOTE
So that I got to still next time.

01:23:30chamlis_ thanks! got a shortcut set up to sync whenever I close my editing apps so that's great
maco_nix yall see the stuff about the X11 fork?
maco_nix speaking of toxic
Cool. Oh, the X11, the X Libre guy. Yeah, we got... some really ranty brigade-y stuff removed. grayhatter_ maco_nix it'll be interesting too see if anything comes from that
I think, given the maturity level displayed by the people starting the fork, they're very unlikely to succeed at getting packages accepted into any distribution. But I'm actually pretty uninformed about the whole, like, X11 Wayland stuff. I don't know. grayhatter_ the majority of the stuff I know is from lunduke.... so it's fair to say I'm misinformed
maco_nix only one?
see how that goes if if there's been a write-up of it that's not from a weird kook i've there was that troll guy who writes really trolly stuff about the linux community and i banned his blog because it was just such bad faith garbage that all of the discussions were like rehashing his misleading stuff that's the one i'm thinking of yeah greyhatter and then somebody submitted his youtube channel which is just it's the same crap yeah we'll see if anybody serious wants to write it up i swear i saw one fairly neutral write up grayhatter_ forks need 6mo before they gain meaning
where it was like, yeah, here's who's actually involved and here's what they're actually beefing over and here's who is and isn't a meaningful contributor to X11 because this whole Ex Libre fork sounds like the guy has only been around the X11 project for maybe a year and not had a lot of stuff that landed and worked. And so he's pointing at a lot of hot button political stuff to say he's being censored grayhatter_ freedesktop is pretty fucking toxic to be fair
When it's just like my guy, your PRs aren't very good. I don't know. My PRs aren't very good and you don't see me forking anything over it. Oh wait, actually I did fork lobsters and start barnacles. Speaking of failures. Yeah, that one didn't really go anywhere. Frici @grayhatter_ ah yes, our lord and savior Lunduke... I hate that guy with a passion and he is as obnoxious IRL as he is online :)
Too bad, community sites are hard to start. Any case, rather than... grayhatter_ lol
Frici but I won't get into this here, not the place.
chamlis_ thanks for the stream!
grayhatter_ good luck pushcx hope you have a good thursday dude :)
roll into litigating other people's dramas i gotta go catch a train oh lucky you for each you to get to meet him in person so i will let you to chat in irc about that and please be cool anyways that's the end of the stream the next scheduled one is monday afternoon i hope i will see you at 2 p.m chicago time and until then grayhatter_ thanks for hanging out!
Please contribute lots of bug fixes for the bugs I insert and for the features I demand. maco_nix ciao
Take care.