My springbok sense is tingling again

Streamed

Reviewing several active PRs for Lobsters. Merged markdown via details/summary PR for better semantic HTML. Deployed CSP reporting PR to improve security. Examined IRC bot to Ruby conversion PR to replace JavaScript with Ruby. GitHub’s increasing flakiness has activated my springbok sense about dependencies. We don’t have a prod uptime monitoring service that is professional and affordable. Preparing for Lobsters’ 13th birthday stream on Thursday.

scratch


topics
  PRs
    markdown via details/summary https://github.com/lobsters/lobsters/pull/1636
    CSP reporting https://github.com/lobsters/lobsters/pull/1631
    update commonmarket https://github.com/lobsters/lobsters/pull/1627
    irc bot to ruby: https://github.com/lobsters/lobsters/pull/1637

  hatchbox deployment tidying
    logrotate :(
    test with email rep service
    HSTS
    hatchbox notes


title
  my springbok sense is tingling again

post-stream
  last call bell for stream ends
    

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

Recording



01:00Man, from hot mic to no mic. There we go. All right, so this is the Lobster's Office Hour stream. Let's get Lobsters up on the stream. This is Lobsters. I am disorganized and chaotic today, so maybe a little distracted. Probably run for about 60 to 90 minutes, but... pushcx This is Lobsters office hours, drop in and ask questions about the site anytime!
This is lobsters office hours drop in and ask questions about the site anytime there we go.

...48And there's one of those distractions there's a. yeah i try not to get super personal there's a family thing it's good it's not bad news but i may get called away so yeah there's another one so there's like folks in the neighborhood texting and if they drop in i really do have to step away to see them yeah okay hmm so absent folks asking about the site i work on the code base you can look over my shoulder things have been active we have had a couple of very active contributors gemless thomas and nav mike i only remember his github username and vivshaw has been quiet for a week or two but it's been really wonderful having so many excellent tall wealthy i don't know other positive adjective contributors they're all great people so pushcx https://github.com/lobsters/lob…
I think the last stream, yeah, four days ago, we merged this. And then this morning, I merged this pull request, which is a high touch surface for new users. And I will just show Chalice's great screenshots here, where previously, This was just the little gray text on the right that said markdown formatting available, no background color, no triangle. CaiusHardcore Love to see less JS
But shifting to replace this JavaScript with the little twiddler triangle, that's the HTML detail summary, is a nice use of semantic HTML, has a nicer control to it, and means we get to delete JavaScript. Yeah. So for those who are following at home, we only serve JavaScript to logged in users as a very slow burn project for the last, I don't know, since before I became the site's admin. So call it like 10 years, I have been slowly making JavaScript totally optional for users. I think. There's a real chance that voting is the last thing that requires JavaScript. We're getting there. So Chambliss did one more of it driven by her, let's see. Oh yeah, and you know, I have mentioned like on all of the last couple of JavaScripts, her. last couple of streams that github is getting jankier i saw it i didn't screenshot it on this one but i saw it where she replied to me and pushed stuff and it just failed to refresh and include her comments or any indication that she had commented there's a vicarious_o Always lurk but just wanted to say thank you to you and others for the work on Lobsters. I visit it multiple times a day and always enjoy the posts and resulting discussions.
a philosophy for small projects and indies where you sort of have to be at all times alert to danger like you are a prey animal on the savannah you know if you picture like oh what are those those like deer things with the twisty horns here with help me gemini CaiusHardcore Springbok?
greater kudu and bongo those are sure not names that I knew oh thanks vicarious welcome springbok I don't have my on my personal browser I have Firefox changed something in the way the Omnibar works this last week, and it's broken muscle memory. And it drives me up the wall in that, like, yes, Springbok is what I was thinking of. Thank you. You know, I talk about changing high touch UI. I hope that they are very, very careful and deliberate about things like this. And realistically, it's been like a decade since they made a change like this to the Omnibox. But it's always so painful to have my muscle memory change. They also do some kind of search box detection. So if I have this up and I start typing like, I don't know, vicarious. Oh, it doesn't do it. Yeah, here we go. It goes search with Wikipedia. So this one's kind of interesting because if I'm on lobsters and I type vicarious, it doesn't do it. Why didn't it do it? Because there's nothing in my history. Oh, I got to bring this in. PudottaPommin hellou
I can't because I know. So it somehow detects that there's a search box on lobsters. And if I start in my personal browser typing some words with lobsters tab open, the top result is changed to search lobsters because it detects that there's a search form on the page because of some metadata. Or maybe was I actually on the search page now? All right. So me getting distracted aside. As an open source maintainer, you want to be a springbok on the savannah where one member of the herd is always kind of paying attention and watching out and alert. CaiusHardcore And when the trolls descend you poke them with your twisty horns?
And I have maintained a bunch of projects that have, especially those with few or no resources, chamlis_ hi-ho
And you have to be alert for when one of your dependencies is going sideways, like when your hosting company suddenly, like they stop reporting outages on their status page. Oh, hey, Chambliss, I was just talking about your PRs here. And when I was merging your other PR this morning, GitHub was flaky in a way that is triggering me being a nervous Nelly about dependencies on volunteer projects for something I care about because you want to see the disaster coming before your dependency goes down or before they're like posting the blog post about the next step on our incredible journey. And GitHub's flakiness the increasing flakiness that I showed in the last stream and that I saw merging this PR this morning is starting to trigger that sense of what's happening here? Is something going terribly wrong? Do I have to figure out how do I, you know, I was thinking like how many, how much incredibly vital stuff there is in the comments and the pull requests Issues and pull requests. PudottaPommin are you going to make your own github? :D
And I was like, maybe I want to start looking at those things like. Get bugged that back those up. Oh, God. no my list of you know i won't i won't lie actually that's too strong a reaction i have thought a second about it because jujutsu is so nice and its workflow for making stacked prs and incrementally improving prs is very different from github i would be lying if i said i wasn't tempting tempted But I have more than enough projects as it is so I am realistically just not going to take on. Especially a giant project that hits so many of my. I have a list of like desirable attributes in a business as an indie and has to be up 24 seven is a strong hit against one. And a code for it really does have to be up 24 seven because it's essential business. CaiusHardcore I keep currently resisting writing a simple uptime checker for similar reasons, how do you keep track of your own uptime? Also effort.
so chan was looking at this i think this is ready to go right you change it yeah it's no longer a draft so you're ahead of me on that front oh well how do we keep track of uptime caius you so this is just relevant to us because CaiusHardcore I thought it fired but didn't SMS you?
chamlis_ just flicked through the diff, it looks ready to go to me
two or three weeks ago we had an outage and the detector failed to fire yeah that was that was called hetrix and there was no indication in the dashboard that it was in a disabled state yeah i mean it emailed me but for different reasons i don't get email on my phone i did just fix that that was nonsense with personal config but yeah okay and then i tried uptime robot that seems to be the most popular choice and they have a like you can just buy credits for sms or there's like a low dollar a month sms plan but their site is broken and i literally couldn't go through the billing flow and i got just CaiusHardcore I basically want Uptime Robot from a decade ago :| DNSimple of Uptime Checking
tier one responses it did actually look like a human was reading my message but you know like I sent screenshots of their do I still have it not handy I sent screenshots of their billing portal throwing a 500 at me and they were like okay well if you just try again it should be fine and I was like buddy I've sent you this same screenshot three times with three different URLs of yeah yeah actually i would have thought that it's one of those things where it's like something odd in my browser setup is prompting their their billing portal to 500 but having run a service you should be like pulling the fire alarm bell anytime there's a 500 out of the billing portal because that's a like do you have a functioning business or not and that is both the developers monitoring for that needs to be a fire alarm klaxon but also your support should be trained that people unable to give you money is a fire alarm kind of event and that That part was very conspicuously missing from the interactions I had with their support so at the moment lobsters has reverted to the uptime monitoring it had a year or two ago, which is. The other moderators and a couple of longtime users have my cell phone number and my signal username actually chaos, if you want that please DM me off of stream. and the site goes down hopefully one of them notices and texts me or i notice in irc but right now there isn't what i am looking for which is an uptime monitoring service that costs between i don't know call it like five to ten bucks a month or one of those like pay as you go for sms tokens but it does actually have to work both in the PudottaPommin last week I wrote myself simple telegram bot, to send me message
PudottaPommin I wasn't in IRC for decade :D
notify me if it is down and in the sense of you have to take my money which both hetrix and uptime robot failed are you the person i was talking to on irc about telegram and writing your own bot because i totally understand that impulse PudottaPommin so surely not
but I want to pay someone for this because, ah, okay. Well, somebody else had, someone in the Lobster's IRC channel did basically the same thing. And I don't want to personally roll this. I literally want to give someone money for this so that there is someone whose full-time job is maintaining the uptime service. because if I hand roll one, it's just going to be, I am somehow going to include a dependency in the op side of things where it is also dependent on like my personal credit card. And so the Lobster's hosting will get turned off by the hosting provider at the exact same time as the bot, right? Like there's going to be one of these dependencies shared between production and the monitoring service. that will invalidate it. And then three or four years from now, it will bite us. And once again, we will be down with no uptime monitoring. Like I just know that if I roll my own, that's going to happen. So I want to pay someone for this. And similarly, I do not want to use a volunteer thing because volunteer things tend to disappear quietly on their own. And especially with uptime monitoring, where I hear nothing from it for six months, And then we crash. Well, I have no idea of knowing if in month four, the volunteer thing went away. Then again, we're down without notice. So I really want to pay someone for this. I just don't want to pay the, I am running a business SaaS and my lowest SaaS plan is $50 a month. Therefore for uptime monitoring, paying 30 to $90 a month is, you know, it's a rounding error. It's, The office coffee in a SaaS costs more than that. It doesn't matter. But as a volunteer project, we can't quite pay serious business prices. pushcx https://github.com/lobsters/lob…
All right, so this one I will, did I, I don't think I threw the URL here, but this one is leaning on Telebugs, which is a nice, really nice improvement to our production setup, I guess I would call it, where previously bugs went to my email. Now they go to all the mods and we can see stuff and we have a nice interface. It really is pleasant and wiring more stuff into it seems like a significant improvement. All right.

18:15Yeah, so CSP, for anybody who doesn't know, is a way for websites to say, hey, you know, I don't even use inline scripts. PudottaPommin truth be told, I never used any monitoring LUL
So if you see one, I'm probably failing to prevent a cross-site scripting attack. So you should just assume that if I serve you an inline script, that you shouldn't run it. And then also, could you maybe give me a heads up that you saw it? Because obviously I didn't want you to see that. And so, Chamlus here has configured the header for CSP, which has been disabled forever, basically. We put the outline of it in place, but we couldn't be strict enough until... me and chamlus and other contributors removed the inline scripts and i think we still have inline styles yeah maybe we'll get those one day but this is just one of those like belt and suspender security things chamlus do you remember how did you even get into doing this one because i want to say it was prompted by something else

20:03chamlis_ to help me sleep better if we switch to escaping rather than stripping HTML from markdown
ah yes that's great yes so chanlis is working on we'll jump over to that pr next on improving our our updating our dependency for comment rendering which of course anytime you take user input and present it to other users on purpose you have to worry about cross-site scripting And it is very nice to be deliberate about that.

...45Is there a whistling past the graveyard emoji? Is there a knock on wood emoji?

...58So by the way, I haven't remembered to mention in a comment, but Chambliss, because you like to force push your commits, I'm guessing that you actually really like your commit history. So I'm kind of defaulting for all of your PRs to merging them instead of doing a squash merge, unless they're very small, because it's clear to me that you are deliberately crafting nice commits and force pushing to update them and stuff. So... Anyways, just trying to work with your style. So with that, let's deploy that. So first things first, let's. chamlis_ I try to make the commits atomic, but feel free to do what you want with them
JJ get fetch. Wait. It fetch. CaiusHardcore Woo, jj
All the notes which I don't strictly need to do this. Because I don't need the code on my computer, I just need to run lobsters. Ooh, I got a conflict. Albynton hello
Okay, well, one of the nice things about Jujutsu is we can come back to that. So let's lobsters deploy, and then I will off stream. Oh, hey, Ableton, welcome back. Yeah, Caius, I've been using Jujutsu about a month. I like it a lot. So off stream, I am pulling up the Hatchbox app because I know that if I... update caddy file which chamless did there i have to hit the update caddy button which is where here in the settings yes okay this is actually a page i can show oops sorry i should have given the light mode warning but we can have the caddy file text, and so I have to come and tell it, you've got to update the caddy config. No, it doesn't have any secrets in the caddy file itself. But it does, yeah, these aren't secret. It does, I think, print the full caddy file, which includes, yeah. Oh, actually, it doesn't include the imports. So this would have been fun. So here's the tail end of that of it takes the whole caddy file that it generates with its little bit of templating. And then this was the thing I didn't want to show is the contents of these files, because we unfortunately have some code that I don't disclose that's in the web server config to prevent bad browsers. PudottaPommin I checked today Hatchbox, and people said, that it decreased their hosting cost 10x - from $200 to $20is h ... was that your case too?
And we have had issues where people who have bad browsers that do bad things have read our code repo because we're open source specifically to work around our mitigations of their abuse.

24:21Hatchbox. Our Hatchbox, adopting it increased our hosting costs because now we have a new $10 a month fee. We are, so Thomas, who's done a bunch of notifications work, it's getting a little yak-shavy, but this is prep work for dropping the view from the database, because we only have one view that's used for replies. CaiusHardcore Kinda comparing apples to oranges - depends what you're going from -> to. Scaling down from multiple VMs down to a single physical server is usually where you get massive savings - and Hatchbox lets you manage a physical server more easily
And if we can drop the replies view, we can port over to SQLite, which would let us stand down one of our two VPSs that we run on. And then the other thing that's happening there, I guess, is this PR, the IRC bot, because I don't really trust it, because I can't read JavaScript that well, it runs on its own $5 a month VPS. So we are getting to spin down, realistically in the next couple of months, we'll spin down two of our three VPSs, but none of that is actually related to Hatchbox. And I guess a big part of that is because we, as sort of a point of pride, PudottaPommin @CaiusHardcore yeah, it sounded like people just overspent on cloud instead of optimizing
that it should be possible for one to run their own VPSs, and we have a couple of odds and ends, like doing our own email that also is a point of pride. CaiusHardcore Or if you were using Render, Heroku, etc then it saves money letting you pack more into smaller VPS' with half decent devex
We've never been on something that looks like a platform as a service, like Heroku, Render, Fly, any of these guys, we don't use them and we're not a good fit for them. So, I could see someone moving over from one of those saving a significant amount of money, especially if they move to a lower cost. CaiusHardcore Hetzner also in Canada now I think
We're on DigitalOcean, and there are lower cost competitors like, I think off the top of my head, Hetzner, which is in Europe, and Vultr, V-U-L-T-R, which I have no idea where it's based. I think both of those are cheaper than DigitalOcean. DigitalOcean has a couple of features I like. I have personal stuff there I don't want to move. And it is based in America. Frici Vultr is also in america also ahoy
I want us to be physically based in America in our hosting because of the unfortunate experience we had with how much time we lost to, who is it, the UK's Online Safety Act. being hosted in the jurisdiction that we also live in is nice. Okay. CaiusHardcore Ah no, Hetzner in USA not CA sorry
Yeah. So if they're American, yeah, at this point, I would have guessed that their dashboard is similar. Yeah, but Hetzner is explicitly a European company. I want to say they're German. Frici I thought Hetzner is still in Germany
PudottaPommin Hetzner are Germans
Frici the HQ at least
I just would prefer not to have ambiguity about which Frici they DO offer services in american locations but their bulk of ops are in germany still.
country's laws we're subject to because there's just so much going on with who gets to be in charge of the internet the last couple of years and I don't see it settling out for years that skipping my political opinions, it's simpler if our hosting is obviously an American company done in America and the site is owned by Americans. Just it's it's fewer moving parts in the same way that I didn't want to have valkyrie in production or elastic search in production just minimize moving parts as a strategy. minimize moving countries as a strategy right polities I guess would be the right. twitchtd hi
yeah. yeah there isn't there aren't so many interstate differences that it has been tempting for me to find a Chicago. CaiusHardcore Makes sense, KISS ;-)
data center and rack my own server but that's not totally outside the realm of possibility honestly it's at that point it's we don't have the scale to justify racking our own hardware although i'm pretty sure that that's where we started that jcs had a server that he racked that him was his personal server i might be making that up it's been It's been enough years that I've forgotten about it. Oh, speaking of enough years, Thursday will be Lobster's 13th birthday. So if you know what you want for your birthday wish, let me know. Frici oh the lucky one LUL
I will make a cake. We will have an annual birthday post. I guess I'll do that on stream. So Thursday office hours will be a normal full long three hours. I don't know, just to celebrate that and do some more code. Yeah. CaiusHardcore pgrmr previously? Not sure if JCS had server previous to taht
I was thinking the title should... We don't get many announce posts. So I've made one that's one decade of lobsters, and then I said one dozen lobsters. CaiusHardcore Baker's Dozen
I thought that was kind of a cute title. I like the idea of maybe making these cute titles. So we could do... Yeah, JCS was on its own thing before programmer. Yeah, so I was thinking baker's dozen, but lucky 13, as Fritchie mentions, is actually probably better. Yeah, I don't know. I had thought baker's dozen, but maybe it's a little too close to having done one dozen lobsters. we could do a title like lucky lobsters hmm something in there we'll come up with something cute i will probably write the annual post before we

30:53Before I start the stream, because I write really slowly and if folks are talking, I will be even more slow and distracted. Speaking of which, let's pop the conversation stack a little. pushcx https://github.com/lobsters/lob…
And we can talk about. This is Chambliss's PR that she mentioned she was doing the CSP stuff for. Which, you know, now that I've deployed that. I'm peeking off stream at our lobsters telebugs instance. Okay. And it is not immediately filling up with CSP reports. So it looks like we are not currently being exploited on XSS. That's pleasant. Or if they are, they're watching the stream and turned it off this five minutes. No. No, we've been really cautious about a lot of things.

32:00It's one of those where if you get all of the basics right and you're deliberate, you're in pretty good shape. All right. I'm looking forward to this, so this dependency common marker is our markdown person library and they changed their API just a little bit and we are way out of date on it, I want to say like we pinned a two year old version ish. pushcx https://github.com/lobsters/lob…
And this one needs some more work from me so we will probably come back to this, I mentioned. The IRC, I'm not putting any of these in the scratch. I'm so distracted. All right, so what did we talk about? We talked about the PRs. We got the IRC bot to Ruby. That's this one. We will probably come back here to... And then... Where's the merged ones so that I can record them? Albynton Baker's dozen may be too much of a niche expression I think. Non-native anglophones will probably not know what at baker's dozen is.
Yes, this one that I started the stream with. Yeah, details, summary. Summary. And you know, Edmonton, it's kind of funny that you say anglophones because it's originally a French expression is my remembering. I got my etymology right. Why don't I see the one I just merged? Because you are sorting by when they're opened instead of most recently updated. Yes.

34:08Albynton wikipedia says it started in England :(
Why is this higher, though? We haven't touched that in the 13 minutes. CaiusHardcore First I've heard of it being french
Does it? Oh, shows what I know about etymology. Well. I had thought it came from French bakers rather than English, so I just misremembered the story. I would totally believe that it was English bakers back in the day.

...44You were doing right. I receive. Was there anybody else hanging out here? Oh, yeah, I did want to talk a little about. I'm just never going to get to these hatch box deployment. Tidying.

35:11The. Shifting to shorter streams because I've been busy coincided with a wonderful increase in contributors and pull requests, but it's meant that I haven't finished this deployment tidying after like I expected. Albynton the french wikipedia says the french version is a translation of the english expresison
Because I keep spending the full hour talking about stuff that people bring up and just barely getting to merge and review all this stuff. And if you have been closely watching the repo, you have certainly noticed that I have been commenting outside of office hours on pull requests and issues way more often than usual. All right. Albynton (it's suppose to come from an english law of the 13th century)
Oh, and if anybody missed it, this screenshot shows the novelty logo that Lobsters has to commemorate the Stonewall police riot. Yeah, I fixed a bug in that. The L was missing, or... No, it wasn't layered under, it was just missing. Oh, the baker's dozen comes from the baker's dozen century? It feels like there's a good bit there with how the 1200s are called the 13th century, so the baker's dozen is 13. We could probably come up with a terrible folk etymology and make language historians mad for centuries. All right, so let's think about how I want to spend the next pushcx https://github.com/lobsters/lob…
roughly 30 minutes let's call it i think notifications is getting so i'm going to share this link yeah so i won't i'm going to go left to right so that i can spend the most amount of time on Shameless is common marker PR because that one will require me to code.

37:37So Thomas and I who is. Thomas here is Twitch TV here in the chat. If he's still present and we are. Working through replacing that replies for you. With a notifications. And we kind of worked out all the stuff to do. Albynton the date is a coincidence, it's a law that Henry III of England edicted, "Assize of Bread ans Ale"
And for anybody who's a junior developer, this is kind of an excellent example of what replacing a feature actually looks like in production in like more serious apps. Thomas here has brought a, started 17 minutes ago. What is this just way out of date again? twitchtd I think github is having issues
chamlis_ I had this yesterday, which is why I pinged you last night on irc
why is the build running for 18 minutes all of the build parts are running for 18 minutes where did my tab go like what the lint should take seconds internal server error okay so something we're just gonna kick all of this yeah i think github is having an issue too CaiusHardcore Three cheers to Azure
chamlis_ sonnet has breached containment
you had this yesterday oh yeah i saw your message and i just thought it was some odd code thing that you sorted out and solved so i didn't even look into it because i didn't see your message live is there a do they use uptime robot disruption with claude all right that's not my issue CaiusHardcore Incident history bottom right will tell you if there's previous issues today/yesterday
i guess workflows or actions i don't remember what it's called actions yeah so that says green and i can't see detail all right sonnet is breached containment oh god i'm gonna get a bunch more terrible prs did i talk about that on stream somebody submitted some slop PRS and burned a bunch of time in a way that really frustrated me incident. history bottom right ah disruption with some no this is last month all right so they are not showing an incident in the last couple of days with actions no actions cash degradation

40:30From 12 days ago, it doesn't. I feel like if it had been ongoing for 12 days, there would be some kind of update. I don't mentally have GitHub flagged as one of those companies that fibs on its incidents. all right so this is looking normal where these other checks are finished in a couple of seconds and then this one probably is two and a half we might be creeping up towards three minutes so anyways what i was saying before i got distracted by figuring out whether the action was being flaky or the ui was being flaky see now i'm what's what's that animal i have to scroll up now my spring box sense is tingling again so i was saying that this is a really nice example of Thomas bringing more maturity and rigor to the pull requests where I mean if you read the CSP one you saw me kind of YOLO something into prod untested I didn't try to force a CSP error to see it reported all the way through I didn't try it from the broad console even I'm okay with that It's not critical. And there's a lot of stuff where if we take a minute of downtime, like for 30 or 60 minutes to run a big migration, that's okay. We don't have any SLAs that we have to report on our non-existent uptime dashboard. All right, so we've talked about how we kind of backfill or migrate data.

42:45So I made this full checklist of deploying because we're going to split this up into...

...56So that's done. That's done. And then everything... Oh, this is actually done, but... Oh, Thomas, the reason I asked about this is I didn't realize... It just didn't occur to me that you were taking screenshots as a regular user rather than a moderator because when I'm developing, I'm always logged in as... Most always logged in as a moderator. And then all of this stuff can wait. So I think this is ready to go. And it'll sit alongside. I don't even really need the backfill script to see this live. It can start filling in and we can come back to that. Thomas, I noticed you wrote whip on your last commit here. Okay.

44:41twitchtd I would like to write some tests for the anti flamewar logic I added and I already have a backfill script in a different branch, so I'll get those ready and maybe next time we can deploy.
let's see there's that senior developer maturity that i don't usually show on lobsters yes we could write some tests that always helps okay so i'm going to write down what you just wrote Streaming 2025, ooh, 630. I think it's three to get an HR, yeah. pushcx https://github.com/lobsters/lob…
cool well Thomas I really do appreciate that you're working through this in such a clean and thorough fashion looking forward to merging it let's see all right so this one I haven't looked at at all so this is just going to be I mean mostly just me reading and muttering to myself but The Lobster's chat room is on IRC, which is a venerable chat protocol and network, to be kind, right? pushcx https://push.cx/discord-vs-irc-…
What is the, it's a legacy system. If you are curious about what goes into it being venerable, our notes are over in that blog post of mine. But the bot that we have in the channel does things like, did he link the issue? No.

46:47Here we go. Where did my tab just go? Firefox off into a new window because I missed. so it has a bunch of features to announce commits to the code base in the chat room so that folks can see the site changes live that's one of those our commitment to transparency is you should understand what is changing on the site code and you can read all of the site code you can drop into office hours to ask me about the site code because it is so easy to see something happen on the site and think oh, a moderator changed the score or pushed that story up and down or off the homepage. We don't have a feature like that. We have never had a feature like that, but maybe once a quarter, someone assumes we have that feature. And so if we do all of these transparency things and folks understand what is and isn't in the code base, Hopefully our users can step up and say, no, lobsters doesn't work like that. mybackhurtss_h heya, just wanted to drop in and thank for the tip that I can filter out posts without having an account. Really appreciate having a sane post feed again <3
Lobsters is deliberately different and I can prove it. And that's generally what happens. And it really, really leads into positive community norms. So why did I go on that digression? Oh, because that's one of the features of the bot. And there is a lot more stuff along those lines that we can add. Like we could have, I think maybe not. gtfrvz @mybackhurtss_h can i guess which tags you filter KappaHD
Oh, hey, my back hurts. Welcome. Oh, you're welcome. Are you the person who dropped by IRC like a week ago? Because I just told somebody in chat there. Yeah. So every couple of years, we get one topic that people... have strong feelings on. So we have a systemd tag that does not get, this is honestly more uses than I thought, but the people who don't like systemd and don't want to hear about it really don't want to hear about systemd, so there is a tag for filtering it out. And that was, I think of that one as having its most active PudottaPommin I wonder if you will have to add XLibre tag LUL :D
meta discussion in like 2014 15 when systemd was a lot rougher ex libre you know i will be surprised if they produce a functioning project that can get packages into repos because It really looked like someone who is not an effective contributor both technically and socially was shown the door for technical reasons. mybackhurtss_h No, last time I was in the IRC was about half a year ago. I was given the tip by you in an office hour stream about a month ago
and claimed it was social reasons because nobody wants to say they got booted for technical reasons. And there is a lot of does not play well with others that makes me think they're gonna struggle to maintain packages. Oh, okay, my back hurts, sure. mybackhurtss_h @gtfrvz I mean... it's quite obvious
I mean, we talk about this stuff all the time. So,

50:36So let's take a look, because if this is Ruby, we can do so much nice stuff. Okay, so he's got, I'll have to read that full thing, and that's our online comment. Albynton @mybackhurtss_h You filter posts about office chairs? :)
If anybody doesn't recognize the username, Church here is Aleph on IRC, or wait, no, he's Aleph on the site and Church on IRC, and I guess Church on GitHub, I cannot, CaiusHardcore Could we have a separate Gemfile for the bot?
keep track of people who have different usernames even when they're the moderators it's so hard for me this this is more new dependencies than i expected and we already i think there's some duplicates so church had said that this is his first time writing a significant amount of ruby Yeah, so here's JSON already. We've got a bunch of redundancies. mybackhurtss_h that would be an interesting post to read hmmm, at least more interesting than half the posts with the tag I hide
We can and probably should have a separate gem file for the bot. Yes. But since Church is new to Ruby, he doesn't know that. That's fine. Everybody can be a junior developer in something. All right. So we got that. All right, so he's made a mock turtle directory. Great. Oh, and already started a read me so that I can understand what the hell I'm looking at. This is great.

52:16With its own standalone license. I don't remember what it never comes up, but what licenses are code base under? I don't think we need a separate. license file.

...40I think this is this sure looks like three claws MIT right.

...57I will ask now about licensing yeah.

53:04Let's start a review, right? If I'm starting to line these things up.

...33CaiusHardcore 3 clause BSD I think, rather than MIT?
Three Clause BST. Oh, yeah, you're right. Three Clause MIT is not a thing. I'm just misremembering. Thank you.

...54Well, actually, it's not. It's because code. will be shared between the bot and site.

54:23OK. It's a little odd to me that IRCH didn't configure Zitework to automatically load stuff. So we've got scene. mybackhurtss_h Last time I talked in the IRC I got some great feedback on my blogpost. Such a nice and helpful community there :))
Oh, great. My back hurts. Do you have a? If you have had a blog post posted to the site, we really welcome authors. If you post an IRC, someone will very quickly give you an invite to the site.

55:24mybackhurtss_h it was not posted on the site, only discussed in the IRC
Okay, so we've got a bunch of commands together.

...34mybackhurtss_h my posts are too "normie-focused" to be posted on the site for now lol
okay i like this more than the javascript version this is a cute feature if you give it a CaiusHardcore If you show up to both stream and IRC you're probably super welcome to an invite ;-)
Yeah, so he has it matching a command, but we'll get that wired up.

56:18Yeah, well, and especially if you like to write useful, informative things, if you are a normal person being, you know, I don't know that I've said this on stream, but I wrote something really important in the About page, which is that invitations are used as a mechanism for spam control to slow registrations to a pace we can acculturate and to encourage users to be nice, not to make the Lobster's user base an elite club. This is a really important part of my philosophy about the site. We are not automatically smarter than the rest of the world. We make all kinds of mistakes. We have stories and comments with errors or bad opinions in them and it is okay. Invitations help us maintain a culture and they are enormously powerful for preventing spam. But we are not the cool kids treat for it. And I really don't want the Community to get a chip on its shoulder and believing that it is the cool kids tree for because we are not, I am not cool. So by induction nobody is cool. that's induction right.

58:02Albynton some lows quality links were posted on the site, so don't worry about what you od
oh yeah i mean every time you see that push.cx domain you know it's a crap post you know for meta discussion i try and keep this time for folks to bring up their own topics for meta discussion we should probably have some kind of written policy and i say policy we should probably have a sentence on the about page about posting the blogs of moderators. CaiusHardcore Gotta run, nice to see someone got further than I did with caius/mockturble repo - I got too hung up on making it "good" rather than just "functional". :)
Albynton I didn't want to mention you by name, but you read my mind :p
I think I'm the only one with a blog that is sort of topical, but I wrote a post about setting up my TV and there was kind of, was there enough technical content to really be topical for the site? I mean, it started with, tail scale but the site the the post was kind of magical for topicality and i didn't want to instantly yank it and the discussion went okay but i feel like mostly that was posted because hey look that moderator posted a thing and i i'm super leery of turning the site into the peter show and i really don't want this stream to be the peter show We should probably at some point come up with some kind of policy around mod blogs.

59:43I don't know, maybe just if they're gonna get posted, that moderator should alert the others to review it with a stern eye towards topicality.

01:00:14mybackhurtss_h Well, I don't really find that many cool posts that I would share on the site. Like on the yellow site I only have 1 post in all my time being there
Wait, which site is yellow? mybackhurtss_h *orange
I know an orange site.

...26mybackhurtss_h my bad
mybackhurtss_h got my colors confused for a sec lol
Okay. No, no, you're fine. I think you can even change the colors too.

...56A little meta humor there because your username is orange.

01:01:22gtfrvz this bot need some ACTIVERECORD
mybackhurtss_h thanks for having more spacing in the design btw. The amount of times I've accidentally clicked things on the orange site I didn't intend to aaaagh
Okay. So this is all pretty clear oh yeah you know actually gtfr easy i was probably going to write that comment in a moment but my back hurts we did an experiment on stream a little while ago where i deleted all of the font sizes from the css And I think the site looked better for it.

01:02:05If if you're comfortable with CSS you could experiment with that. might make for a really nice pull request.

...19So these.

...27Why is this in a loop is loop a function of higher cinch.

...39Because I think that's just the regular Ruby new.

...54yeah. OK, so I don't need to come in on that one because putting an infinite loop in there, he'll figure that out pretty fast.

01:03:26chamlis_ there's a sleep at the bottom of the loop so I think it's polling?
mybackhurtss_h huh I thought my chat color was yellow. wonk
oh yeah i didn't catch that but maybe that's what's happening and he's using it like a whole event loop for it i'll ask a question you know if you have questions it's totally okay to post comments on prs i am not the king of pull requests i am just the i don't know gatekeeper of pull requests all right oh i was starting to type things i was saying that's cute that you can change it all right consistency of matching the so we have the feeds and if he's just Defining them there that's fine yeah no right so.

01:05:01mybackhurtss_h man active record gives me flashbacks to microsoft access's SQL shenanigans. scary stuff
Oh, I get it so he's pulling in open your eye and the rss parser because it monkey patches yeah all right.

...19Well, I guess, make that point somewhere where there's an explicit open call. PudottaPommin you did today pretty solid moderation work :D
Oh, okay. So that's why there's the infinite loop is it's multiple threads.

...37Hmm.

...43thanks. Oh, were you referring to the, the thread about B cache FS? PudottaPommin bcache and paywalls
Yeah, there was so most well, no only a small part of that appeared in the mod log there was also a bunch of ah there's also a bunch of and i'm saying this just to make it clear there what happens there's a bunch of dms where i had dms with pretty much everybody involved in that thread to talk to them about their actions and Some of that was chiding and some of that was, hey, thanks. And some of that was, I think you misunderstood what happened. Let's talk about that. And the reason those don't appear in the mod log is because if you see in the mod log, PushCX DM'd Church about this comment, it always looks like a punishment. And that level of attention and scrutiny mybackhurtss_h oh there's DMs on lobsters? damn this site has so much cool stuff I was not aware of
PudottaPommin "I'm the moderator" thus "I'm right" Kappa
automatically looks like a punishment and i really don't want that because it is very hard to have a honest conversation when there is a power imbalance of i'm the moderator and that user is not right it is infinitely harder if there is also the impression that we are doing this on a public stage it is much harder to communicate. Yes, there are DMs on lobsters, yeah. Right, that does make the conversation harder. And I try to ask more questions in DMs and I only lay down the law of, no, it's gonna be like this when there is something very serious going on and it is very clearly against the rules. So anyways, just to kind of pull back the curtain somewhat, The mod log, by design, can't show everything we're doing as moderators because if it showed all of those conversations, it would look like punishments or it would make those conversations, even the ones that are punishments, much harder to have.

01:08:21And then on the paywalls, yeah, that guy flew under the radar for a minute about self-promotion and his practice of linking his site so that he could get people into his lead gen funnel and maybe SEO juice, but then pasting the text of it so that it didn't instantly get removed as a paywall. You know, it's not often That new bad behavior shows up because we're a pretty mature site for, you know, as we're turning 13. Ooh, isn't that the traditional age for a bar mitzvah? easeout mazel tov
Instead of baker dozen or lucky 13, we could have bar mitzvah for lobsters. I guess we're not actually Jewish and it would be rude to kind of poke fun at religions. Oh, hey, he's out at their, pushcx https://github.com/lobsters/lob…
PudottaPommin if someone takes offence, it's their own fault
practices i would hope it would be obviously you know meant in good taste but no this one this commit here was written in response to the paywall guy because his blog post was so long that he pasted into the story description that's not the case at all pudota that's We'll talk about that in a sec, but let me finish this thought. So I added this to explain what was happening, but then the moderation action had to be longer because we actually had a bug that removing his story text created such a long action that the moderation failed its own internal active record validation and didn't save and then the mod edit failed it silently which was super irritating as a bug because it is it is a rare event at this point mybackhurtss_h dming people to talk moderation about their comments sounds so kind
That there is some kind of novel bad behavior where I have to write code just to deal with the bad behavior. You know, sometimes I write code to help prevent future incidents or something else, but like causing a bug in the site. That's a new one. That's very rare. And it is a little bit irksome.

01:11:22PudottaPommin can't happen on sqlite :D
yeah yeah i did actually have that thought that i wouldn't be writing this migration on sqlite

01:12:07mybackhurtss_h migrating with sqlite is such a pain
yeah that is one risk there and that's part of why thomas is doing some testing and has clearly written a whole bunch of tests i would have to dig around in the issue tracker and i'm already like three distractions deep on this pr but we're doing some performance testing and i am a little concerned about migrations because i understand that there are a lot of live migrations that sqlite can't do i think for lobsters maybe it's okay because we could change the deployment script to throw up a page saying hey we're migrating i mean we could even do because our readers are developers we could even like link to the currently running migration on github

01:13:15chamlis_ ooh that'd be cool
mybackhurtss_h ooooh
yeah i've done it for previous migrations where. olexsmir that'd be cool
So you you probably watched on stream stuff related to the hatch box migration, where I spun up a box and it's called web oh three. fraud was web oh one. There was a web oh two in the middle, but I was so busy with stuff that when I had to reroll it in a hurry I didn't remember to rename to web oh two because I was just thinking replace the exact thing. But yeah we had an outage and I just put my to do list up as the outage message, it was just like an html file and. So I just put in like a pre tag and then my checklist, and it looked a lot like this where I was just kind of putting X's down the last left column is the migration ramp. I want to say Dan Liu took a screenshot of it, but I don't remember if I think this predates blue sky, so probably on Mastodon.

01:14:31wait, make a separate gem file. Yeah, we can still require stuff in the parent directory. So that's fine.

...54twitchtd @mybackhurtss_h got any references? I'm curious enough to read about it
And shameless, I'm finally looking at the clock and I definitely blew through my schedule, so I'm not going to be working on my common marker stuff on stream here. I think you'd have to pull up. chamlis_ no worries/rush, hope all's well on the recheck front
OK, so he's master on social. Can we search? mybackhurtss_h I don't, but TLDR: you have to delete and recreate a whole table to change a column type)
mybackhurtss_h types in sqlite is quite wonk
from dan lu lobsters hosts maybe he said the word my system working at all yeah i don't think it's doing anything

01:15:53twitchtd would be cool to see a recheck demo
Let me peek in my notes directory for a second.

01:16:15Is there...

...24Now, I was wondering if I had the migration file, like that text file laying around and I can't instantly spot it. dlamz i love sqlite but don't forget to turn on strict mode πŸ™ƒ
Yes, Thomas, it would be cool. It would be very cool. And I have dropped the ball by not being ready because I had wanted to do it on this stream. And I am not ready. I had a bunch of stuff come up this weekend and I spent a day and a half on that stuff instead of it. So it's not ready. What is strict mode? Is that the enforce types?

01:17:10mybackhurtss_h strict tables my beloved
Is it lip sponge or extra sponge? I can't remember. Extra sponge.

01:18:15dlamz yeah
why is time here time for getting my ruby yeah it's in the standard library it's loaded yeah

...49How did I use my place?

01:19:23I think, will he automatically get strict tables when pulling in active record?

...37Where's the entry point for this script, not commands? Yeah, here we go.

01:20:00do we want this to boot rails or not no i don't well so i'm trying to think of at some point i would like to pull in a model that's a little big to drop on a ruby newbie i will deal with that yeah

...38mybackhurtss_h unrelated but I love the blogposts that allow you to fiddle with the visualizations. iirc there was one about rate limiters posted quite a while ago and I was sitting on my phone fiddling with that for like 20m lol
mybackhurtss_h *exponential backoff, not rate limiters
Yeah, interactive visualizations are pretty great. They're one of my favorite things online too.

01:21:39okay so i think i think that's everything yeah there's well all right so

01:22:08So I'll handle it on pairing. Loading active record, I mean, and the Rails app. The big question is how are the two going to communicate because

01:23:08background and job.

...38Think that's it.

01:24:12mybackhurtss_h lol yeah that happens
all right i know it's an exciting streaming when it's just me writing a comment and thinking hard and i should maybe mention that when i'm streaming i tend to make a lot more bugs and mistakes and you have seen the typos and me typing the words that somebody says in chat just random nouns appearing because they went by in the corner of my vision so all right that's a good little review If I had more time, and I really don't, because I have to stand up here, I would want to work on this, Chamless's PR for Common Marker, because this one is blocked by me, and I hate blocking contributors, so I'm sorry, Chamless. But I really need to write a script that renders every comment in the database, and yeah, see, she's already... mybackhurtss_h shit that reminds me I have a pull request I've been procrastinating reviewing for like three months
updated the last stuff i found i didn't keep her busy and distracted for very long before it fell back on me yeah i to answer your question chanlis because i'm just assuming you're still present I would like to get rid of the marked down columns from the database just for size, and then move them into solid cache. But I have to be confident we are getting semantically equivalent HTML out of the rendering. I think I gave the example. Yeah, like I don't care that the new ones have rel equals nofollow. We should have re-rendered really to add those to all the old ones. But then there are also minor changes. Yeah, here we go. Albynton Did The Player of Games have so much of a cultural impact? I see quite a few references to it now that I read it.
Mark specific changes that are fine, like changing ampersand em dash into the Unicode character. Like I'm calling that semantically equivalent. And I probably said syntactically because I'm distracted on stream. Good example. That's totally why I did that. It's just to give an example, not because I get spacey on screen, but. chamlis_ right. I hope I have all the settings right now, I didn't expect it to do things like syntax highlighting by default
If they are semantically equivalent all the time and we have that confidence and if we maybe add a little to the test suite. Yeah, I think. I think at this point we could have real good confidence in your work. This is me very belatedly realizing that I should be remembering that comments are the things I want to be built and suspenders careful about. Comments are the beating heart of the site. mybackhurtss_h tests? scary stuff /s
chamlis_ you have the large test set, might as well make use of it
They are the community. I have to be very rigorous about them and not accidentally change somebody's words. yeah and i'm the only one with the test set so i have to do this okay so and and my last comment was me kind of working through realizing that

01:28:12I don't remember what settings you made. chamlis_ I suppose there's nothing technically private in there, if you wanted to send me just the relevant columns?
Have you marked this branch as editable? So if I added some tests, could I add them directly to your pull request? chamlis_ it should be marked as editable, yeah
I don't remember how GitHub handles that.

...34I have sort of avoided giving full database dumps. even if it's very scrapable. Okay, so let me take a look at this. I am mentally reviewing my entire to-do list for everything I'm working on.

01:29:08chamlis_ fair enough for not wanting to share a dump
I also have a particular way I want to do this.

...47chamlis_ @Albynton I'd be fascinated to know where else you're seeing references
chamlis_ chamlis is a minor character in that novel
I missed that chat message what is I have not read book i have not read any of the culture novels so if you are asking because you see references in ah yeah all right got me then you know my back hurts if you send me an email your email address on twitch or by email i can invite you to the site and then you and chanlis can mybackhurtss_h o
mybackhurtss_h [email deleted from stream archive - Peter]
discuss this on the DM feature that you didn't know the site had, but you better do that promptly if it's going to be Twitch chat, because I'm going to end the stream here in a minute or two. mybackhurtss_h but discuss what?
So that is, oh, you know what I should do for these streams? I should get like a little bell. Oh, don't. Now I have to go and get that out of chat to discuss the novel. mybackhurtss_h lolol
Oh, I'm misreading. It's Albinton who was talking about the... Well, you get an invite anyways, because I'm spacey. No, I need a little last call bell for when I'm starting to wind down the stream. Wouldn't that be nice? mybackhurtss_h ooh that'd be cool
I could get a little sound effect. It could be like a little bicycle bell or something, as opposed to a gong. Something very chill. chamlis_ do pubs in the US do last orders?
And then I will play the last call bell. as I'm getting towards the end of these streams and then folks know it's last call to get in questions, that would be cute. Nogweii @pushcx hey there, great timing on my part. you should have a visual pop-up too :D
mybackhurtss_h yay more todo items
Let's put that on my to do list, which is definitely not too short. Oh, hey, Nagwe. Albynton @chamlis_ The domain chiark . greenend . org.uk is a reference to the Orbital in the book
Yeah, visual pop ups are hard because all of the visual pop ups in OBS want to use a plugin that basically overlays a transparent chrome page on top of it and there is something happening in the arch package that i don't know what the complexity of it is but long story short it is not last i checked packaged so that i could drop that in and use it so that is part of why the stream has basically nothing flashy happening Nogweii ah, I haven't messed with the plugin on arch.
chamlis_ ahh yes, I'd forgotten that one. the sysadmin goes by diziet who's a character in a couple of the other novels
ever i guess i could put oh i have my little i have this guy my little like i'm taking a bathroom break i guess i could make one of those that would be good yeah

01:32:49Albynton @Albynton This is the best I have in mind, but I've seen that sometimes when the Culture is mentioned it's often about that specific book
All right, so let's grab you. Oh, we're doing it live.

01:33:06mybackhurtss_h I wish email was used by other things than services for auth and marketing. Email is so nice for keeping track of what you have and haven't done
So if I said this, and let's change the, let's make it a, what's a cool color? Green? Green is a cool color. That's an obnoxious green OBS. Why is that even in the palette? That's an acceptably obnoxious green. There we go. OK, OK. And then I can just drag this guy over.

...43Sorry, I'm getting this visible. Yeah, there we go. Something like that, right?

01:34:03Nogweii nice
chamlis_ you'll need a scrolling news ticker in time for IPO
okay so with that up ipo you know it is funny with recheck actually because it is a worker-owned co-op it cannot have an ipo which is funny reading standard startup stuff that's all about coming to a liquidity event and having an exit

...50mybackhurtss_h cute noreply email lol
so i will i will have to make time there and i have made my little visual last call which what are the odds that i start the stream with that turned on on thursday right okay all right this has been the lobsters office hours stream

01:35:19I have no idea what the from address is on that. You would have to remind us. mybackhurtss_h nobody@lobste.rs
chamlis_ thanks for the stream!
Albynton goodbye!
Yeah, so thanks for stopping in, folks. mybackhurtss_h o/ appreciate the stream and the invite
I'm sorry I didn't get to all your PR work there. I had wanted to spend more time on that. And thanks to all of the contributors. I will see you all around the site, or hopefully twitchtd Thanks
PudottaPommin gg stream PogChamp
next thursday for the office hours birthday stravaganza that actually is just going to be me putting up a site and maybe talking about some favorite posts or something oh nice to see you're still here thomas and thank you for your your notifications work i'm looking forward to that one all right everybody take care