All roads that lead to Rome, not all clocks that lead to Rome
Streamed
A long-standing mod note bug that creates duplicate entries (PR #1682).
A PR to improve message read status tracking (PR #1683).
Querying comment scores when users both flag and reply; theyβre noticeably worse.
Starting to prevent both flagging and replying with some pointer-event CSS.
Adding βjujutsuβ to the VCS tag description.
scratch
topics
PRs
read status https://github.com/lobsters/lobsters/pull/1683
modnote fix https://github.com/lobsters/lobsters/pull/1682
flags + replies
x disabling on client-side
comment needs a validation to prevent
flag needs a validation to prevent
client-side: handle reply then flag flow
file bug about min score floor
mod work queue
currently: dashbaord lists stories and flags in the last couple days
mods just have to look often enough + cross-check notes to see if actioned by other mods
idea: a work queue, each item is created by a flag
each item is also two modmails, with flagger and flagged author
modmail is the DM system but all mods can discuss; notes appear inline to mods
each queue item can be actioned (eg delete a comment) or cleared
cleared: mod disagreed with flag, it should have no effect
open q:
should it be visible that a mod cleared that flag type?
maybe just visible after user attempts to flag?
if more users flag, reactivate the item for more attention
mods can 'pay attention' to users so their next N comments over the next M months automatically open work items
q: are comments on stories tagged 'vibecoding' more likely to be flagged?
yep, about 2x the rate
added 'jujutsu' to 'vcs' tag description, seen a lot of stories about it lately
hide bad notifications https://github.com/lobsters/lobsters/pull/1684
MariaDB [lobsters]> with flagging_replies as (select r.* from comments r join users on users.id = r.user_id join votes on votes.comment_id = r.parent_comment_id where vote = -1 and votes.user_
id = r.user_id) select floor(score /4) as bin, count(*), (count(*) / 4279) * 100 as pct from flagging_replies group by 1 order by score asc limit 25;
+------+----------+---------+
| bin | count(*) | pct |
+------+----------+---------+
| -4 | 3 | 0.0701 |
| -3 | 11 | 0.2571 |
| -2 | 53 | 1.2386 |
| -1 | 232 | 5.4218 |
| 0 | 2266 | 52.9563 |
| 1 | 949 | 22.1781 |
| 2 | 346 | 8.0860 |
| 3 | 180 | 4.2066 |
| 4 | 98 | 2.2903 |
| 5 | 56 | 1.3087 |
| 6 | 28 | 0.6544 |
| 7 | 23 | 0.5375 |
| 8 | 13 | 0.3038 |
| 9 | 4 | 0.0935 |
| 10 | 2 | 0.0467 |
| 11 | 7 | 0.1636 |
| 12 | 2 | 0.0467 |
| 13 | 2 | 0.0467 |
| 14 | 1 | 0.0234 |
| 15 | 1 | 0.0234 |
| 20 | 1 | 0.0234 |
| 27 | 1 | 0.0234 |
+------+----------+---------+
22 rows in set (12.264 sec)
MariaDB [lobsters]> with flagging_replies as (select r.* from comments r join users on users.id = r.user_id join votes on votes.comment_id = r.parent_comment_id where vote = -1 and votes.user_
id = r.user_id) select floor(score /4) as bin, count(*), count(*) / (596293 - 4279) * 100 as pct from comments where comments.parent_comment_id is not null and comments.id not in (select id fr
om flagging_replies) group by 1 order by score asc limit 25;
+------+----------+---------+
| bin | count(*) | pct |
+------+----------+---------+
| -4 | 1 | 0.0002 |
| -3 | 48 | 0.0081 |
| -2 | 174 | 0.0294 |
| -1 | 1328 | 0.2243 |
| 0 | 267167 | 45.1285 |
| 1 | 75433 | 12.7418 |
| 2 | 19890 | 3.3597 |
| 3 | 7857 | 1.3272 |
| 4 | 3721 | 0.6285 |
| 5 | 1822 | 0.3078 |
| 6 | 1096 | 0.1851 |
| 7 | 624 | 0.1054 |
| 8 | 399 | 0.0674 |
| 9 | 247 | 0.0417 |
| 10 | 156 | 0.0264 |
| 11 | 95 | 0.0160 |
| 12 | 63 | 0.0106 |
| 13 | 51 | 0.0086 |
| 14 | 30 | 0.0051 |
| 15 | 31 | 0.0052 |
| 16 | 9 | 0.0015 |
| 17 | 14 | 0.0024 |
| 18 | 11 | 0.0019 |
| 19 | 2 | 0.0003 |
| 20 | 4 | 0.0007 |
+------+----------+---------+
25 rows in set (14.821 sec)
MariaDB [lobsters]> select comments.flags, count(*) / (select count(*) from comments c where c.created_at >= '2025-05-01') * 100 as pct from comments where comments.created_at >= '2025-05-01'
group by 1 order by 1 asc;
+-------+---------+
| flags | pct |
+-------+---------+
| 0 | 95.6766 |
| 1 | 3.1644 |
| 2 | 0.5979 |
| 3 | 0.1840 |
| 4 | 0.1012 |
| 5 | 0.0552 |
| 6 | 0.0460 |
| 7 | 0.0184 |
| 8 | 0.0368 |
| 9 | 0.0138 |
| 10 | 0.0092 |
| 11 | 0.0230 |
| 12 | 0.0276 |
| 13 | 0.0046 |
| 14 | 0.0138 |
| 15 | 0.0046 |
| 16 | 0.0046 |
| 20 | 0.0092 |
| 23 | 0.0046 |
| 30 | 0.0046 |
+-------+---------+
20 rows in set (2.791 sec)
MariaDB [lobsters]> select comments.flags, count(*) / (select count(*) from comments c join stories s on c.story_id = s.id join taggings t on t.story_id = s.id where t.tag_id = 120 and c.creat
ed_at >= '2025-05-01') * 100 as pct from comments join stories on comments.story_id = stories.id join taggings on stories.id = taggings.story_id where comments.created_at >= '2025-05-01' and t
aggings.tag_id = 120 group by 1 order by 1 asc;
+-------+---------+
| flags | pct |
+-------+---------+
| 0 | 92.5689 |
| 1 | 5.2210 |
| 2 | 1.2492 |
| 3 | 0.1922 |
| 4 | 0.2883 |
| 5 | 0.1281 |
| 6 | 0.1602 |
| 7 | 0.0320 |
| 8 | 0.0641 |
| 9 | 0.0320 |
| 10 | 0.0320 |
| 14 | 0.0320 |
+-------+---------+
12 rows in set (0.346 sec)
MariaDB [lobsters]> with flagging_replies as (select r.* from comments r join users on users.id = r.user_id join votes on votes.comment_id = r.parent_comment_id where vote = -1 and votes.user_
id = r.user_id and votes.updated_at > r.created_at) select floor(score /4) as bin, count(*), (count(*) / 4279) * 100 as pct from flagging_replies group by 1 order by score asc limit 25;
+------+----------+---------+
| bin | count(*) | pct |
+------+----------+---------+
| -3 | 3 | 0.0701 |
| -2 | 11 | 0.2571 |
| -1 | 53 | 1.2386 |
| 0 | 760 | 17.7612 |
| 1 | 289 | 6.7539 |
| 2 | 103 | 2.4071 |
| 3 | 56 | 1.3087 |
| 4 | 37 | 0.8647 |
| 5 | 22 | 0.5141 |
| 6 | 14 | 0.3272 |
| 7 | 9 | 0.2103 |
| 8 | 2 | 0.0467 |
| 9 | 3 | 0.0701 |
| 10 | 1 | 0.0234 |
| 11 | 1 | 0.0234 |
| 12 | 1 | 0.0234 |
| 14 | 1 | 0.0234 |
| 20 | 1 | 0.0234 |
| 27 | 1 | 0.0234 |
+------+----------+---------+
19 rows in set (12.376 sec)
MariaDB [lobsters]> with flagging_replies as (select r.* from comments r join users on users.id = r.user_id join votes on votes.comment_id = r.parent_comment_id where vote = -1 and votes.user_
id = r.user_id and votes.updated_at <= r.created_at) select floor(score /4) as bin, count(*), (count(*) / 4279) * 100 as pct from flagging_replies group by 1 order by score asc limit 25;
+------+----------+---------+
| bin | count(*) | pct |
+------+----------+---------+
| -4 | 3 | 0.0701 |
| -3 | 8 | 0.1870 |
| -2 | 42 | 0.9815 |
| -1 | 179 | 4.1832 |
| 0 | 1506 | 35.1951 |
| 1 | 660 | 15.4242 |
| 2 | 243 | 5.6789 |
| 3 | 124 | 2.8979 |
| 4 | 61 | 1.4256 |
| 5 | 34 | 0.7946 |
| 6 | 14 | 0.3272 |
| 7 | 14 | 0.3272 |
| 8 | 11 | 0.2571 |
| 9 | 1 | 0.0234 |
| 10 | 1 | 0.0234 |
| 11 | 6 | 0.1402 |
| 12 | 1 | 0.0234 |
| 13 | 2 | 0.0467 |
| 15 | 1 | 0.0234 |
+------+----------+---------+
19 rows in set (12.460 sec)
title
post-stream
merge the PR to remove replying comments?
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
02:47Hello, good morning.
It's Thursday.
This is Lobster's Office Hours.
This is Lobster's.
I'm Peter.
So this is a good time to ask any kind of questions about the site, or run queries against the production database if you've got those, or whatever else.
pushcx Open door, feel free to ask questions about Lobsters in chat anytime.
Let's throw a message in the chat.
03:20So yeah.
marcoroth_ Hey hey, just listing in
When folks don't have a lot of questions, I work on the code base, so you can also just watch over my shoulder as I maintain the site.
Nothing too exciting.
Oh, hey, Marco.
marcoroth_ listening*
Nice to see you again.
I grabbed all of the RailsConf talks a couple of days ago, and...
I didn't get a chance to see yours in person.
So I'm really curious to see where Herb is.
I was fighting with ERB formatting.
And I thought, surely Marco has solved this for everyone.
So we'll see.
I really enjoy
ChaelCodes Hi Marco!
marcoroth_ not quite 100% there yet, but getting there
ChaelCodes Hi pushcx!
using the standard linter on ruby to just stop having opinions on how stuff gets indented all right so let's see let's grab a terminal let's oh hey richard all right so what do we have topics we have prs we have at least one
Where am I?
Oh, I am tinkering with recheck.
Yeah.
marcoroth_ Hey Rachael!
So yesterday, I cut a new beta version of recheck.
So it introspects on models and creates these checkers for validations.
Well, I can just
Grab this guy.
And so, as some very hairy ERV, it was producing these.
twitchtd hi
I cleaned that up.
And then I got the presence validators working better.
twitchtd your audio is really choppy for me
And then also a, isn't there a, I don't know.
I think Boat has one.
marcoroth_ yeah for me too, was wondering if it's on my end
One of these has a length validation.
So these things that are coming soon are all getting filled.
ChaelCodes Same, I was checking on anotyer device.
Ah, shit.
All right, that should fix the audio.
No, sorry, it was my end.
It is a bug in my setup.
I have tried a couple of times to run it down.
ChaelCodes Yup! Audio is good.
There is a workaround, and I only remember to do it about 80% of the time.
Thomas is just usually the first person to speak up and say, hey, you forgot.
Sorry about that.
So anyways, yeah, recheck 0.5 is out.
ChaelCodes What's the workaround?
That's very satisfying for me, but not really what I was going to stream about.
So let's get over to... Oh, it's so dumb.
There is a volume control panel, and it has the little...
bouncing indicators.
And if the volume control panel is open, the audio is good.
And so the best guess we've had about it is that there is some kind of buffer under run and the volume control panel is continuously polling some internal service to find out the volume level to display its little bouncing bar.
And so if that is continually polling,
we will not have a buffer underrun.
But if that is closed, something is deprioritized to the point that it doesn't work.
And it's so dumb.
ChaelCodes Weird.
It feels very ridiculous as a technical fix that I open the control panel for the volume and I put it on the other monitor.
Yeah, it's...
It's kind of magical in the way LLMs are, where you're doing something that is kind of related to what you want, but is not actually a fix.
The idea of if you look at the computer, it does better.
I mean, I've joked about it with family, that the bugs go away when I'm there to debug things.
But that's supposed to be a joke.
So, Oh, Thomas, you opened a pull request three minutes ago.
So this one was the pull request I knew was here because it has bothered me for years and I saw it land in my inbox and I was so delighted.
08:43twitchtd yes, I worked on it this morning, though just opened it to get feedback for it early
And then once Thomas had it here.
OK. Well, let's take a quick peek at it, as long as you're here.
Yeah, we talked about some of this stuff.
09:14I do like that this is not working by an after save callback on the model. Thank you. I would much rather have this code repeated or just otherwise explicit.
...42I don't know what the value of a transaction is, though.
...57And then update right at...
10:11marcoroth_ can't you use `touch(:read_at)` for this too?
Yeah, I'm real leery of... Yeah, Touch is designed for this where you just name the fields you want.
I'm real leery of taking a transaction on notification because it's a big table that lots of users will be simultaneously reading and writing from.
And I don't know that we need
This level of atomicity where will anything bad happen if the message exists without a notification?
Not really.
Hmm.
11:20twitchtd does touch also update updated_at?
Yeah, well, Thomas, I hope that's useful feedback.
I generally, I like this structure of keeping this out of model callbacks, and I don't think we need transactions.
...38marcoroth_ I think only if you don't pass a symbol
Yeah, on any of these.
...49Let's check.
twitchtd ok, I'll get rid of transactions then
let me grab zeal on screen here there is a no touching how 90s yeah so if you don't pass anything it hits the updated app
12:18twitchtd oh it does update updated_at
If attribute names are passed, they're updated along with updatedAt.
twitchtd great, I'll use touch
And we do want to touch updatedAt because, yeah, I have sort of, we used to use updatedAt for meaning things.
You may even see mentions of that.
It's possible it survived in like message.
rails has kind of taken over that as its field for whether the cache on that record should be considered valid or not and rather than wrestle with it we just shifted our business logic to not use updated app and i thought we got everything but messages
are such a like low use feature and low change feature that we don't always think of stuff with them anyways this this generally looks great oh why remove the only unread here we kind of have waffled on that behavior and i noticed you flipped it again and i say we but i mean i because i originally was the one who asked you to remove it and then i was like well
I think we can mirror the inbox.
Hmm.
14:12Let me take a look at this other pull request.
twitchtd I thought part of the behavior people complained about was reading a message on the inbox but the message not being marked as read at
So this one has been annoying me for years and it's my bug and only mods see it.
So it has been about the lowest priority ever.
That could be it.
Was there an issue for it?
And I didn't... Man.
GitHub is such a single page app nowadays.
Like, how much JavaScript do you have to add to a site for a link to not work?
marcoroth_ look at this beautful "Try again" button!
Also, why is there a try again button?
Why didn't you just try again?
You're the computer.
If you know you failed,
15:14pushcx https://github.com/lobsters/lob…
yeah the the semantics of that button were funny too because try again was styled as a link but is clearly a button in that it's not linking me to another page it's executing some javascript handler i mean at this point all of these are buttons but it's less offensive so thomas were you specifically writing the pr in response to this issue 1681
...56Didn't get a notification.
twitchtd https://github.com/lobsters/lob…
I wonder... Why did they expect to get a notification about their own comment?
16:21That's a little odd. On the thread, I saw a higher comment number. So I think they're saying that they looked back at the list of stories and they saw it had more comments. So they checked and someone responded. You can unread all comments.
...49Yeah, so if it was hidden by one of the The bad faith predicates. They probably should have seen the placeholder.
17:11Ah.
...25Yeah, so this specific behavior we designed feels like a bug to vec. That's fair.
...37It is a little bit surprising, I can see. All right. So then this one. I strongly suspect that this is one of those predicates like they've hidden the story or flagged their reply. I mean, these seem like pretty anodyne comments just from these what's visible in the screenshot here. I'm going to grab this username and pull it up off screen so I can see. their recent flags.
18:32So this must be on the.
pushcx https://lobste.rs/s/m8ytbz#c_fw…
Yeah, it's OK, so.
The comment here
It is, it's flagging.
Yeah, so this one isn't a bug.
graefchen How much JS? Many. :limesSip (A little bit late late because we are currently doing WLAN things). limesLurk
This is a feature that's not obvious.
20:17brainwane hi y'all
the other part of it is one thing i've kind of wondered about is whether when you flag a comment where is it score so we have this we show you the the comment score and most of the logic around showing you the comment score is
actually it's up here, is about whether you should see it in this score range.
21:13So what it basically says is If the score is near zero, hide it for a while. And that's just to give the comment a chance to earn upvotes and flags on its own worth. Otherwise, what we see real commonly was If the first thing, if the first vote on it is an upvote, it will get more upvotes. If the first thing on it is a flag, it will get more flags. People kind of follow a little. So hiding the score when the comment is young, when the comment is around one gets us better signal out of the voting. But the other part of it is If you have flagged the comment yourself, so we say comment score for user. Come here. We check if we should show the score. And so if it's under a day, or 36 hours, we don't show it. If it's inside the range, we don't show it. If you have flagged the comment, we don't show you the score anymore. Because, and this is very, very petty, but if you're in an argument with someone and you can click a number to make, you can click a tiny button to make their number go down, that feels like winning. So to disincentivize that, if you flag a comment, you don't get to see the score on it anymore. You have expressed your opinion. And I kind of think that flagging a comment, like this is one of those places where the semantics have drifted a little and everybody's like, oh yeah, flags, flagged, flagging. But the long version of that phrase is raise a flag so someone can pay attention to it. Like you are flagging it to the moderator's attention. If you are tagging in the moderator, you should probably be tagging out yourself. So maybe flagging a comment should remove the reply button. And vice versa, if you want to reply, or if you have a reply and then you flag the comment, maybe it should ask if you want to delete your comment. and require that. I don't know. I kind of suspect I want to do this query. Let's do the mod note thing because that's smaller. But yeah, let me do this mod note PR because it's pretty small. And then we can come back to this one prompted by 1681. And also, I didn't say it, but hey, Brainwind. So we got that. This looks real good, Thomas. Is there more you're planning to do on this?
25:01twitchtd doing some testing
Otherwise, I don't really see any reason not to ship it.
Okay.
Yeah, if you want to throw a test or two in there, that would be great.
All right, so this one, I will give the context for this one, which I already mentioned was my bug that I created years ago.
So I added a mod note system so that moderators can leave notes on user profiles that are only visible to moderators.
And it's useful for things like
Frici π listening while working
This user emailed me asking for permission to do X and I said no, because some users will then, when they get that, no, they will go to the other moderator and they will say, Oh, Alice said that I could do this.
So that's okay.
Right, Bob.
And then Bob can look at the user and say, Oh, wait a minute.
Alice left a note saying it's also useful for,
hey, I had this interaction with the user.
I wanted to record what I'm thinking about this.
It's not something they need to get messaged about, but I want other moderators, which might be me in six months or a year, to have context when we come back.
And I'm very glad I added that.
It helps a lot from getting overwhelmed because they just can't memorize the 1,100 users that are active every day.
But there are a couple of these things too, messages in the mod notes that all start with tattle.
So if a banned user tries to log in, it makes a note.
graefchen Does it also show which mod added a note? limesLurk
If someone tries to submit somebody's bug tracker, it leaves a note.
someone deleted their account and then tries to log in you can you can do the password flow yes it does show which moderator added a note or in all of the rest of these it's inactive user because they're added by the system so you know it's the null object problem but then otherwise the mod notes all they all start with the username so that
If I see Irene left a note, I can just go ask Irene for more detail on something.
This one, I think this was the first tattle I added was a pair of them.
If you send an invitation and someone attempts to use that invitation while they are already logged into the site, it tattles on both the inviter and the redeemer, which is usually the same person.
Because sometimes that is someone trying to send themselves invite so they can have a bunch of sock puppets.
More often i'd say at this point it's now like 6040 what happens is.
I already used Alice and Bob.
Carol is a regular on the site.
Carol is like, hey, this site is neat.
Let me invite my friend Dave.
Sends an invite to Dave.
Dave gets the link.
Dave clicks on the link.
And Dave is already logged in because Dave created an account six years ago and still has the cookie.
like you know was invited six years ago used the site for 10 minutes and then never came back that's totally normal and common and so it is very it is harmless and not at all concerning when dave clicks a link like that if carol and dave have the same ip address and have two email addresses that look very similar that looks a lot like carol is setting herself up with some sock puppets so most of these notes actually
Basically, none of these notes are, if I see them, you're in trouble and you're going straight to hell.
It's more of a, huh, that's odd, let's take a look at that.
Let's get human judgment in the loop.
I try and design most all of the moderation systems that way of, let's help focus human judgment and bring attention to bear on the most important things rather than
surely we can make an unbiased code system that totally solves this problem.
That is basically not possible.
And usually anytime you do something like that, you create perverse incentives.
So like if we had said that a comment that hits negative 10 is automatically deleted, well, great.
graefchen "Unbiased Code System" limesGiggle That's a good one.
Now you and your buddies have a reason to create a voting ring and follow somebody around the site flagging their stuff.
Eh, let's not do that.
so yeah the other ones tattle on max depth limit if a new user
unbiased code system yeah right i i hope my little sarcasm quotes on that one were audible because all you are doing is encoding your own assumptions it is better to code a system that prompts you to exercise judgment than attempt to encode your judgment so this one new user tagging
users are not allowed to submit stories with tags like i think it's off the top of my head it's culture maybe practices because those catch a lot of off-topic submissions like how to manage your boss how to manage your direct reports we're not excited about management the other one is ask i see that one fairly regularly and it's
It's two things.
Well, it's three things.
Number one, they're often off topic and about careers.
Number two, it's really taking from the community before participating in the community.
And number three, four, there is a practice on, well, it was on Twitter before that died.
And it is on LinkedIn of posting engagement bait where you're like,
what's your favorite 80s movie?
Or is it tabs versus spaces?
Or just some other question, especially if it has a good opportunity for people to provide spicy takes as a way of luring people to respond to you with very little work, but you get things that look like engagement.
And when there are
are algorithms that promote engagement like upvoting and commenting you see engagement posts where people are trying to build up reputation build up followers so ask specifically is on the list for new users because of engagement bait and one of the behaviors we see is easy cat
New users come and they write an engagement bait post.
And then they see that they are not allowed to submit a story with ask because they'll get a validation error and get rejected.
And then all they do is delete the tag and post it so.
Now we tattle on that, so we know that they saw the error message, and so they we know they are deliberately breaking the rule with full knowledge of the rule.
That is the same thing about.
posting banned domains, banned origins.
So what was it?
Last month, there was a longtime user who tried to post a trolls blog and then posted their YouTube channel instead because we don't have an origin for YouTube channels.
And I deleted it and I was like, hey, I can see that you were trying to post this troll and you knew I banned this guy for trolling.
then you posted it anyways and then a couple of days later he came back and posted another video and it was like oh what do you want me to do with that if you are knowingly repeatedly breaking the rules i kind of have to ban you because at that point either the rules exist or they don't so anyways that is a long digression into all these tattles but i realized i've never talked through them on stream and most people have no idea they're there
But it is a very nice automatic system for figuring out user intention and user knowledge.
Yeah, traffic attribution.
This one is real useful for spotting the DevRel folks of, hey, did you have like UTM source equals lobsters?
I want to know that you tried to submit a link like that.
Because that's someone deliberately trying to get analytics on how much traffic they can get by spamming us.
So there is a bug and there has been, I think, since the first tattle where the user puts the URL into the submission page and they click fetch title or when you focus out that box,
And it logs because that touches this code path and it tattles, which is good because we want people to get fast feedback.
So the user gets that error and the mod gets that note.
But then if they ignore that and scroll down to the bottom of the page and click submit, or they do particular edits to the form, we create a second mod note that's redundant.
And it has been mildly irritating me for, I don't know, six years.
and yuanji here is has mentioned he's setting up the code base for the first time so that he can start a site and he must have seen this bug and gotten annoyed at it because i have tried like half acidly three times to fix this bug and not gotten it actually there is yeah you can see it there is like me commenting right here i am so annoyed by this bug
so yeah so if we have the same thing and if it has white space and they all have white space on the end don't they they all every single one of these has white space on the end just that's so fiddly why did i even bother stripping the white space
It doesn't hurt anything.
37:18powpingdone It's a person on the internet
Yeah, if you call valid.
Hi, PowPing.
Yep.
powpingdone Whoa
We have a lot of people on the internet.
Looks like there are 20 people on the internet watching the stream now.
powpingdone That's more than 1
All right, so we got that.
...38Oh, and he actually wrote a test for it. That's so great. All right, so I'm going to
38:05Let's say Wanji said they were in Japan, so they probably are not yet awake to fix it.
Speaking of time zones, I saw a post on Blue Sky Go By about the earthquake on Kamchatka Peninsula, and it simply said that
The earthquake in Russia tomorrow is causing a tsunami warning in Hawaii today.
Fun with the international dateline.
So if that's hanging out, I'm going to leave that.
Thomas, have you revised this in the two seconds I've been looking away?
No?
twitchtd in progress ;)
chamlis_ hey-ho all
Okay, then I can move on.
But, Thomas, if you do write those tests now, just ping me here in the chat and I'll come back and merge your PR.
graefchen Nice knowing what happenin in the future. limesGiggle
Cool, thank you.
ChaelCodes I'm a strong fan of UTC for everyone.
Ah, hey, Chambliss.
Chambliss, I promise I am still working on Common Marker.
It is just a lot of testing to slog through, and I was out of town for a couple of days.
chamlis_ no rush, I can only imagine the tedium
UTC for everyone?
There is, ..
There is a great blog post about that.
Where is he?
ChaelCodes How else will we handle timezones in space?
Here it is.
powpingdone International Date Line? Isn't that just online dating?
No.
39:41chamlis_ https://qntm.org/abolish
Oh, Google.
There we go.
Ah, yeah, Chambliss, you got it faster than I could pull it up.
But yes, I think I was strong
in the, boy, let's everybody just use UTC camp.
And then I read this post and I was like, this is actually a great set of questions.
And I am not so sure anymore.
pushcx https://everytimezone.com/
The other thing I will share is my favorite resource for time zones.
I think I use this at least once a week, called Every Time Zone, which is very helpful for building that intuition.
Like, okay, so it is 9.39 by my clock right now, and I just mentioned someone in Japan where it is 11.39.
So you can kind of see from the bars, oh, it's the middle of the night for someone who's physically in Japan.
and I really like this kind of visual display.
And you can click on it and drag this picker around and be like, okay, if I schedule a meeting for what time?
Anyways, favorite resource.
There is an Easter egg in lobsters.
Let's say, look at the top for the year.
So if we go find,
a top post from a little while ago.
No, 22 days isn't enough.
Actually, where is it going to show up?
No, it's going to show up on any of these.
If you hover over these, you get the timestamp, right?
The full timestamp.
graefchen I had the same about the usage of ligeratures in source code. After reading that post I did change my opinion on them. limesLurk
All of these comment and story timestamps are Chicago time because lobsters was started in Chicago and is based in Chicago and is very Chicago oriented for me.
At least someone noticed this bug.
they called it a bug.
I don't know, a year ago, a year and change.
And they said, Hey, I can't find the time zone setting.
Everything seems to be running in us central.
While all the times are stored in the database as UTC, because it's the only reasonable choice, they are always presented as Chicago time.
powpingdone Stupid idea, why not planetary time zones, with a monotonic ticker for the universe?
That is not the only Chicago related Easter egg in the code base.
Just took 12 years for somebody to notice that one.
42:42chamlis_ america is the center of the world and lobsters is the center of america
Paoping, that abolished time zones, talks about it a bit.
powpingdone Wait no, relativity would get in the way...
And then...
Otherwise, I got nothing.
Well, you could still have a monotonic clock, even with relativity.
They would just proceed at different rates, depending on how close you are to a gravity well, right?
or how fast you're accelerating.
43:28So nice to have a long time bug fixed.
We were going to go look at the database.
My local database is recent enough to do this.
graefchen Why not use the Anccient Roman Time System with the time "centered" on Rome? /s limesGiggle
What I was curious about is in situations where someone both flags and replies to a comment, and I'm curious about flags and then replies or replies and then flags, are those replies typically lower score or higher flag than typical replies?
ChaelCodes Finished reading the article. This is the most common argument I hear when talking about moving everyone to UTC.
yeah so that's that's going to be a big query i think it's all roads that lead to rome not all clocks that lead to rome all right so yeah i think if we had
ChaelCodes Instead of relying on a clock or timezone to determine availability, individuals and businesses share availability.
A better way of knowing when it's dark for somebody or if my relatives were better at setting do not disturb on their phone I could come back around to everybody utc all the time.
45:02ChaelCodes Like, Uncle Steve might work night shift.
Alright, so I want.
...22ChaelCodes Relying on timezones means that we skip the hard work of sharing our true availability.
So we want to select.
Oh, this is going to be a big couple of joins.
One more reason not to do it on prod.
So we want to select.
I want to look at it from the perspective of the reply.
Yeah.
So let's say reply.id from comments are.
join users on users alias this?
Yes.
No.
ChaelCodes But also, how often do you call people who's personal circumstances you're not familiar with on the phone?
Users.id equals r.userid.
So you have to have that basic join.
We also want to say where.
parent comment ID.
ChaelCodes Like, I call my Mom, sister, and Dad without _scheduling a call_ but everyone else gets a text to schedule a call.
Yeah, Rachel, the other thing is, as travel gets cheaper, that question gets less relevant.
Like if I call my cousin, I don't know if he's in
Australia or the West Coast, or it could be anywhere.
All right.
Where parent common ID is not null.
And we want to join votes on votes.
We're going to get the null free.
ChaelCodes And if you're calling a business, they share their availability.
ChaelCodes But also, this is a big tangent.
So I can drop this clause where vote equals negative one.
Yeah, and if you're calling a business, you're not going to disturb a person.
This is not, you know, a stream with a real strict schedule.
And if you throw that URL into lobsters, I want to say it's even shown up on the site once or twice, even if it's not super strictly programming.
There is a lot of reasonable commentary on this one because it's one of those very approachable puzzles.
ChaelCodes Oh, so it's engagement bait?
And user ID equals our user ID.
All right.
I think that's what we want, replies where, yeah.
Engagement bait?
ChaelCodes tsk tsk might want to tattle on that one
powpingdone Relativity would get in the way because velocity changes the speed of time, so monotonicity would be incorrect if you traveled with one of those strontium clocks or whatever
No, I think it is just one of those posts that has a very low barrier to entry.
Everyone knows what a time zone is.
48:43In a way that not everybody knows what, I don't know, some deep part of GCC is. I'm thinking of comments or stories on the site that don't get a lot of comments.
...59There was actually a bug fix I made yesterday that was just because the story was bait for me. It was about type systems and undecidability. And then in the comments, somebody was like, oh, hey, you forgot the PDF tag. And I caught a bug. And the commenters caught a bug in the JavaScript that I went and fixed.
49:23Monotonicity would be incorrect.
If you traveled with one of those.
I think we're thinking of different definitions of monotonicity.
So I'm thinking of the mathematical definition where
graefchen Physics. limesYay
The sequence of numbers always increases, never repeats a number, and never decreases.
Because relativity does prohibit time travel.
powpingdone Ah right, I'm using monotonicity incorrect. It would just
powpingdone Be time
what i understand of it and so you would still have a monotonic clock that's always advancing they'd just be advancing at different rates but it is totally possible that physics has a different definition of monotonicity that i don't know because i mean i got most of my general relativity physics knowledge from star trek
50:30jyjmrlk Hi, this is Yuanji, i've just updated my PR, and i'm going to sleep, it's almost mid night in Japan now
yeah okay it would be really irritating if math and physics used that term in incompatible ways all right so what do i want here i want
51:02Oh, hi Yuanji, we were just guessing at your time zone.
Did you already update it?
I would love to merge it.
So you would have to look at the archive for this, but I was saying that I have been very annoyed by this bug that I wrote, and I really appreciate that you figured it out.
Both parts of it.
And you added a test, so this is great.
powpingdone But yeah the clock would be out of sync by whatever distance traveled and gravity
Ah, you updated it.
Perfect.
Thank you so much.
jyjmrlk no problem, i was bothered too like 2 nights lol
Merge.
I think it's one of those problems where fresh eyes helped because you can see from the comments and the commit log that I tried to fix it two or three times over the years and then I just got annoyed and left it alone for the last three or four years.
ChaelCodes That's a clock technology problem.
so i i'm really glad that you fixed this one it's been bothering me for ages if you see other things that are strange in the mod interface please do fix them because i am happy to have bug fixes for moderation problems they're just low priority for me because i have so many user problems do you have a is your site starting to run yet i know you're starting a sister site
52:31If it's not live, you don't want to share it, though, that's no problem.
jyjmrlk I'm still exploring the code base and do i18n work, but i don't know anybody on lobsters
Actually, when... Let me say that a different way.
pushcx https://github.com/lobsters/lob…
I think I must have a lot of lag on stream because everyone's replying slow.
When you get your site live...
Here.
Oh, well, let me...
53:03jyjmrlk I plan to launch that perhaps next month.
Do you have your email on your commits?
You do.
I will send you an invite to Lobster's right now.
...30jyjmrlk oh, thank you!
Yeah, I am very happy to invite people who have made pull requests.
So, anyways, when your site is ready, please do make a pull request to add yourself to this list.
...48All right.
...57jyjmrlk sure, hopefully i can invite more people to join my upcoming site. have a nice day, i will go to sleep.
that was where I was looking up your email don't need that one so what I want is kind of a typical score right so
54:18Both score and flags. Well, let's just select score star from flagging flies. And then this has to be our star.
...45powpingdone @ChaelCodes Kinda? Assuming that the source of seconds is consistent, it's the issue of time drift and understanding where you are in the universe
powpingdone It's why those PTP(?) cards have GPS
of want to bucket them let's just keep it short and chop off the top of the distribution what are we mad about i have the word where twice good night juan bungee i don't know how to pronounce it sorry if i'm wrong
55:13What is my... Oh, it's not vote, it's votes.
...24Okay, this is taking a minute, so that does look like it's turning all, I don't know, 4 million votes in the database? Something like that?
...40Yeah, about 4 million in the database, and then... There's about 600,000 comments. So that is a big join. There we go. So this is what we get for, let's put this in the scratch.
56:05And then, wait, how do you get to a score of negative 16? The minimum score should be negative. Oh, well, I mean, it is possible. So I should file that as a bug one of these days. Let's put that on.
...38powpingdone Because time speed changes happen with proximity to gravity
The
okay cat you don't need to push the all right yes with your big belly your belly is more important than the microphone thank you sir yes you should now get offended that the thing you sat on is touching you that's masterpiece sir all right life with a cat you work for yourself and you think you don't have your boss and then you get a cat
57:12so what i want to say is let's compare that to just typical comments so what we're seeing with this score is and the bug defile is there is supposed to be a minimum score on comments of minus 10 just because no one comment is so bad that you should be infinitely punished and if you should probably you should the punishment should be banned not just you know points or something But the way it's implemented, it's if you load the comment page and a comment is at negative 10, you don't see the flag interface. And so if people have already loaded it, negative 31, what the shit is that comment? That is a lot of people loaded something. Yeah, we need a floor on that.
58:14So this data is so sparse, it's hard to say too much. So let's kind of bin these. So there's what? Two, three, four. So there's 15 of these at about negative 10. There's just so many more total.
...37Yeah, these have the same.
powpingdone And speed
Where are they zero i'm kind of looking proportionally So if there's only a couple of thousand comments where somebody both replied and quoted.
And then there's you know 400,000 replies.
59:08Let's start from, so if we want this to be proportional, how do we update this?
...23I guess we could just count how many there are and divide, right? Ooh.
...44Yes, there's 4,200 there. Oh, and you know what? This one is wrong because it doesn't include only replies.
01:00:38Yeah, let's bin these. So let's say, let's divide the score by, say, four, just to kind of get some rough bins. Yeah, lore of that.
01:01:08All right, that's a little more useful. And I. I'm selecting from the wrong thing. Flagging replies. Did I do that in the first one here? No, I did it correctly, all right. Okay, so that looks pretty good.
...56And now let's get the same thing from comments where parent comment ID is not null,
And then we don't need that part of it.
You know what I should do, though?
I should flip that around, actually.
Yeah.
So from comments where parent comment ID is not null and
instead of saying let's compare them against all comments let's compare them against or and instead of saying let's compare them against all replies let's compare them against all replies that are not flagging the author so then the flagged replies the flagging replies don't appear in both groups so we'll get a little bit better separation on the numbers so we want and honestly we just want to say
Comments ID, well, this one's going to need the table, isn't it?
And I know you're not supposed to do this, flagging flies.
Can I say select ID from flagging flies?
So I am sure I could write the inverse of this.
n1000 Hello!
But i'd rather just let this query take 20 seconds to run and do the simple thing that is surely going to be correct, instead of having a subtly incompatible version and up at 14 seconds alright so with these two let's compare.
hey and 1000.
01:04:01So if we look back and forth between these two.
...16Yeah, there are maybe more comments with negative scores in the flagging replies. Did I divide by the wrong thing? How are none of these percentages above zero? And some of these are. Oh, because in this one, it's not divide by 4729. So this one's, that one's wrong. Let's fix that. So instead of dividing by 4279, well, let's just,
01:05:00Well, I know what this number is, right? Let's put in a hard code number. I was going to stop it.
...17It's what you say. And then let's multiply all this by 100. So I get a percentage. And don't have to read all those leading zeros. Then I'll do the same thing for the other query, which means I'll have to run it again, but that's only 15 seconds. Not too bad.
...44All right, that looks pretty good.
01:06:17Frici better run a subpar query for 15 seconds than optimize it in a minute to run for less seconds JinxLUL especially when iterating on something
Yeah, so this is 0.3% of comments have a negative score, or 0.3% of replies have a negative score.
Yeah.
Well, and not just iterating on it, but when doing one-off reporting to satisfy a question.
Frici That too in particular yeah
I have idly wondered about this one for a year or two, so nice to be reminded of it.
Well, that's actually a pretty stark... What did I fuck up?
How did you get 62,000%?
I pasted the wrong thing.
Hold on.
I don't know which of these is wrong.
All right, let's just... Oh, I have three of them in here.
getting confused in my notes.
That's all.
So this is the one I just ran.
No, there's no times a hundred in there.
All right.
Oh, it's, I bet it's this extra where, oh, well this is confused.
Yeah.
So let's get rid of this.
01:07:52What is this nonsense?
...59Can anybody spot the bug in this query? We are grabbing all the flagging comments. We're binning the score. We're counting them. Oh, it's order of operations, isn't it?
01:08:25Bet it's... No, it's not.
Huh.
Did I accidentally multiply by a hundred twice?
n1000 What is the magic number 4279
No, that can't be it.
Those numbers are still way over.
01:09:05The magic number 4279 is the number of comments in this lagging replies table.
...19Unless I goofed that up, that would certainly throw it out. yeah and you know seeing the count here i get it it's the it's the table i didn't change that back i should have just had two tabs for these i'd be struggling to copy and paste the query back and forth but at least i wouldn't be making these silly edit mistakes
01:10:02Okay, these are plausible numbers. There is a version of Gilman amnesia where you see your own mistakes. And when you see something ridiculous, you're like, well, that's wrong. And then you get a reasonable number out and you're like, well, I don't need to interrogate that as much as I just interrogated the obviously wrong thing. I'm aware I'm doing it. We have iterated enough. It's probably okay. so yeah 42 no that was the so this one wanted to be how many yeah so now this one the outer one says query comments and it's not in the thing and it has the right math.
01:11:09And that actually looks like they sum to about 100%.
So now I can compare them.
So on the left, we've got
replies where the reply author has flagged the person that they are replying to whether that happened before or after and on the right we have all replies where the author of the reply did not flag the person they're responding to and the scores are indeed significantly shifted down
Because we can look and see of the negative scores, we've got what?
Six and a quarter, six and a third percent.
ChaelCodes (Sorry @powpingdone - I went to change a diaper and don't want to revive now that the convo has moved)
And here it is 0.2, 0.3% maybe if we round it up.
That is an order of magnitude difference.
And then score is at zero.
substantially higher to get to zero you have to have gotten flagged at least once or remove your own upvote and then we have i don't know what is this 30 call it 35 above this one's lower but it's probably going to be cut off by there being more bins on this side
because the rest of that percentage mass has to go somewhere and it's just down off here so that's i was worried these numbers were going to be close but being an order of magnitude more negative scores which is in absolute is only like five percent but that's that's big we see something like one percent of comments get flagged at all
to have that jump up to what must be 7% says that if someone is replying to a story that they have flagged, sorry, someone is replying to a comment that they have flagged, it is substantially likely that they are leaving a bad comment themselves.
So I think that answers my question of whether flagging a comment should,
remove the reply button.
So I'm curious, if I take this, so let's take this, let's go up here.
So instead of saying 4279, we'll make this general.
ChaelCodes Will that discourage people from flagging messages?
We'll say select account star flagging replies, because I'm going to touch that.
And then I'm going to add the condition
I am actually fine if people are discouraged from flagging messages if they are doing it just to punish someone that they disagree with or annoyed at.
Because then the moderators are getting fewer flags that say, hey, look at this, when there is nothing to look at.
It is fine.
You're just disagreeing about tabs versus spaces or whatever.
so can i show this yeah there's somebody on it right now there is a mod dashboard for showing flagged comments and just like on slash top where you can say slash one day slash 2d slash one year so one of the most frequently looked at pages by the mods is that dashboard of art show me all the comments that have been flagged in the last two days
And the most delightful thing on that view is that if there are no flagged comments for the time period, it just shows a happy little lobster.
And so my favorite thing is to log in and look at the flagged comments of the last two or three days.
And not only do I not see any comments, I see a cute little lobster.
So if people are flagging each other because they disagree,
Less often.
That's probably good.
01:15:52chamlis_ can/do mods clear flags if no mod action is required?
Alright.
And the cat is such a big sprawl that his back feet are starting to push the keyboard off the table.
I should get OSHA compensation.
pushcx https://lobste.rs/mod/flagged_c…
no mods cannot clear flags if nothing is required but i would like i think a workflow kind of engine so i've kind of we've kicked it around we the mods because we're the ones who see this interface so i know you have a dev version set up if you looked if you generate fake data and you look at say this page
The dashboard for the mods is very oriented around what are the recent notes and then, as anybody can tell from this URL I just threw in chat, there's what are the comments that are flagged in this week or this day, and then what are the stories that are flagged in this week or this day, and what are the commenters who are flagged, well, that one's more month, two months, because we're looking for trends.
That all works fine.
It beats the shit out of nothing.
Because that's what there was before.
But I think it would be... Well, let's throw this in as a topic.
Because I'm going to ramble about it for a minute.
I think I would like there to be kind of a mod work queue.
So one of the things about being on the flagged stories or flagged comments list is...
It has to be flagged twice for the same.
No, it's the controller's moderator controller.
Oh, right.
But that's just a controller's mod.
01:17:51Which one is it?
...58Yeah.
01:18:04there was something clever in these routes and so i'm not remembering it ah it is the mod controller the site is kind of why doesn't this inherit from mod controllers there's a bunch of stuff around like is it mod or is it moderator and mostly actually i think pretty universally mod is the it's the internal for the actual mods and moderations is the user's view of stuff moderators are doing but that distinction is not clear to anyone except mods so yeah for flagged comments you do have to get flagged twice for the same thing right where and vote is great no you have to get flagged twice for things that are not me too i was thinking it was you you know to show up you had to have two unkind votes or two troll votes but no i'm misremembering what the query is so it's good that i checked so currently
01:19:32Let's just have to look often enough and cross check notes to see if actioned by other mods. Well, notes in their own memory of what's discussed in the chat room. The idea would be to have
01:20:08Each item is created by a flag. This would make individual flags more important because they would immediately put things into the queue where this requires two flags. And if that's not obvious, it's because vote starts at one because users automatically have upvoted their own comments.
...38Each item is also a mod mail, a PM visible to the... Well, I guess it's two.
01:21:04And then... modmail is the dm system but all mods can discuss notes appear in line two mods so one one hassle right now is if you mail a moderator it is just the existing dm system you're only seeing that
...38And then something like can be, I guess actioned is the generic verb, e.g. delete, comment, or cleared.
...58Cleared means mod disagreed with flag. It should have no effect.
01:22:10And then there's an open question of, should it be visible that a mod cleared that flag type?
Actually, there's going to be a bunch of these.
Maybe just visible after user attempts to flag.
And I say that because, let's see, I'm already up to Dave.
Edna flags a comment as spam.
Frank, the moderator, clears it and says, no, it's not spam.
And then... Gertrude, Harry, and Ingrid all flag it as spam.
I think that is a good workflow that users can be like, no, really, we really do think this is spam.
and it should like go back in item is such a generic word i don't have a better i don't know maybe case almost i i hate to bring in like cop lingo you know i'm working the case this one's a cold case
But it is the right thing.
IndifferentGhost Mods are basically digital PIs
Mods are basically digital PIs.
Hi, indifferent ghost.
Welcome.
I think of us mostly as...
gardeners and janitors i like those metaphors quite a bit because while the janitor does have extra power because they have keys to everything and they can be like hey you kids get out of my hallway they are not the thing that people are there for
By which I mean, I really, you didn't do it, but I resist anything that kind of makes mods star of the show or especially famous and interesting.
graefchen Like a moderator in a talk that tries to let the conversation flow nice and not get out of hand. limesD
I want to avoid everything around that kind of cult of personality being the extreme version.
All right.
And then, yeah, I mean, honestly, that's a very similar role.
whether that's a discussion panel or a junto dinner party with some fun rules.
And then the other thing is mods can, what's the right word here?
We're going to call it pay attention to users.
So all there.
So, well, not all.
So they're next and comments over the next M. Realistically, months because we we think move on that kind of speed.
Open work items.
So an example here is.
Hmm.
graefchen But I like the "Digital gardener and janitor" analogy limesLurk
What letter did I get up to, Ingrid?
So if John posts a nasty comment, like, you're so dumb for liking Rust, you should go drown in a lake.
Or if, H-I-J-K, Kelly?
If Kelly posts, check out my cool new startup we just raised to Series A.
Those kinds of posts, the sadism of insulting people or the real spammy kind of stuff, those are the two kinds of comments I delete where I most think to myself, I gotta keep an eye on this person for a couple of weeks because
The spammers don't care if they get whacked once.
They are immediately going to come back and try again, whether that is two days later when they have Claude write their next blog post or whether that is six months later when they think I've forgotten them.
And when John the Insulter says something that is deliberately designed to hurt someone's feelings, it's that sadism aspect of it.
When somebody really wants to hurt somebody, that kind of personality defect is going to reassert itself over and over.
And even if they realize, oh, I'm about to get banned for insulting people, they will either try things that might not be obviously insults, or they will try other kinds of bad behaviors.
because they enjoy...
They take a pleasure in breaking the rules and getting away with it.
There's... Where is it?
Dark... Have I not pulled this up on stream before?
pushcx https://en.wikipedia.org/wiki/D…
IndifferentGhost John the insulter is the dollar store Vlad the impaler.
So there's the idea of the... Typo.
davidofterra I was a Reddit mod for a couple years and we found that kind of 'pay attention' rule quite helpful.
The dark triad of personality traits, which is a little...
So my caution every time I bring up
That is a great line.
John the Insulter is the dollar store Vlad the Impaler.
01:28:28David, I know your username, but I know you mostly use another one, and I can't remember what it is.
But I know you, right?
Anyways, let me finish the thought here.
Whenever I mention psychology stuff, where...
psychology gets involved with really serious stuff it is about like murderers and killers and stuff and this is like one percent of the intensity and importance of any of that because it is people leaving comments online i think it is a very useful tool but i i caution about over applying it
Because it is stuff that is written with the idea of hey let's make sure nobody gets murdered and nobody gets their house burned down and we are just making sure that people aren't insulting each other.
But the the traits of.
yeah so like what i'm saying is when I see the anti social behavior of wanting to insult people.
I also see selfishness go along.
And so if someone knows that they're going to get whacked immediately for an insult, they may kind of slide over into one of these other behaviors.
So that is why my dream system for a mod work queue includes some way for mods to be like, I dealt with this incident, but I want to keep an eye on this person.
Because the John and Kelly archetypes I described are, I don't know, call it.
So we've already noticed, we talked about here, like less than 1% of comments get flagged on the site.
twitchtd I finished writing the tests for https://github.com/lobsters/lob…
john and kelly will do something rule breaking again call it 30 of the time maybe higher if it's their second time it's like 80 or 90 because they cannot stop whatever the bad behavior is everything with moderation is just watching for patterns
davidofterra We had separate watch lists for different categories of bad behavior - spam, piracy, trolls, etc.
Anyways, so Chambliss, just to make the implicit explicit, you have made a bunch of fixes to the site.
If this kind of thing, this idea of a work queue is real interesting to you, we could work it up and you could work on it.
It would be very valuable to me.
IndifferentGhost watch list + note section.
chamlis_ thanks, I'll think on it. I'm into a busier phase at work now so it may be a while I'm afraid
separate watch lists oh nice yeah lobsters is low traffic enough we don't have to split things out but most of the time i see the username and i'm like kelly wait didn't i just see kelly and it's like oh yeah a month ago i had to delete kelly
or delete Kelly's comment.
If I deleted Kelly, I'm not seeing her again on the site.
So yeah, so this analysis, I mean, this is pretty rough, but the difference is big enough that I feel it's worth moving on.
All right, so let's take a second to jump over to Thomas's
PR, which I have open.
Oh, files changed 10 now.
Let's look at those tests.
Yeah, so we got the touch.
01:32:39Why would a message not have a notification?
Because it predates the notification system?
twitchtd notifications are async
Are there instances, Thomas, where we... No worries, Chambliss.
I said it to someone else recently, but ah, thank you.
Every code contribution somebody makes is a gift, and there is no amount of gifts that you can give that obligates you to give more gifts in the future, especially to someone who is just rambling about an idea for a gift that they want.
There is zero obligation to pick that kind of stuff up, but maybe I will take those notes and make a feature request out of them.
For myself, if nothing else, because I don't want to lose that.
01:33:48You know, I got to clear my throat. Thomas what's the delay on creating notifications. Is it like five minutes to give people a second to use the edit window.
01:34:12twitchtd notifications get created in the notifymessagejob
Because I wanted to say we we gave it a little bit of delay with the idea that.
We didn't want to notify until it had a chance for the author to tweak because it is very common that people post a comment, click edit, correct a typo, save again.
Notify message job, which is...
...42Okay, so we just do it as a perform later out of band.
twitchtd I don't think there is a delay, but it depends on how many jobs are in the queue
yeah messages can't get updated i'm thinking of just of comments all right it occurred to me looking at this well i guess it'll go away yeah so we want to eventually get rid of this separate read notification on message
01:35:19because that is the notification, but then the job queue is typically very empty.
I could bring it up, but typically every enqueued job gets completed within a couple hundred milliseconds at most.
My one concern as soon as this is async is are we going to have
a message recipient read the message, and then if the job queue is backed up, they get a notification afterwards, and then we're in an inconsistent state where they have a notification that says it's unread, but the message itself says that it's read.
And as soon as you have two sources of truth, you have that problem.
You still have that problem of you could look at the message before the notification object is created,
twitchtd I added logic for that in the job
So maybe you have to keep this field?
Am I making sense about the race condition?
Oh, okay, good.
Is it literally down the screen and I'm just jumping ahead?
01:36:44Mm-hmm. Yeah, you got it. You saw it. I've been thinking about that one for a couple of days. Do you have the same logic on comments? Oh, you can't because comments don't individually, they don't have a single recipient the way a message does.
01:37:14Oh. Nice to have that. Wait. How does comment have one notification?
...35Because one comment, I guess it only notifies the person that is being replied to. Yeah.
...51I think that is true now, but not where we want notifications to go. All right. Create a notification from an already-met message. All right, you got that. Marks the notification and associate Ted.
01:38:37GitHub, why did you go back to the top? I thought you were a single page app.
...48That's good to know. All right, I think this is ready to go. Test is running.
01:39:23seven 31. okay as soon as this goes green i'm gonna zero failures five pending what are you still running oh the slow test that's not gonna fail we're good to merge
...53And then, Thomas, if you want to follow up in the feature request with vec about these changes I'll let you do that and then let's all remotes so I have it and lobsters so
01:40:29I got to make one of these.
I guess I have to duplicate this script or parameterize this script.
I am also using Hatchbox for recheck.
As long as I'm waiting, it will show off.
And I have put up a landing page with a bunch of copy I don't like, but it exists.
It is not just the jumpstart placeholder anymore.
twitchtd btw, there's one more issue that got brought up https://github.com/lobsters/lob… the very end of that comment is something we talked about whether we should include detailed messages why we don't display comments in the notifications tab
There we go, but I kept reaching for the lobsters deploy script and I don't have one for recheck deploy Oh, the other thing that is starting to hassle the heck out of me is.
Oh let's talk about that.
One other issue that got brought this down and grab the issue.
The very end of the common is something we talked about with her she include detailed messages.
twitchtd yup, it's a bug
yeah so what this user is describing sounds like a bug and then oh you i did not see this comment because you are explaining that whole workflow that i already thought through sorry to beat you to death on that one
Due to the logic not being fine grained on notifications all.
01:42:13When you say remove that logic, you mean the logic around which message gets rendered.
And then just show a generic like.
twitchtd I was thinking of having a generic placeholder
This comment does not appear.
...36I think we want to have no placeholder, even though it literally just got reported as a bug. I would rather not have a placeholder because, as discussed, when I've been reading it, even just seeing the placeholder is a. Like, oh, hey, let's go check out what this mystery item is. I have a fun little 60 second mystery to investigate. what this flag is, and so it is doing the opposite of what it's supposed to be doing. Instead of leading me away from the flame war, it's like, have a fun puzzle. And then when you solve the puzzle, you get to be mad at somebody online, right? I think we just have to remove the placeholders.
01:43:30twitchtd ok, then if no placeholder, it could show less than 25 notifications, is that fine?
And I know we've discussed it on stream, and I don't remember if it made it into a
comment here i think that's fine yeah
01:44:07Because like as we're, this is mostly around someone has hidden the story or flagged the commenter.
twitchtd ok, then I'll get to fixing that as well, though not today
And that is a less than 1% kind of event.
...25It's probably going to be overrepresented on notifications because people who are mad are going to be reloading notifications or reloading replies or reloading slash comments. But yeah.
01:45:21So it starts with an MVUETS. Yeah, I'll just add them.
01:46:06before i say this let's look at the last i want an accurate number let's back it up an extra month because this database dump is already a couple days old
...37twitchtd can you have date's like that
So that's not right.
What did I do wrong?
Counted everything from comments where the created app is greater than, oh, it needs a, if you don't pass it as a string, it doesn't turn into a date.
So if there's 13 and a half thousand in the last month and I'm a, and then
01:47:12sql doesn't compose so yes 602 where are we here 602 out of 13 525 yeah so that's four percent wow that is substantially higher than i thought my rule of thumb has been roughly one percent hmm
...49chamlis_ now filter out vibecoding
All right, well.
01:48:03It's probably a complicated aside to squeeze into this comment.
...33graefchen Wouldn't surprise me if most of thosw would be mostly about "AI", because reasons. limesO
That's totally possible.
All right, let's run that query.
What's the, was it 120?
01:49:09120. Is that a bad sign if I know that one by heart now? Join taggings on stories dot id equals taggings dot story id and where taggings dot tag id equals 120 and let's say
...40let's go ahead and bin it right we'll do this again flags comma count star grouped by one motor by one desk ask
01:50:07Okay. And then I don't want to figure out the inverse of this join. So I'm just going to do the, but the, I do want to put back that created app because vibe coding has only been a tag for a couple of months.
...36What's the date here? 0430. So we'll just pick up from 51. Because if fewer comments are being flagged or not flagged as part of a secular trend, I don't want to confound with that. 25, 501. And then... people just to versus all.
01:51:34Again, we got the proportionality thing happening. But yeah, there is an order of magnitude difference visible here. So it is only one order of magnitude here on the vibe coding comments. And it's more like two here. So I think this is my difference.
01:52:06163, 39.
...13Yeah, those are both about four times higher, which does imply a much higher base rate for vibe coding.
...37Thank you, sir.
...47Thank you.
01:53:21This whole thing again, aren't I?
01:54:01All right, so that's, did I leave off, I left off the 100, didn't I? Yep. So we got 9251.2 versus 95.3. All right, sir, you're okay. It's been laying on the mouse and helping. So we'll put this in Scratch too. Just because it's nice to have these queries and these figures.
...58so the question there really is do comments on stories tagged vibe coding get flagged more often at least that's what i took as chanlis's implicit question and the answer is yes overall including vibe coding it is 4.4 percent ish
But when you get just into vibe coding, 8.3, almost double.
And if I wanted to write the longer version of this query, I would filter out everything that is tagged vibe coding.
chamlis_ it'd be fun (but tedious) to do proper hypothesis testing
I just don't want to spend that much time doing this kind of query rewriting.
01:56:11graefchen Data is fun. And Data analysis even more. limesYay
yeah i don't i read a lot of scientific studies and so that's why i catch some of these statistical errors but i'm sure someone who has proper stats and science training would do a lot better than me on it hypothesis testing i mean especially if you're doing p tests we just don't we only in some places have enough data for that
because if you're talking about, oh, it's 1% more likely, and we see 250 comments a day, that's just lost in the noise.
So that's why, like with these queries, that difference between these was like literally an order of magnitude difference, and that caught my eye as worth paying attention to, where if the numbers had been pretty much the same, I would have said, ah, it's just noise.
But I don't actually need to do a p-value test to know that an order of magnitude is probably significant.
Especially when there's, you know, thousands of items.
If there were like three items and we had an order of magnitude difference.
All right, back to noise.
I don't have a perfect intuition for this, but I have at least a little intuition.
All right.
So there's that.
Anyways, for anybody who's just joining, I've been streaming for about two hours.
So this is Lobster's office hours.
pushcx This is Lobsters office hours, you can ask questions about the community anyime, and we're run your queries on the db.
You can ask questions about the community any time, and we'll run your queries on the DVD.
Cool.
So close that one.
This was the one with flagging replies.
I don't need that anymore because I answered my question.
I do need... Where am I even?
Let's grab everybody and make a new one on... Oh, you know, I was starting the aside that...
this is the last repo i'm on that uses master instead of main and it is starting to get irksome because as you can tell from watching me work i spend a lot of time hitting ctrl r and just pulling back previous commands and after i've done that about 10 000 times i make an alias for them but this is the one repo
I have that still has its trunk called master.
I don't know how much pain I cause everybody else if I just rename that.
Kakurito have you tried using atuin instead of just ctrl-r?
There was a big heyday, what, seven or eight years ago, where GitHub changed the default branch name for the repos it makes.
And I think Git changed as well.
And a bunch of people were like, hey, if we can't have
This branch name, get his woke.
I don't know.
I remember there was a lot of fuss around that one.
And I actually looked into the etymology of it because I'm a big English nerd.
And yeah, it actually just straight up comes out of master slave terminology in the very old fashioned American sense of chattel slavery.
All right.
Yes.
So hi, CatGorito.
Is that like a burrito made out of?
All right.
I have tried Atuin, and it disrupts just a little bit too much muscle memory for me.
It has features that I've wanted, like can I filter this just to commands that have a zero exit code?
That's pretty great.
I've wanted that.
Because, you know, I have a hassle, like if I type
n1000 I don't have a specific question but I've long wondered about the 61 people filtering `programming` are they just filtering everything but their own hobby horse? What's the deal!
something for a history or i type a command wrong once i tend to control r to it over and over again because i'm going to start typing whatever that first thing in my head was that's why like when i lose something i like to put it away the first place i looked for it because that is probably the next first place i will look for it having my history remember failed commands is kind of the opposite of that
02:01:17Hmm. That's what it was. I didn't.
...25I yeah, I don't know.
Maybe they just think it's too generic.
I don't know why 61 people would filter out the programming tag, given that it is the most popular tag on the site.
It could be that they have their own niches.
I can't immediately think of a query on that one.
I guess we could look and see if they were more likely to filter other categories too, or other tags as well, or only participate on other tags.
Do they have a narrower behavior in other tags than the median user, I guess?
I don't know, that's a lot of complicated queries.
n1000 trying to figure out a query that avoids exposing PI...
I can think of a bunch of ways to express it.
Realistically, I would just have to message those 61 people and ask and be like, hey, what's up with that?
Yeah, I appreciate that because I wouldn't want to call out those 61 users.
You're welcome to filter whatever tag you want on the site.
You don't need to be named over it.
Speaking of, I was going to do this.
And the reason my cursor was in the middle of the line was I was going to search for also.
So this is the base.
I am curious to see.
How many there are where.
This is the overall auto completed the wrong one.
02:03:05This is the right one.
I'm curious to see if there is a significant difference between whether the flag comes first or the comment comes first.
Really, I guess, what's the delta there?
graefchen Are the filters counted by visitor of the site filtering or account on the site filtering? limesLurk
Because a small delta implies that the author knew they were going to flag the comment and they were just like, rah.
A large delta is like, on further consideration, you know,
If somebody comes back six hours later and flags the comment they replied to, that's probably a retaliatory flag.
And Gravechen, it is accounts filtering.
pushcx https://lobste.rs/filters
So if you go to lobsters slash tags, or no, I'm sorry, lobsters slash filters, and I'll throw the link in chat for convenience.
This number can only count
site accounts because if you filter out a tag and you are not logged in the only place that is stored is in a cookie on your browser i guess the cookie is set by a server round trip so we could theoretically like grep it out of the logs but we can't know if someone clears their cookies so it would be a lot noisier
n1000 I wrote a little script to do some analytics based on this table. Kind of interesting to see filters/story--some things are hated without even being discussed.
Yeah.
02:04:52I would hesitate to say hated. I would I would stick with the neutral filtered on that one because
02:05:05It's very easy to be like, well, you know what? I had a job 20 years ago where I had to write Perl. It was bad. I don't want to deal with it. Perl hasn't been relevant for a while. I'm just not interested. Let me filter out Perl. And that doesn't mean I hate it. It just means I'm really not interested. And I don't think anything is going to come out of that community that's going to interest me. But it's an extreme disinterest rather than hatred. And that is a made up example. I actually don't really care about Perl either direction.
...52So let's look first where the vote comes before the comment.
02:06:09How does votes not... Is it just... Oh, I didn't alias the table.
That's all it is.
n1000 Yes. That's true. I don't think people really hate most of these things. I think that's the story of vscode's extreme ratio.
Yeah, schema quirk is that the votes table does not have a created at.
It just has an updated at, which is fine.
...38Is VS Code especially flagged? That's not the tab I wanted to reopen. Filters.
...51Only six stories, but 36 people filtering it. Huh. And it's funny, the generic editor's tag has the reverse ratio, pretty much. Instead of six stories and 36 filtering, 57 stories and only seven filtering.
02:07:22You know, I should put jujutsu in the description of VCS. Let's grab that link. We have had, what, a dozen jujutsu stories in the last two or three months? And while I'm a fan, it would be nice to autocomplete because I bet submitters are trying to do that. So let's edit.
...57Sorry, I'm clunking around in the mod interface looking for this. So VCS, there's my edit link.
02:08:08You think I can drop subversion? When was the last time we had a subversion story?
...26These are security related, the first couple. A month ago. Yeah, so there's a passing mention of subversion.
...44all right there's a real mention of subversion just a month ago two months ago rather all right we're still getting some so i'm going to keep it in the description
02:09:23Let's throw that in the notes for stuff to scribe.
...41Where was I now? I was here.
...52I edited the wrong query. This is the outer one.
02:10:02All right, not outer, the one where it's just, here we go. This is the one. Let's get that running. Cause you know, obviously there aren't half a million comments. I should total, the count star column should total 4,279. And this looks like that's actually possible. And then here is where I wanted to say, and votes updated at, it's after the replies created. Let's, yeah, so we'll do it both directions. Just kind of curious to eyeball this to see like, are people, flagging and then replying or replying and then flagging. Because I'm going to make the code work either way. So this looks like this one is 760. I'm also a little curious to see if the distribution is about the same.
02:11:26Let's grab this guy.
...33Let me throw it in here at the end. And throw this in at the end so I don't forget. And then, so let's compare these last two queries I just ran. So this is the one where somebody comments and then votes, and then this is where they Well, not votes, flags, comments and then flags. And then this is where they flag and then comment. Yes. And flag and comment is way more common. And substantially, actually substantially less regarded. Wow. So the negatives, you know, this totals, what, over 5%? And then on this side, the negatives total like what, 1.3, 1.4? Huh, so both are substantially worse than median, or median, nominal, the non-flagging scenario, I don't know what to call it. But if someone flags and then goes to write a reply, It is probably not going to be a banger. Yeah, and having a score of zero, I mean, it's double the rate. This this gives me a pretty good confidence that if you flag something, the reply button on it should go away.
02:13:25OK.
02:14:04So this is on the JS side. Do I want to throw this in a span? Oh, man. I wonder if Marco's still listening. Look at this inconsistent indentation. This one is four spaces instead of two.
...36Where's herb linter and herb processor when we need it? So how do we want this visually to appear? I could remove the reply link, but then we're just gonna get bug reports. It could be disabled. It could be struck out. That's gonna be very visible of you're not doing that. I think maybe if we strike it out And we put the word flagged in. Yeah, actually, the word flagged is going to appear. So if you flag a comment, there's the title and then immediately to the right, it says the flags. So if we just strike it out, they're going to be next to each other. Especially if I move the title to the end. Which I don't quite want to do because I skimmed down the right side, so. Mass equals. I want to make this comment reply or don't I. Comment reply or. Actually, no, I don't want to strike out that I just want to strike out the link, OK, so I don't need another CSS.
02:16:11So if the score is nan, and...
So if it's flagged, we want to say... Rabbit.
And we want to say, actually, I don't think we need to say anything.
We just have the flagged class do it.
Let's reply clear.
That looks funny.
krystal_mess323 whats up dude. how long you been coding in rails?
All right, so we've got application CSS.
And it's flagged.
02:17:14Hi, Crystal Mess. About 20 years now. I started coding in Rails a little before 1.0 came out. Maybe it was 0.8, something in that neighborhood.
...48krystal_mess323 question. Did you notice how rails was ubiquitous in 2011-2015 before taking a back seat to other frameworks until roughly 2-3 years ago when it stormed back?
so if it is how about you so if the comment has the class yeah there was a a lot of discussion of that at the last rails conf which was just like two weeks ago three weeks ago
02:18:23krystal_mess323 really? omg. it was an independent observation but I have been wanting to ask if anyone noticed
Is there a way to disable a link?
I don't think so.
Yeah, so I think I would actually have put Rails being ubiquitous a little earlier.
I would say like,
2009 to 2013 and it had a really good run from like 13 to 16 or 17 but in that second half node.js started and it stole a lot of rails's thunder and i don't have a great feeling for why it is that
why JavaScript was able to grab so much mindshare.
But that was when Node.js was released and the whole idea of doing JS on the server was the new hotness.
02:19:53Yeah, I didn't think so. I can visually disable it.
02:20:10krystal_mess323 oh shit you are in chicago too?
That actually works.
Well, all right.
Yep, I'm in Chicago, best city.
It is currently sunny.
So now you know I'm in Chicago because I have a window.
Yeah, so we'll do this.
graefchen "pointer-events" is a cool thing.
There we go.
krystal_mess323 i am streamer in this category. long time software engineer. mostly, I am focused on ai engineering these days. got my MS in comp sci from uchicago
krystal_mess323 ill keep in touch man
krystal_mess323 omg what happened?
let's sort these what is our usual text color yeah i didn't know pointer events it's a new one to me ah u chicago i'm mad at the comp sci department at u chicago they experimented on me and i'm staying salty about it
02:21:14It's it's in our about page.
krystal_mess323 k
pushcx https://lobste.rs/about#trivia
But it is actually about rails small world right, so if you pull up the about page i'll give you this link in the chat if I can type it.
So we have a trivia section on the about page, this is the rails up on maintaining and you'll see a mention of University of Chicago researchers.
They.
experimented on me and other open source maintainers they had created a tool that was supposed to.
improve performance on rails Apps and because they wanted to prove its efficacy without disclosure without informed consent.
They opened pull requests against open source repos including mine to experiment on those maintainers because if the maintainers accepted the patches then surely.
the tool was good.
krystal_mess323 even tho uchicago is great brand. their comp sci dept is not as highly regarded as most of their other deptartments. but i loved my time there. even taught in their graduate school
Now, in medical research, if you were like, I'm curious if my drug is any good, let me secretly give it to someone and not tell them I'm giving them a drug and analyze the effects on them.
When I say it like that, it's obviously unethical to experiment on people.
But in fact, their institutional review board was totally cool with experimenting on people.
krystal_mess323 okay. lol
so ufc can get fucked i hope you're a good person though well anyways congrats on escaping the factory i hope your soul is intact the
graefchen It apparently has been widely available since 2015. But it is css, so I am not surprised that it is new to people. limesD
No, I tease.
Anyways, if you're a streamer in engineering and you're going to be streaming in about 40 minutes when I wind down this stream, I'll throw to you if you want.
Or not throw, that's the old-timey radio talk.
I will raid you.
Get the Rails server tab in the background.
Let's get on local dev.
krystal_mess323 hahah. awesome man. yeah lets stay in touch. actually traveling to vegas to check out evo (a fighting games e sport event)
Alrighty.
Oh, Vegas.
Well, especially Evo.
Good luck with your pairing.
krystal_mess323 π€£ tottaly yeah
That's the one with the famous Ken pairing Chun-Li, right?
I never got super into the fighting games, but everybody knows that one.
02:24:25Did I not? I thought I reset this password in dev.
...45krystal_mess323 !discord
pushcx https://lobste.rs/chat
Nope.
pushcx https://push.cx/discord-vs-irc-…
Lobsters does have a chat room, but it's IRC because we're all old.
And we have kicked around the idea of moving to Discord.
So like you are joining a pretty hot topic.
We kick that one around a lot.
All right.
So if I find this comment and I kick flag on it,
Hey, look at that.
The reply button immediately gets crossed out and can't be used.
And if I unflag, it comes back.
Good.
So that's actually like all of the client side functionality I wanted for free.
I mean, not free, but very close to free.
Now we just got to do it server side and handle the case where...
someone has already left a comment and they flag that's more involved but we'll think about that in a second it's also less bad as we saw in that query 17 what is this call that 18 19.2 yeah so like
19, 20% versus 41%.
So that's funny the way some of those just fall out.
All right.
So we got that.
Even that is good.
Why do I have like 20 changes?
I have the CSS.
I have the JS that I don't need.
02:26:53have that oh right because i fixed and then the db stuff is migrations right thomas if you're still watching how did you not run the mic no this is some weird local thing i have that destroys my migrations file or wants to i don't know what's up with that one
02:27:27twitchtd just got back from walking the dog and heard my name :)
What is this tab complete doing?
Besides completing random ass... Oh, it's J for jumping around directories versus JJ.
Thanks for printing a bunch of my personal stuff.
JJ restore that.
JJ restore that.
...58Yeah, Thomas, your pull request. Oh, it's this. Whatever is going on with MariaDB and character sets generates diffs. And there's something about my machine is slightly different than contributors for this default. And as migrations run, collations on various tables flip back and forth. And as far as I know, these two Callations are functionally equivalent, so it's just an annoyance. I don't know. So that's a good start. Let's give it description.
02:29:00That's actually, I'm going to want a longer description.
...44This feels like such funky English. When a user flags a comment and replies to it. So always go subject, verb, object when things get hairy. And reply is. around 10x more likely to be flagged. Whoa. Thanks, Kat. If someone wants to flag a comment as needing mod attention, they should just leave it to the mods.
02:30:34Hopefully, this will also discourage the use of flags to punish people that the commenter disagrees with.
02:31:06Feels a little funny to put my blog in the notes here. 0731. In the git commit message. I don't know. I'm not doing it to spam. It's just legit. I don't want to slam all the query. Why don't I just slam all the queries in here? I mean, right? I could just write for distance in a query message.
...45Thank you.
02:32:25Why are you going to be on the mouse?
...57Let's put these in the... I feel like that matches fine. All right. So we have 52.
02:33:25Five, six.
...58So there's that. Now we've got to bring it server side and let's make myself a to-do list because I'm repeating myself. So I've handled disabling on client side. All right, that's done. And then comment needs a validation to prevent. flag needs a validation to prevent and then client side. You know, maybe the easiest way to flag to handle the situation where someone wants to flag after replying would be just to remove the reply or just to remove the flag button.
02:35:10So let's go to comment model. And got show score for user. We want to validate.
...40let me have this generic block all right where's my i'm gonna stand up for a bathroom break i'll be back
02:37:34In one of those moments where you figure stuff up, figure stuff out as soon as you take a break, I realized where I got that 1% number from. So I was wrong about what percentage of comments were flagged. I said it was like 1% and it was more like four. And I was like, hey, wait, I'm thinking 1% of commenters. So users who have left a comment fewer than 1% get flagged. Because again, like I joked about with John and Kelly, it tends to be repeat offenders. So let's see if my Murray is right, and that's what it was. So let's say, what do I want to count? I want to count how many users have left a comment. So distinct user ID comments were graded. It's greater than or equal to, and let's just say the last couple of months, right? 05, 01. And I only want the count. So 2,000 distinct users have left comments in the last two months.
02:39:05Where and?
384.
chamlis_ break text is still on screen, by the way
Okay, so that's, no, that's also not 1%.
Huh.
Where did I get this 1% number from?
I am misremembering.
Oh, thank you.
Let me turn that off.
Sir, sir, you have your butt on the mouse.
Thank you, sir.
Oh, yes, your life is so exhausting.
That's more like 15%.
That's a lot different than I thought.
Boy, where did I get this 1% number from?
I'm going to have to dig back through mod messages and stuff.
Usually my intuitions for these kinds of numbers are pretty good.
But part of the reason I state
graefchen A cat does indeed have a hard life. Eat, sleep repeat
graefchen limesNodders
chamlis_ has the percentage gone up recently, thinking about the vibecoding queries earlier
them before i query is it is so easy to see a number and then be like that's just the number i was thinking so you know you have to not that we are exactly doing science but you have to do science and and guess first and then check yeah yeah they made a tom cruise movie about that grave gen eat sleep repeat absolutely you know action-packed
the percentage of users that get any flags or the percentage of comments that get any flags.
chamlis_ oh sorry was the users query across all time?
Can I ask you to write the query?
Because I've got like 20-ish minutes left on the stream and I think I can get most of this comment code, but not if I stop and I write that query.
That query I just ran was the last two months.
02:41:07so of people who have left a comment in the last two months but i don't think offhand that it's gone up recently but it could what do we want we want to count we want to get The year from created at we want to get the month from created at. By one. To ask. And then let's get rid of. This. That's clearly not what I wanted, and I want to count after.
02:42:08Oh, I forgot the group by on it.
That's why.
Select your month counted by one comma two.
All right.
chamlis_ oh you beat me to the query
So I'm not going to pull this into, sir, I'm not going to pull this into the graph, but you can see that our number of unique commenters has increased over time.
...41And then if we also say, count distinct user ID, where, oh, but it's the ratio of comments over time that's more interesting. So if I just said where flags is greater than zero, we're gonna see an increase over time, but that we should expect that just because there's more users. The more interesting thing is, That ratio and I really don't want to stop and write that query out. But yeah, you can see very little activity on the site in the early year ish. Things come up, you can kind of. See some of the site trends some like mentally comparing this to the graphs on slash stats. And it's like you can kind of see the dip in traffic that we had in 22-ish.
02:43:46Yeah. If you want to write the one with the ratio, I'll run it.
02:44:09Nabile hey y'all, anyone unable to set filters anymore ? the POST gets 302'd and the response doesn't Set-Cookie (should i file an issue ?)
see once again though nabyle that is definitely a bug the post gets 302. why would the post get 302 that's odd yeah no you're that sounds pretty clear bug behavior please do file an issue
...47Nabile okay, thanks
So if I did not say onCreate, this would invalidate all of the comments that are already stored.
02:45:41I wouldn't do I guess I. yeah so there's. The current flag attribute on comments but that's only filled on read it's not going to be filled on a right, so I do have to just go hit the database. So if there's a vote where. The user. Is this user. and the vote is negative one and the comment id is parent comment what i say i'm gonna never remember this interface is it errors dot add yeah
02:47:15kind of tempted so we talked through the the title functions earlier on stream content but to add one here you're not gonna see this because I think the number of people even on a development site that will see the client side control change and then like work around it to try and submit a comment anyways I think that's very low but that is
Yeah, we're going to see that for people who have JS disabled, because we do have a few of those.
Although people with JS disabled, I guess they could leave a flag.
They'd have to do it manually.
twitchtd well, I have one more PR if you have time https://github.com/lobsters/lob… this hides bad faith notifications, if no time, then till next time
That's one of the few things that requires JS still.
02:48:14Oh no, I do want to put that in right now because it's confusing right now and it's kind of self-defeating right now. So let's let's take a quick look. Let me grab the link and I'll put that in the scratch because I saw that build is still running.
...54twitchtd I have no strong feeling for it, I just used it for lack of a better word
long as we're looking at it do you have a strong feeling on this use of the word faith i'm not hung up on it having religious connotations it's more it's not actually the notification is itself not in good faith it's more like it being likely to cause problems or something we prefer not to show
It doesn't even necessarily mean that the comment was sent in bad faith.
It's that I can't quite ascribe malice and so I'm a little, okay.
Then I'm gonna keep kicking around good faith and bad faith in my head and I will try to merge your other PR, the one about removing replying comments before I go do a rename so that you don't have to deal with a merge conflict.
I'll get my thesaurus off the shelf.
02:50:03I would have picked this knit earlier, but it's not user visible. Where's my space control?
...23Every time I flip that, I think of the song by Yeah Yeah Yeah called Why Control, because I've got, you know, white space control. should make a rock song about white space that would be a billboard top 10 here right who doesn't like a good song about white space yeah i mean there really isn't anything to say about this pr this is very clear what's changed and why And then you linked my comments, so I think we're good.
02:51:29chamlis_ `select year(created_at), month(created_at), (sum(sign(flags))/count(*))*100 from comments group by 1 asc, 2 asc;` might do the trick
graefchen As someone who studies archaeology, I must always say "context matters" limesD
chamlis_ hang on I forgot the whole distinct user thing
all right well i just merged thomas's let me get that i forgot the whole distinct user thing all right i'm gonna i'll deal with rebasing my current thing later but i wanted to get thomas's deployed so that can run in the background
02:52:08I guess really, do I want this to be named like validate comment hasn't flagged parent? Because it makes sense here, but just seeing the function, it sounds like it's going to be a Boolean, and instead it has this side effect. I mean, I'm not going to repeat all of my gripes about the active model API, but
...43Yeah, let's just leave it.
02:53:09Let's not leave it. I'll grab you, come down to the Vs. Why am I? Oh, because I clicked over the JavaScript. I don't use this little tag bar much. But in these long files, it's handy for finding my place.
...46This one actually hurts a little. Voting is such a optimized path. I kind of hate to put a query in the middle of it, but I have to.
02:54:11I guess that prompts the question of, do we want to do it on stories at the top level? I haven't queried for that, and I got enough functionality here with comments. So that can be a maybe thing for the future. I'll have to query.
...40This thing, I bet it does a save and it bypasses validation?
...50No, just call save bang, okay. Okay, let's just call this function validates.
02:55:14All right, so is there any way that this, I don't think there's any way the front end is gonna surface this, because if it fires off the flag, calls vote comment, and it updates, it does a optimistic update on the front end,
...46And then it does a fetch and it just throws away the response to the fetch. Which I guess is okay. Because, you know, the UI should be updated, you shouldn't be able to see it, but I guess I'll throw a to do in.
02:56:30should i you should never be able to i mean except in the case of if someone leaves their comment i deploy this patch and then they go to flag what they were replying to honestly i'm fine showing them the ui and then just letting it fall off into the ether that's such a narrow case
02:57:21twitchtd should we give the notifications some more time for the community to find bugs or should I work on removing replying comments for next time?
I said, Thomas, I think with the the fix around the bad faith notifications.
...38I think we're pretty good. Like I've been using it.
...50I think we're pretty good to cut over.
I'm not going to hit merge right now on stream because I want to think about that one.
There's that 30% stream text on my attention span.
twitchtd ok, maybe let's punt on it and I'll ask on monday
Where's my to-do list post-stream?
02:58:30twitchtd remove replying comments has conflicts
twitchtd and other things, ya
comment this needs to say oh does it okay because of the the bug fixes that we just merged or tweaks we just merged i guess is maybe the neutral way to put it
okay okay so we want to find where the user id is this user id and the comment id is this comment id no it's just id
No, it's parent comment ID.
There it is.
02:59:42So if it's a flag on a comment and the user has one where they replied to it,
03:00:06So then the flip side of this is if you flag, we turn off the reply. If you have replied, we need to know that.
...27That's a weird indent, Ben.
...52Where is that going to get log loaded.
that's.
So it needs to know the user.
So it's not really comment replied.
twitchtd alright, I'm going to logoff, have a good weekend and see you monday on stream again :)
This has reply from it's going to just smash the database.
That's going to be an n plus 1.
Dang it.
Thanks for dropping in, Thomas.
Nice to work through some stuff with you.
03:02:27see the rails makes it so easy to add the one plus n where do we load current vote
03:03:01It's just on the main story show. This is gonna be just gotcha.
...38So I want to preload this, but I've got to preload this basically everywhere a comment is rendered that shows the reply link, which is going to be most everywhere a comment is rendered. So that's the story view slash comments, notifications. This is a bunch of place. Time to make a bookmark.
03:04:33Because I've got to be at the end of the stream here.
All right.
So I'm going to call it a day here with that in progress.
And I'll get that on, rebased onto master.
And maybe I'll get that tomorrow.
All right, well, for folks who came by office hours, thanks for swinging by.
ChaelCodes Bye!!! Thanks for the stream!
Let's double check my personal calendar because I have some travel coming up.
In that big way, stuff kind of floats into my awareness.
Nabile thanks for streaming
Yes, so I will stream next Monday on schedule.
Nice to see you again, Rachel.
armadillo_rancher later @pushcx , thanks for lobste.rs!
So I will hack on this.
All right, cool.
chamlis_ thanks!
Yeah, so that's everything.
I will see you all on Monday.
Oh, hi and bye Armadillo Rancher.
All right, everybody, take care.