Does our spring feel cleaninged
Streamed
Fix for RSS feed user filters broken by caching fix. Modlog filtering fix. Issue triage: Upvote arrow states likely fixing 1951 and 1911. Multiple favicons. Upvoting comment previews. Self-promo and a mod work queue for flags with feedback to flaggers. Merged story upvote bug. Mods seeing comment form on deleted stories. Suggestions setting is_moderated; Rails lifecycle hook anti-pattern. Explain username colors. New user invites. gamedev.city, related domain removed.
scratch
topics
fix user filters on rss feeds (token was ignored; cache was served)
dependabot
net-imap
nokogiri
modlog filtering https://github.com/lobsters/lobsters/pull/2012
issue review
upvote arrows:
https://github.com/lobsters/lobsters/issues/1951
https://github.com/lobsters/lobsters/issues/1911
https://github.com/lobsters/lobsters/issues/1918 # likely fixes the other two
favicon versions https://github.com/lobsters/lobsters/issues/1921
upvoting comment previews https://github.com/lobsters/lobsters/issues/1970
promo https://github.com/lobsters/lobsters/issues/1971 (with mod work queue discusion)
merged story upvote https://github.com/lobsters/lobsters/issues/1974
mods see comment form https://github.com/lobsters/lobsters/issues/1981
suggestions set is_moderated https://github.com/lobsters/lobsters/issues/1992
explain username colors https://github.com/lobsters/lobsters/issues/1997
new user invites https://github.com/lobsters/lobsters/issues/2013
gamedev.city shut down https://github.com/lobsters/lobsters/issues/2014
Story#log_moderation reinfers
mod delete:
is_moderated = true
is_deleted = true
log_moderation("....")
mod undelete:
submitter edit:
submitter delete:
submitter undelete:
user suggestions:
title
vulnerabilities wait for no mod
Does our spring feel cleaninged
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
02:01ekaitZZa hiii
Pardon the coughing.
I guess I better get started then.
Hello!
I'm Peter.
This is the Lobster's Office Hours stream.
ekaitZZa is it possible that RSS filters are screwed up?
pushcx Howdy, this is Lobsters office hours, ask questions about the site anytime!
ChaelCodes Hey!!! It's Peter! Yay! 🙌
So let's put a message in here that says, this is lobsters office owners.
Any questions about this site at any time?
It is totally possible that RSS filters are screwed up.
Are you, oh, hey Chael.
Are you talking about, when you say filters, are you talking about like the per tag RSS feeds or are you talking about,
using slash filters actually so like my one big thing on my to-do list for this stream is to run through the invites because there's a bunch here that you can see haven't even been tagged and I don't think there's anything about RSS in here no so it's not reported yet but
if you do have a bug request or a bug report not a bug request you don't have to ask for bugs you get them for free if you have a bug report i'm happy to take it here or on github speaking of bugs this sounds like chamless caught a bug that's or fixed a bug which one is this oh this has been a minute
03:44ekaitZZa I filtered tags that remove AI and vibecoding and such, and I'm getting AI posts in my RSS feed... :S
all righty so instead of joining we're saying -huh oh big baby oh cat is taking over the desk with his wide belly now that it's spring in chicago he's
ekaitZZa yes! it has a token. It worked before!
starting to go back up on the filing cabinet so we'll see if he decides to appear on stream later ekate are you using an rss feed that has your rss token in it like is there a question mark token equals and then a random string it's yeah i want to say it's question mark token
Maybe it's RSS underscore sir, you're on the mouse.
Oh man, gonna be one of those.
Has a token and it worked before.
Hmm, and it sounds like it broke in the last day or two.
ekaitZZa a few days, i don't know how many days
Actually, if it broke last Thursday, that's when I was just working on caching for RSS feeds.
So that's a pretty good opportunity for me to have broken it.
Oh, and you know what?
Now that I say that, come here.
05:26So there's the main index file.
ekaitZZa i could try, yes
i wonder if yeah i'm gonna bet a week since i did this caching ek is this something you can experiment with in the next minute here actually here all right so let me
So what i'm wondering is is if this caddy file path is ignoring the query string parameter that nginx used to use, because this is pretty directly ported over.
And I just touched it last week so here, let me.
Copy.
That over.
06:32Yeah, and let's bounce caddy.
Which I don't think I have to be logged in as root for caddy because it runs as a user service.
Yeah.
I do actually have to have a caddy file live.
I'm going to hit the button for this off screen on the Hatchbox web panel.
View log.
pushcx curl -I https://lobste.rs/rss?token=asd…
Okay, so EK, if you could take your URL and it's going to look like, you know, lobster slash RSS token equals this, right?
If you could run this command, actually, I can run this command.
It doesn't, this is happening before caching.
or this is happening before the app layer.
So it doesn't matter if I have a valid token or not, right?
Okay.
Yeah.
So you're, you are definitely getting served.
Yeah.
All right.
I get this bug.
08:07ekaitZZa curled!
ekaitZZa haha i forgot the flag
so we need to make caddy file and i bet you also saw this lobsters rfce header in there you must have right
Yeah, that's a capital I, not a lowercase l or a one.
...53ekaitZZa x-lobsters-rcfe: /rss.rss
Yeah, okay, so it's definitely broken.
It's definitely broken by what I did last stream on Thursday.
Thank you for this bug report because we have immediately figured it out.
ekaitZZa yeah! thank you for your fast response!
so what i need to add to caching is that if there's any where aha so well i want to match i really want to match if there's any oh well thank you for the report because obviously it's been broken for a week and you're the first report so
Let's see, what I really would like to say is, can I say query star equals star?
09:50Pairs with the same key. Keys are matched exactly, but also support a star to match any value. So that feels like it's Implicitly saying that star can only be used as a value. Empty string matches HTTP request with no. OK, well, that's what I want. All right, so here I want to say as long as also the query. And it was token equal, right? Or was it RSS underscore token? Let's controller.
10:35Okay, it's just token. I see it here.
11:14ekaitZZa no syntax highlight? I also have my editor configured like that
ekaitZZa :)
ekaitZZa yeah, just a little
that one's a fact so there should be a link to push.cx stream under the window depending on which twitch you're using but there is actually some syntax highlighting like you notice the comments are a different color and in cursive and then if i put in actually i'm not sure that this thing even has a syntax highlighting but there is some highlighting for errors
I just find that very little does a lot for me.
Having a lot is just distracting.
Really, the only syntax highlighting I care about is, like, unterminated strings and parentheses.
ekaitZZa I also use red for matching parenthesis, and orange for searches
If the bottom half of the file changes color, that's great.
Then I know, you know, the start of that has an unterminated string.
12:11ekaitZZa everything else is just flat
oh nice yeah so like i have a little bit for searches where's my oh right i restarted caddy with the web ui which is over here on the side so let me actually let me copy this up again and then
Where's my setting?
Update caddy.
Let's view the log.
Update it.
Or I could even load the page and scroll down.
There we go.
So now if I had a token, I didn't get served out of the cache.
And there we go.
I did.
13:05You know what? I'm actually going to tweak that. Because as we've been thinking about this, there is someone who hits the cache with... So they hit like slash RSS, and I've seen them do like rand equals 1234. And they're deliberately doing that as a cache buster. And it's ridiculous because like the RSS feed does not change that often. So I'm going to say... just we see a user's token let's let's try that again just to see it work before i commit settings update caddy no actually this screen doesn't have anything sensitive on it i could have had this on stream just never remember like there's one or two pages inside a the hatchbox admin
14:14ekaitZZa leak them all the secrets
Why am I not getting the cache at all?
Oh, I said this backwards.
I said this backwards.
This should be not.
Can I make them one line?
I think so, which would be nicer.
Let's test that.
deployed and update caddy and view the log and here unexpected next token after no gotta be on its own line all right so
15:20There we go.
The update caddy job is already spinning.
So now cached.
ekaitZZa the headers had changed a lot now
And so the funny thing is here, site traffic, especially to the RSS files, is high enough that I ran this twice just on the off chance that I was getting the hit where I was filling the cache.
But realistically, in the time it took me to look from one side of my monitor to the other and hit up enter.
So, you know,
half a second is enough time for the RSS cache to be filled.
Yeah, if you see lots of headers, you're seeing Rails.
If you see fewer headers, this is coming out of the Nginx cache.
And I will turn this debugging off before I commit, but this is the file on disk that is being served as the cache.
So now if I put back token equals ASDF, I did not.
get the cache.
And if I said rand equals 123, I did get the cache.
There we go.
That's just what I wanted.
Okay, I can turn off the debugging.
And then... EK, would you mind if I say thanks to you in the commit message?
Because there isn't an issue filed for it.
If you prefer not to get mentioned, I'm happy to leave you out.
Just, I like to give credit to encourage people to report bugs.
16:54ekaitZZa sure i'm ekaitz-zarraga everywhere (codeberg and all)
Fix RSS feeds to serve.
Great.
17:13graefchen I recently tried to write a smaller c program in the pre windows 11 windows notepad ... it feelt very different than normally when using another editor. limesSit
I'm getting one here, actually.
Yes.
...25Yeah, it's funny you mentioned it. I did a lot of programming back in Notepad back in the day. That's where I learned HTML. At the time, the idea of an editor with syntax highlighting was a little bit of a novelty. And who was it? Oh yeah, Borland had their Turbo Pascal compiler slash IDE. Because at that point, an IDE included a compiler. And man, I wanted that thing but had no money for it. This is going back a ways.
18:14You know what? This is going to affect the per-tag feeds as well.
...23Let's put this on one line. Let's put this up here. Yeah, actually, insert cache. Insert cache when a new user is logged in.
...44So let's copy that.
...57i'm just a little paranoid here because the caddy file parsing is deliberately kind of limited and so even moving a comment around i want to see that it's okay it's green and broad that's fine i just have to see it because there's stuff like I can't have this inline for a one-liner that tells you they don't have an especially full-featured parser happening. So it just makes me sketchy. Speaking of 80s and 90s parsing. Let's commit again.
20:00Lost my clipboard.
...53yeah let's bump main and shove it oh yeah why would you want to push a commit that doesn't have a description what are we mad about this is what is this commit i must have made some random local edit no that's all right i squash OKO into OK. Oops, if I don't typo.
21:41chamlis_ when you quit vim with "q!" that didn't abort the commit like it would've with git
There we go.
JJ protected me from myself.
Five vulnerabilities.
Oh, man.
Had one last week from Kaigi.
so i guess that's a little extra is that right you know i saw it printed a warning but i was doing something so i didn't read the warning and oh i did it in the other terminal didn't i no i didn't it's just not here
22:33Yeah, must have gotten wiped. All right. So let's go ahead and deploy that because RSS feeds are pretty darn important. So what did we talk about? We talked about fix user feeds on RSS, user filters on RSS, feeds.
23:08And then we have dependabot. Then the next thing is going to be modlog filtering, because I started to look at that just a minute ago before the bug report came in. You know, dependabot. Vulnerabilities wait for no mod. Hmm.
...45This?
We don't do any of this stuff.
So the Dependabot bugs are all in net IMAP, which...
must be getting included by rails but we don't have any imap features maybe we have action inbox whatever that was called psych you know site we don't need old versions we don't need new versions that's a little
Oh, no, I misread.
5352.
twitchtd good morning pushcx! not sure I'll be able to stick around for the whole stream but just stopping by to say hi.
Got it.
Okay.
24:42Oh, hey, Thomas.
...50Slew. Let's be correct.
...57And...
25:05and get that deployed. OK. These ought to go away now. Two more open in the last two minutes. Opened now. Well, these are actually things we care about. We don't use XSLT.
...36We do parse random sites, so this one would affect us. So let's bump Nocogiri. Busy morning.
26:08So the deploy is where we touch and install a gem. Always take an extra 30 seconds or so. There we go. So let's bump Nokogiri.
...42And that gets us to 193. What's the number here?
27:24we parse titles and info from submitted links that is not what I expected
...44All right, come here. Where'd my commit go?
...57Definitely did not expect literal new lines in there. Back to Elm. Let's bump them in.
28:16Nice of NoCoGiri or Dependabot to include those updates literally in the five seconds where I was pushing some code. So it was very easy to see.
...37Yeah, I'm not sure.
I don't think we actually use these.
Nukagiri CSS XPath 4.
ekaitZZa pushcx gotta go, see you next time. Thanks for the fix!
Unless the regular path 4 uses this, we're okay.
Or CSS, well, we don't use their selectors, and we do have a global timeout, so we'd probably be fine.
Well, thanks for dropping in, EK.
I especially appreciate that you dropped in with a clear bug report.
Let me know if you see anything else weird around the site.
Cool, so let's put that in the list.
Fix.
29:29What was the first one? Nah, I'm out.
...38All right, let's go back to...
...49That just literally took less time than I thought. Well, usually a deploy that doesn't touch the gem file usually is like 20 to 25 seconds 43 probably is the fix but like i'm jumping around terminals and juggling just enough things no harm in deploying again okay and you see that nothing affects us great that's done let's go to another wonderful bug fix from channels
30:36Okay, good.
...57chamlis_ for context, `@moderators` is a list of usernames, not of IDs or models
These feel like they should be equivalent
31:10oh oh that's why man it's been a minute since i touched this controller i'm trying to think when this break was introduced so it must have been like months right all right
...58this is great yeah you're really covering all the cases on this that's that's totally clear great i don't need a submit review button i need a merge button
32:45Guess I should have commented before the merge, but whatever.
chamlis_ thanks!
It all works.
All right.
Let's fetch.
33:00Why are you thanking me? You're the one who fixed the bug.
...15All right. So we'll get that deployed. And then as long as I'm that, yeah. All right. There's the bug. So that's been broken for a year. Just about. That's a little embarrassing. That's pretty important for transparency.
34:00The other pull requests are kind of in a known state and want to get deployed on the weekend rather than during high traffic. But that's on me to schedule. So yeah. Barring other questions or bug reports, my plan for the bulk of the stream here was to start working through the issue backlog and make sure everything gets at least looked at. Where's model timer?
...39Yeah, this got reported yesterday. All right, let me open anything that doesn't have a tag on it and make one pass through. What is this one? I don't remember this getting bumped.
35:13All right.
...22You know what this is going to do?
I'm going to tag a bunch of things as good first issue, and then I'm going to get more slop PRs because those come in any time I tag something as bug or good first issue, especially.
because there are really irritating bots from people who are trying to build out their resume or running OpenClaw instances that watch for GitHub activity feeds and they watch for the label good first issue.
Almost makes me want to like rename this to good first, like L-S-S-U-E. People would read it correctly, but the bots wouldn't.
Maybe you could put an umlaut on bug.
graefchen At least let the bot run to maybe find a bug/issue that you can fix by yourself. limesHeck
chamlis_ please open "port codebase to rust (good first issue)"
grayhatter_ add the claude poison token?
yeah so it's been a quiet week but the week prior i think i got five or six slot prs which was not great all right so let's you want me to just
grayhatter_ #dontbeevil
see if i can burn lots of tokens how would i greyhatter they've disabled that token oh yeah you know what that's in the the site layout we can delete that at this point doesn't do anything they also apparently didn't do it if it was in comments only if it was in page text
37:19Why don't I see the main tag on that?
...29Ah, just because, yeah, we want to be on name.
...41Except that was a very...
...57I actually wanted to do was take my little edit away with me.
38:35grayhatter_ it probably strips tags before passing into the LLM
grayhatter_ programmatically strips*
let's put that down there just because i think i opened a tag for that issue or a tab yeah i think that's this one yeah okay yeah when it does its web fetch it wouldn't see that if it did a curl it would
39:16why and how we can turn the arrow into an empty bold arrow with a red outline okay that's fine i can show an hourglass oh i see where this I can't know if I clicked the upload error. This feels like the key of the report.
40:04Failed arrow.
...10When hovering an upvoted story, we can't just show an empty arrow.
...24Like an X.
...36Let's show only for upvoted stories. We, yeah, so I'm resistant to number three here because we have so many, it is, our eternal September is that people assume we're Reddit or HN. And so I'm really reluctant to take UI that looks like they're one big feature that we don't have.
41:11Empty arrow or the filled arrow?
...21I guess the filled, because in the other direction, we would be showing what the state is about to be. Well, I guess that's empty. It's sort of a transition between the two. I think it'll be less jarring if it's filled. All right.
43:26chronocidetwitch Might be worthwhile to address tab focus styles as well, not sure if they would fall uned #1951 (regression on mobile upvote hovering)
chronocidetwitch Currently, the hover styles do not match focus styles (there's none)
1951 i was just going to click on that one to open in the background because i didn't recognize it off the top of my head i've clearly seen it if it's labeled but
44:12chronocidetwitch *they don't match
chronocidetwitch There are focus styles, apologies, it's the blue box
The hover styles do not match focus styles.
They are focus styles.
It's the blue box.
Yeah.
...28Now the case that when the initial tap lands on an upvote to scroll, the right upvote gets toggled.
...41ah i remember this one yeah because mobile sends the focus event with a hover but not the end and then we have another one oh so he must have seen this when i asked him to take a look okay all right well it sounds like we're real likely that federico will open a pr and it'll he'll fix all three of these in one go okay so let's
45:46That's 1951. And what was that, 1999 I was on? I lost it. Nope. 1911.
46:16And this is going to be the one that fixes the other two.
...47OK, well, speaking of RSS, now that it works.
47:10That actually sounds pretty dang good.
...42twitchtd going to log off, cya
chronocidetwitch See ya
graefchen See ya limesHi
Nice little feature request.
See you, Thomas.
Thanks for stopping in.
...55Okay.
48:07favicon is fucked. OK, not the most specific choice of title.
...20And then changes back.
...49Can I hit this title?
49:08You know, we can just serve the SVG. Ah, baseline 2025. Too new. But
...21But we can say we want it because I hacked that. Where is my browser? So.
...52chronocidetwitch Does baseline 2025 matter in this case? Surely if it's unsupported it would fallback to what it is currently
Is that a specific property?
Or is it just saying that we can point directly
with dot SVG yes it matters because if we start using it
with a fallback, that's a lot of complexity to keep track of.
And for any individual feature, it feels like a trivial nothing, but there have been in the last couple of months, something like a dozen different features that we would like to use, but can't yet.
And at that point, we're fracturing into many hundreds of page versions, none of which we test.
And that just feels
like a bad bet.
So to keep complexity down, the linter test that I added a couple of weeks ago very harshly says, no, it actually has to be widely available.
And I didn't add support for at supports, which is what a lot of these kind of progressive enhancement things would want.
just decided to keep it simple.
51:28Partial support uses this SVG on the first time, but not on subsequent loads. This sounds a lot like our bug where sometimes you see the nice one, but then you also see the ugly ones.
...51chronocidetwitch Perhaps the lack of IE support?
all right they think it's closed 10 years oh this is that's been a minute so wait why is this not widely available what are the dates here you added it five years ago you added it five years ago safari no i
no longer figures into widely available.
52:32So it's just this one. Safari added support for it last month. Well, six weeks, seven weeks. All right. That's probably why this commenter was thinking of it is it's just added.
53:26boarush It's 7 months I guess?
Let me link this test because that's pretty new.
...34Seven month? Did I misread that date? Oh, yeah. I did misread that. It's saying that 26-3 was the major version. I was just reading the wrong date.
54:04Yeah, the annoying thing here is it doesn't have any different syntax or linter won't catch it even. In which case, yeah.
55:18I don't love running our brand new linter. Like, what did I write it for? But I can't quite catch the feature.
56:03and grab the link for the notes.
...40graefchen I would have just said "not to long ago" ... time can be hard sometimes limesSweat
yeah it's funny i don't have i don't feel like my times change has my my sense of time has changed too much and then i talked to like my teenage nibblings and i mentioned something that happened six months ago and i see on their faces that for them it feels like forever ago because six months ago when you're like 14 is a big long time that's oh my god chickapaw that's last summer that's
last semester that's you know empires have risen and fallen in the social circle in six months quoting on comment breaks when it has block quotes that's that's definitely going to keep breaking
graefchen The world seems to be awfully turning fast at times. limesBlink
And the fix for that is going to be kind of huge.
57:56I find that the speed of the world seems directly proportional to how close my deadlines are.
59:18Not be able to upload a comment preview well that's pretty straightforward running bug.
...30yeah because nobody's done that one. that's that's kind of funny that we've made it like. Coming up on 14 years and nobody caught that.
01:00:09chronocidetwitch Wonder if fedemp had a fun evening finding all these bugs haha
FedEmp.
chamlis_ it's gauche to upvote your own comments, so clearly we're a classy bunch to have not even tried it
So, current aside, I assume so because FedEmp has been catching bugs in the front end for, oh man, six months.
graefchen The best bugs are those that are so obvious bugs, but you only realise it after the fact. limesO
Just constantly...
chronocidetwitch Oh wow, I had no idea
finds bugs in the front end and a bunch of them are accessibility related where they're missing aria labels or other things yeah he has been just killing it on the front end because it's wonderful that he's submitted a whole bunch of prs but it's also wonderful that he keeps finding these bugs he's
He's giving the most attention to the front end since...
I mean, if I hadn't been doing the merge story stuff this last year or so, I would say since the site was created almost.
But maybe since I did the navbar update like seven, eight years ago?
Seven, eight?
Five, six?
Something.
It's been a long while since the navbar on mobile.
But yeah, no, he's a really wonderful contributor.
01:01:44And to Chambliss's, it's gauche to upvote your own comment. For anybody who doesn't get the joke, I'm going to beat it to death. Yeah, when you write a comment, you are automatically uploading it. That's why it's created with a score of one. Man, I can't talk this morning. And this bug specifically is previews. Yeah, since let's get created with the owner automatic.
01:02:27grayhatter_ counterpoint... if it lived for 14 years, it wasn't an obvious bug
there's also a a bug here that review comment previews it appeared to have
01:03:14That's fair, Greyhatter. Yeah. I don't know, it's just... The fact that it's right there, you don't have to do anything complicated, just literally click on it. Maybe I could have said an easy-to-reproduce bug, but that kind of would have killed the meter of my sentence. So this is... loading comment previews check the frequency the user submitted domain yeah this one
01:04:13one is definitely not a good first issue somebody's got to be very familiar with the site
...43Let the user profile thing come in now.
So if you look at your own profile, there's a note on it about your comment activity that has actually been incredibly useful.
So where is it?
grayhatter_ for the record, I approve of the artistic liberty for the word choice; I just liked the idea of bug being a site secret for so long
It's been there maybe a year or two.
01:05:20Comment stats. I can't just link to the comment because I've edited it a couple of times. So let's go to views. I need a faster way to get into specific files in the repo on GitHub. The second time on this couple of minutes, I've wanted to do this and it's clunky. So it's been there, yeah, about a year. Oh, actually year and a half. All right.
01:07:32oh the bug being a site secret well don't worry i'm sure there's plenty more secret bugs waiting to be discovered and we can call them easter eggs and attribute them all to you if you want no the these office hour streams are kind of an ongoing reminder and How the the primary value of a website or any code base is not how extensively perfect and bug free it is. or definitely not how nice the code design is.
01:08:26graefchen "This Bug is brought to you by our Sponsor [insert Sponsor name]" limesGiggle
oh man rather than have sponsors for like job listings or outright advertisements they can brand the bugs does that mean we're gonna put the the bugs in little nascar racers they can be in the big either on the the shell of the car or on the big onesies that the racers wear we could do either
anthropomorphizing the bugs brought to you by pixar and what 99 2000
01:13:07chronocidetwitch I'm going to put on food, thank you for the stream
Well, thanks for dropping in and chatting, Chronicide.
Have a nice meal.
And I'm going to keep going for another probably hour and a half, so I may be here when you're done.
All right.
01:15:34Something like that.
01:18:33You know we don't.
01:19:34There was a there an issue where I talked about a story Q. This one.
01:20:04Yeah.
01:21:09Where was the?
...22So this one 2026 too. Yeah, this is the right date. Yeah.
01:24:00graefchen Reading a little bit from the comment somehow gets me in the mood to play some more with some simple/fun data I have. limesO My brain is sometimes very weird in the associations it can form. limesO
yeah you know i think there's a lot of room for finding interesting and useful patterns in all of this and i should call it out in my comment actually because i'm moving fairly slowly on these things but it feels like there's a lot of room for improvement or recognizing patterns and people are
They have a lot less emotional reaction to rules that are enforced by software than by moderators they they seem to almost universally take it personally, even when.
A moderators enforcing a bright line rule that says you will be banned if you do X and then they do X and then they get banned citing that rule and then they say that guy had it out for me.
Whereas when the software does it they're just like oh well that's the rule.
And unfortunately, as I'm just commenting sometimes they go well what's the quickest way that I can break that rule.
and That's kind of this first bullet point on this which I talked a bunch about on stream but.
graefchen Because a Bot chooses it on a Rule (even though that Rule was created by a Human). It is ... weird. limesO
years of dealing with flaky software and especially flaky web forms has kind of trained people that if you see a form error you should read the name of the field it's in and make the minimal quickest edit to try to resubmit and you should do that even before you fully read and think about what that error message is saying because errors are so common and so trivial that most of them don't matter and so even though we had form errors that said things like
graefchen * ~~Bot~~ Computer
if you do x you will be banned and people read that it just didn't take it seriously and then they immediately did x and so i'm trying to think of ways to make sure that the user interface reflects this is not a form submission error this is a stop go do something else error change gears don't don't try to do this
Because I would really rather not have people break the rules and then me have to ban them.
And so, yeah.
01:26:59So promo.
01:29:24I'm going to say ladder and then put them in. Wow.
01:33:08grayhatter_ twitch sends me action reports every time I report someone
grayhatter_ twitch is the only site that I actually still report people on
You know, GitHub does that sometimes.
And I would like to move towards doing that for all flags.
But that does mean firming up flags quite a bit to be a little bit less noisy.
grayhatter_ because I get some sort of feedback that someone paid attention to my report
And some of this is just the big upheaval about
grayhatter_ maybe when an [anything] is reported, there could be a button for mods to "ack" the report
vibe coding where people are reaching for any flag to mean disagree or dislike vibe coding which is really not helpful and not endearing yeah you know i report spammers on github and they always send me action reports that are like well we're fine with spam so we've reinstated the user yeah i would like to get towards
grayhatter_ Hey, a mod has seen your report, and has taken the appropriate action for this report.
ChaelCodes <3
flags being like a work queue for mods rather than a dashboard if that distinction makes sense and i'm kind of stealing that one from reddit yeah and i think that the mod mail system that chael recently added is the big thing that unlocks this and i would like to work towards that
If you want to sketch out what that feature would look like or even implement it, I would love it.
Oh, Chael's still here.
Howdy.
grayhatter_ maybe after I reactivate my account
Yeah, so my ideal thing would be flags become some kind of work item.
The moderators have a queue that says,
Yeah, that does seem like a reasonable order of operations.
01:35:16And then the mods can choose to either action an item, which pretty much means remove a story, remove a comment, or leave a public-headed response, or they could
Open a model conversation with the flag or to say hey, can you give us more info which may happen, regardless, or they could say no, we think this is okay and there's a bunch of complexity around.
So does that mean that future flags of the same category should be ignored does that mean all flags should be ignored, because we can assume that the mods thought about all of the reasons to flag.
To.
grayhatter_ no, you shouldn't automagically mute reports
We want to say that it's ignored for like three or four flags, but if a whole bunch of people flag it, it should go back on the dashboard because maybe the mob misclicked or just made a bad call.
Do we want to have a reporter reputation system where flagging something as a minus one to a score and then your
01:36:32grayhatter_ that's exactly what I was thinking, if you get more reports, it should go back into the queue until a mod marks it as confirmed unactionable at this time
The penalty imposed by a user's flag is equal to the percentage of their flags that have been actioned in the last, I don't know, six months or something.
Yeah, so there's a lot of complexity and I don't have immediate answers to all of those questions.
grayhatter_ I don't think you need any of them answered
And we don't have to have all of them nailed down to start implementing it, but I do very much like the idea of fewer flags with more feedback.
01:37:13grayhatter_ not until the first button shows up on the page at least
Some of them really determine how much workload there is for mods, and I'm trying not to pick features that add a ton of work.
Yeah.
01:38:12grayhatter_ how confident are you that you'll be able to correctly predict what parts and what features will be how much work?
grayhatter_ I have little to no confidence I'd be able to guess correctly, so I'd usually default to experimenting and figuring it out then
turbofish_pk how can I get an invitation to lobste.rs ?
Pretty low confidence, which is part of why I was so happy about having ModMail kind of carved off and built out because actually it's in that commit that I was just showing.
We've been able to start incrementally moving things over to the ModMail feature.
Hey, TurboFish, this is not the best chat room to ask it for in that.
pushcx https://lobste.rs/chat
If you go to lobsters, there it is.
Let's get the HTTPS on it.
There you go.
turbofish_pk thanks
So, yeah, gray header, that's fair.
grayhatter_ I can fix any problem... but only if I can correctly articulate the problem. For "this will be a lot of extra work" I can't describe the work yet
If you're saying you want to immediately go to writing a PR, that sounds fine.
01:39:15Yeah, and you know, I think where extra work comes in is mostly are the mods having to write custom mod mail messages. One thing I've thought about for the moderation reason field is having some automated dropdowns, because if you read the moderation logs, you can see that there are some reasons I autocomplete over and over and over. It's things like, well, stop it with the self promo to the comment that's up on the screen now. Insults are not okay. This article doesn't relate to computing. Entrepreneurship is off topic. Business news is off topic. I've considered putting in a select box with a half a dozen of those most frequent ones, which I guess if the mods are sending a mod mail response, we could write some canned messages after the first couple of weeks and we realize we're repeating ourselves. These DMs about self-promo are very formulaic at this point.
01:41:03grayhatter_ i'm envisioning a left side side bar, for the most common "auto reply" where clicking on the reply will open a text box with that default reply so it can be edited
grayhatter_ instead of a dropdown, make it part of the page
grayhatter_ something a bit easier to flow through, "mindlessly"
yeah left sidebar the most common yeah something like that or even just a yeah i was about to say the word drop down because one of the nice things about user interfaces where you have like
for users who use a page, a UI many times a day is they become expert users after about a week.
grayhatter_ links are easier to add to "auto pilot" than a dropdown
Oh yeah, I guess listing them directly is one click instead of two.
...54Yeah, that's a real good point.
01:43:26can grab this comment link real quick and jump over to the chat.
...57Features I'd like to see too. All righty. Users should not be able to merge a story. Why not?
01:44:50turbofish_pk except web development with rails, would it be a good choice to learn and use Ruby, given that there is python? Also is Ruby a good language to modernize Perl scripts?
I think Ruby is a great language for modernizing Perl scripts, but if you are thinking of a future career, Python is probably a better choice than Ruby to learn.
And I don't know that I would choose Rails today for web development, to your exception.
You know, I'm maintaining a 14,000 plus line code base on a very limited time budget.
turbofish_pk thank you so much! I really appreciate the honesty
I'm iffy on starting new project in Rails and Ruby after everything that's happened in the last year.
I don't have a like immediate compelling, I would choose X instead.
But I am looking around for an X.
01:46:51Jamamp_ Go is great for the backend portion with just its standard library (or perhaps some http router packages which give a bit of extra functionality), but the default options for rendering html docs/snippets is a bit lackluster. Thankfully packages like `tmpl` help a lot in that domain
didn't grab that one for the notes either.
Hmm.
01:47:16Comment form for moderators. Yeah. See, here's, here's one of, those posts that make it real clear that federico is working his way through the entire ui only place monitors after posting it they can't find story error oh right because when it looks up it does make sure that you can't
...52Can't find story error. Some of the way these validations are implemented. Yeah. You should probably get a clearer message that says, hey, that story was deleted while you were writing.
01:48:18Yeah, so we get one for if you are replying to something that is gone.
...40Yeah, this should move into the comment.
01:51:21all right so this is the one i was thinking of from the start of the stream i'm a little puzzled by this bug and i want to think through the implications and understand when it happened because the flip side of this is if we don't set isModerated suggestions can keep happening in which case we could start having like a wiki edit war in the story tag suggestions or story title suggestions and that's not great and there's no user visible history and i really want to avoid like flapping back and forth on a tag and i know that If we reversed it, like within an hour or two, we would have a story where the vibe coding tag gets added and removed and added and removed. Because it is, as in this example, it's the vibe coding tag that is controversial because that's the big exciting topic right now. So let's take a second to figure out if that is moderated, is deliberate, or if it's just the way that, the save hook is implemented. Yeah, so delete by moderator, gone text. So this is, wait, this is on comment, not on the story.
01:53:42Oh yeah, there's,
...51there's also a frustrating discontinuity between story and comment where on story is moderated tracks has a moderator made any edits to or deleted this well that's the is moderated flag and we do not set is deleted or do we think we don't and then comment uses is moderated as an alternate is deleted i think because mods can't edit comments so yeah it's these two booleans are a little bit overloaded
01:55:02Yeah, so it's log moderation doing it. So this is one of those things that I don't like about Rails that's never gonna change. A bunch of things happen in these lifecycle hooks, and you just have to know to not use them.
...24graefchen Lots of people have indeed lots of different opinions about vibecoding. limesSit I am just happy that I filter the vibecoding tag. limesSit
And I've slowly been removing them from the code base, but you end up with these kinds of situations where,
surprising functionality gets implemented.
And a lot of times what's happening is this pattern where the hook, rather than one thing that says what its intent is, like I have a flow where a moderator deletes a story.
And so somewhere there would be a function that says,
01:56:02oh okay so for mod delete is moderated equals true is deleted equals true log moderation dot dot dot right and instead and you know we're gonna have redundancies so then we're gonna have user delete looks pretty similar and we're gonna have user suggestions looks pretty similar user edit and hooks come in and go, oh, well, we have all of these events that mutate the story object. So let's just have a after validation or before save hook. But the negative pattern I see is you end up with one hook that starts re-examining the object To figure out which of these scenarios it's in and do different things. So editing from suggestions. This is the story object looking at itself to figure out. Are we in the user suggestions path? Well, yeah, and here I should say submit or delete. And submit or edit just to make those clear.
01:57:35And then we also have the object inspecting its own changes. And there's some amount of this that's good for, you know, it's a nice bit of metaprogramming to just say, let me figure out all the attributes that have changed and list them in the moderation message. But then there's other stuff here that's figuring out, oh, okay, are we in the deleted? Oh yeah, well, we also forgot mod on delete and submitter on delete. And like, yes, if written out as functions, these have some redundancy, but I would rather wrap up the minimal amount of redundancy than have this thing happen where we're re-inspecting and now logic that maybe should not be shared between these is. And then we can also There's this thing that is about the diffs, and then there's a bunch of this like figuring out which scenario in the middle.
01:58:57So there's a bunch of stuff here that I, it's this pattern of hook that I don't love. And this is such load-bearing infrastructure that I don't want to start editing it right this second.
01:59:40So what I wish is I could filter the history down to things that are touching that function. Because I want to say that that function has been there since very early, since site launch.
02:00:14Yeah. Nothing about moderation there. It's up here. Okay. Yeah. So. This line of code has been here since this function was written, which is roughly what I thought, but I wanted to double check it. And if anybody didn't connect it, this is the person who wrote that line of code.
02:02:29That's the right way to put this.
02:04:07Does this one have a nice mailer? Where is it?
02:05:13This is two different things.
02:11:05you
02:13:05Thank you.
...45I'm distracted because someone in the Lobster's IRC channel is asking about the Twitch schedule.
02:16:13Swap that around.
02:17:10all righty what else do i have this one i thought i responded to this oh no i just read the email okay wow let's add this as a feature request ah that's why i remember because yeah i was in the irc channel when we talked about this one
02:20:04That's a weird bug. Oh, because it's using the same... Yeah, that's just a bug. It's because the... It's the way the template is reused between...
...35That's the template called.
02:21:06I'm trying to think of what's the right kicks like.
...14Do we want to link back to pound comments or comments one or just have consistent. Use of the tokens yeah.
02:22:04You know i've been half expecting as I go and I tag a bunch of things to see this pull request number increase in the hour so i'm working through things.
...32Oh somebody.
...43That's just a bug. I guess it's fine to be redundant on that. Yeah.
...58All right. Well, where's that? Let's just revert that. Well. Wanted anything.
02:25:19Ah, I remember, yeah. I've talked a little with Saint11, the person who created this.
...32Huh. All right. Well, that's sad.
...46Let me just fix that right now. And I immediately forgot to put something else on the list there, didn't I? Here we go.
02:26:11Yeah, running a cellful site and online community just wants to chew time.
...30Let me just go ahead and do this now.
02:27:13espartapalma Hi hello hola
Very strange to see issue numbers that are all in, you know, the neighborhood of life events like the 90s and the early 2000s here.
Hey, that's Bert Palmer.
Nice to see you again.
Been a second.
...49All right.
So there is who has responded or is this just my comment?
No, that's my comment.
Thank.
So there is a big run through all the requests and issues, which was the big thing I wanted to do today.
And.
Yeah.
Jamamp_ Does our spring feel cleaninged
espartapalma glad to be here, I've been busy fixing some legacy systems in the day job :)
I don't think I have the brainpower to jump into anything else.
Usually I stream for about three hours, but it has been quite a weekend.
Yeah, Jam Amp, this has been the spring cleaning feel theme.
Ah, does our spring feel cleaning?
I actually like that first stream title.
It's funnier than anything I've noticed I've said.
Jamamp_ loadWow
That really is what this is.
02:29:00I do take a pass through the transcript for other titles, so maybe I will realize I said something inadvertently funny, and then I will cruelly promote my own thing through the purest nepotism. I don't know, I think maybe one or two stream titles have come from funny things people have said in chat. Let's file this as a feature request. Maybe someone will take it. Maybe I'll come back and do it.
02:30:57Jamamp_ So the other week I used the dev containers thing to get lobsters running locally. But, having never really used lobsters before, I ran into a weird roadblock: I submitted a new story and while the permalink worked it never appeared on the front page. I tried exploring some of the mod pages but didn't find much aside from the seeded data that gets installed then all hidden via the seed moderation. Any docs on how to mod a lobsters instance?
Jamamp_ Cause I'm assuming it needs to maybe be approved?
so Jim, thank you for getting set up.
I'm glad that wasn't too bad.
No, there's no concept of approving a new story.
I would guess what happened is, did you have fake data?
Jamamp_ Rip getting a call. I'll check back on the reocrding.
Jamamp_ I did
Did you run the what is it rails fake underscore data to generate like 100 stories and comments and users?
Because if you did, probably the story that you submitted, yeah, then the story you submitted just didn't have enough votes to make it to the homepage.
Jamamp_ Oh maybe I need to check the new tab lol
So you could either upvote it as different users or that's really about it.
pushcx http://localhost:3000/newest
You could delete the other stories or you could look at slash newest.
yeah so i was just going to type slash newest i guess twitch doesn't want to automatically link that one for you but that'll get you where you want
02:34:07It's table 507.
...57So many book boards.
02:36:58We don't have any concept of moving comments around. Although I've been tempted sometimes to have a detached thread button. We're getting to the point where that would be useful. The real big sign would be if we imported the obnoxious Reddit habit of replying to the top comment to... It's like, OK, congrats, you're getting detached off to somewhere else.
02:37:54All right.
So I've been streaming about two and a half hours.
I'm going to wind down now, I think.
I should have thrown on the message about last call for office hours.
chamlis_ thanks for the stream!
So if anybody has a question, throw your hand up and hit enter.
Otherwise, I'm going to wind down in the next 30 seconds here.
Yeah.
Yeah, I don't want to get into any stream.
And...
Or, well, yeah, see, that's why I don't want to get into a feature is I don't have a lot of time left.
graefchen thanks for the stream!
And I'm a little bit fried from other stuff that's been happening in the last couple of days off site.
Nothing.
I mean, it is bad, but it's not like end of the world bad.
It's not bad for the site.
It's just personal events.
So I will get all that stuff sorted out and we will try to keep a more regular stream schedule here.
I know things have been pretty spotty the last couple of weeks, but I would like to get into a more regular place and I would like to get the Twitch calendar updated.
Let me remind myself to do that by opening the tab right now so that I clear it out after the
grayhatter_ cheers dude, hope you have a good day :)
espartapalma thanks!
archive renders cool all right well thank you for hanging out folks and chanlis thanks for the bug fix as i have said so many times and good to see you grave chan and other folks as far as problems some of you came in right at the end there but that's how it goes i guess all right so i hope to see you on tuesday afternoon and i will get that on the
Twitch schedule.
Thanks, folks.
Take care.