now we have nothing, which is like progress
Streamed
Chatting about good Rails intro books, an app for recognizing art scammers, quick queries to get at whether weβre seeing a lot of drive-by github promos, chat about moderation and training pattern recognition, and then a big dive into revamping ~/standing into a ~/context as side norms have improved.
New VIP: calebhearth
scratch
topics
x good Rails intro books
x ideas around designing an app for recognizing art scammers
x drive-by promotion of github repos
x reidentifying bad actors on Lobsters
comment stats to contextualize user behavior
x move new profile comment stats to standing
x new title + intro page
x subnav
more positive stats
hide big flag text unless heavily flagged
revamp heavily flagged copy
story merge categorization
good Rails intro books?
https://pragprog.com/titles/rails8/agile-web-development-with-rails-8/
https://www.packtpub.com/en-us/product/layered-design-for-ruby-on-rails-applications-9781801813785
https://www.packtpub.com/en-us/product/polished-ruby-programming-9781801072724
https://guides.rubyonrails.org/getting_started.html - newly updated!
vim fzf config https://gist.github.com/pushcx/b0d9e6ef77a92a5294258e97c4b7cb46
useful additions to ~/context:
comments posted
upvotes on your comments
upvotes on your invitees' comments
allow adjusting interval?
title
now we have nothing, which is like progress
post-stream
play with fake_data generator - is it generating comment flags?
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
01:31Just getting started.
Juggling a couple of things.
I didn't make the usual pre-stream scratch talk.
But the two big things we're to talk about were story merge categorization again.
And using comment stats to contextualize user behavior.
Two big things about.
site norms and practices.
and probably do them in the other order.
This is lobsters office hours so.
The site is.
pushcx https://lobste.rs/
lobsters.
and
I immediately see something that maybe should have been merged.
Is this a reply to something?
Besides the title?
No, it's just a follow-up.
But it's been a couple of weeks, so...
patotato03 What is lobster? Is it like hackernews
Okay.
Not starting off with a strong example of story merging.
That would have been a little bit funny.
02:50Hey, Potato.
Yes, it's very similar to Hacker News.
It forked off a Hacker News about 13 years ago, something like that, and is basically a forum and social news site that's pretty focused on software development with some side topics into networking, system administration, hardware design, reverse engineering, but not
quite so broad on topicality that like Hacker News, you know, politics and armchair anthropology and other kinds of things are on topic.
So if you look at the website, you will see that we're pretty well focused on making stuff with computers, if I had to put it in a couple of words.
And this is the office hours stream, so I run the site and I am happy to take any kind of questions about the site or.
pushcx https://github.com/lobsters/lob…
The code base, which is up here on github.
And then the other thing that comes up a bunch is not a bunch, but I try and remind about.
Is on the about page, I will run queries against the database if folks are really curious to.
understand more about the site, like what's the distribution of upvotes or how often does story merging happen.
And when folks don't show up with questions and stuff to talk about, I tend to work on the code base or the documentation.
m1guno Hi @pushcx . Thanks for your notes on bsky about lobste.rs/chat (I have sent a brief hello message on IRC.) and the link to the sources on GH.
And the last stream, which was last Monday the 9th, I did a bunch of stuff on story merging, which is where we
When multiple links are submitted on the same topic, we bring them together for a variety of reasons.
And... Ah, hey, Meguno.
Yeah, I saw you on Blue Sky and I just saw you over in the chat because I was just talking there two seconds ago too.
I hope someone responds to you promptly.
m1guno heh, no worries
I think you posted a really good message with...
some links to your existing profiles.
m1guno I wasn't sure my IRC was still working!
As I'm sure you can guess, we see occasional spammers and having not actually clicked on any of your links, you were doing all the right stuff to come in as not a spammer.
Yeah, IRC is a venerable technology, fairly classic.
So it sounded like you were new to Rails.
And one of the topics that's come up a couple of times on stream is I don't have a great first resource for Rails to give to experienced programmers.
So if you have seen a book or a website that you especially like that is geared towards, hey, you know how to program and you already make sites, I could really use a resource like that to put in my back pocket.
The closest thing I have now
m1guno yeah, i have that one
m1guno it's not fully updated for v8 yet
this was just a guess i haven't actually read it because i think it's yeah it's still in beta so i don't totally understand the state of this book but on stream somebody mentioned it just a couple of weeks ago and it's in an odd state oh no okay i'm reading their year wrong not fully updated for v8 yeah the updates to v8 are not
Well, let me fix my language.
I was going to say not big.
They are big, but they are big optional new features.
They are not big changes to existing functionality.
So if you went through whatever the Rails 7 version of this book is,
and you were working with a, there are really only a handful of things that are different.
Mostly it is a whole bunch of new features.
So I don't think you would be missing out by picking up a beta book and knowing, Sam Ruby, not personally, just having read some of his other stuff.
m1guno I have the "v8" version of that book already, and it's still a good resource
And then obviously having read a couple dozen books from Prague, Prague, you were probably in great shape with this book.
The,
Where's the other one?
pushcx https://guides.rubyonrails.org/…
Rails 8 release upgrade notes.
Not the honey badger, yeah.
So even if the book is not fully updated for 8, Rails has guides for, okay, so you are upgrading your Rails app from 7 to 8.
And these have been killer documentation for like 15 years.
where they're really clear about if anything major has changed and i think i did the rails 8 upgrade on stream a couple of months ago i'd have to dig back through the archive but looking at this like you know you can see that nothing got deprecated and changed in the core functionality i mean some stuff got removed but these are
really fiddly kind of things in that they're not changes to core behavior of, oh, now the way you access the database looks totally different.
m1guno the other good books I have come across: - Programming Ruby 3.3 (pickaxe) - Layered Design for Ruby on Rails Applications
They're more like, ah, we rearranged some internals for plumbing, and if you use this uncommon config setting, now you have to have an app on it.
Like, this is not big stuff.
It won't bite you in the ass.
So anyways, welcome to Rails.
Programming Ruby, the pickaxe book, layered design.
You know, I've heard of that one, and I think I even got a copy.
Yeah.
Yeah, with the locomotive on the cover.
Google, that's not actually a useful thing.
m1guno Packt is, to me, not a publisher with a high reputation, but that book is IMHO quite good
So PACT is one of those programs
m1guno ^^
book publishers that, yeah, I was exactly, Maguno, you and I are thinking exactly along the same lines, where they basically don't edit their books.
And I've spoken with authors who have published with PACT.
And the two of them I spoke with were both first-time authors, and so they had no idea what to expect, and they didn't know that they should have had
ghost_user_1984 Packt is mainly a PoD service + light advertisement.
I think, I don't remember if they had technical editors, but they should have had book editors, and they very clearly didn't.
They had somebody who called themselves that, but yeah.
ghost_user_1984 Its slightly above gumtree, but its mainly a easy way to get into LCMSes
And so with PACT, yeah, ghost user, I agree with
assessment that i would not really think of them much different than a print-on-demand service i was the the opinion i was getting to was if the author is really solid and well organized the book can be great but it's basically unedited with all of the risks that entails and i think saying that it's basically print-on-demand is a shorter way of saying that
10:29ghost_user_1984 The big thing is you can subscribe in a per employee per month bundle.
lcms library content management systems yeah i mean they handle the get yourself an isbn and stuff but and i i don't remember if i'm crossing them with another publisher but i think i've seen a packed book on a bookshelf but it's been a minute
So in any case, Maguno, you'll have to tell us how you think this layered design book is.
m1guno A few years back I was frequently spammed by Packt to write a book on Apache Kafka, and the interactions were clearly mass-solicited reach out to anyone who could *possibly* write them such a book. Other publishers, like Manning, give you a more professional impression. Similar to a good recruiter who has done background research on you and who specifically wants to hire you, and not just fill a seat.
I've seen some posts from the author and maybe a conference talk by, what is this, Vladimir Dementyev?
Probably getting that pronunciation wrong.
11:17Yeah, Maguno.
dr3ig poloshed ruby from packt by jeremy evans is pretty good
dr3ig *polished ruby
A lot of book publishers kind of make lists of technology, and I think you're really accurately describing the tiers.
ghost_user_1984 Jeremy Evans is just good.
Manning, I actually think really highly of as a publisher.
I've talked to someone who published with them, and they sounded like they really did a great job of editing and managing the book.
Polished Ruby by Jeremy Evans.
Let's look that one up.
Why do I, ah, this is why I know them.
so I saw, I watched the, rails world talks just a month or two ago.
Yeah.
Rails world 2023.
Okay.
12:13pushcx https://www.packtpub.com/en-us/…
pushcx https://www.packtpub.com/en-us/…
let's all right so here let's grab these links to share so here's that first one and here that second one so yeah similarly i know jeremy evans name i don't know that i've read this book to have an opinion on it
m1guno The Layered Design book seems good to me. I have been binge learning rails the past couple of weeks, and the "beyond the basics" parts which the Layered Design book predominantly covers match, on the surface, pretty much what I have been reading elsewhere
m1guno thank you!
but if drake likes it it's probably pretty darn good he's been real thoughtful here on the stream so anyway mcgunough i hope that works out for you i've had people come on just trying to get the scratch notes to have these books
What was the day I already lost the link for the other one agile web development with rails.
it's funny some of these.
I get reminded of movie series where there's like fast and the furious eight.
And there's like the rails eight book, you know rails and the furious eight that's my job.
m1guno I'm sure you're aware that the Rails docs team has also updated much of the intro guides?
m1guno https://guides.rubyonrails.org/… For example, it's not longer the blog example but a store thing.
is to be furious about rails i guess that movie series comes to mind because this winter i'm hosting for friends we're gonna have friends over to watch movies in the mornings on probably yeah i'm aware the intro guides have been updated i don't want to reach for the intro guides as your first intro to rails because they're really
They're oriented around documenting Rails feature by feature, which I don't, I think it is excellent and a kind of documentation that absolutely has to exist.
And what they produced is real solid.
But, oh, there's a store thing.
I don't know that I've seen a new getting started guide because it's been 20 years since I got started with Rails.
dr3ig polished ruby is more advanced, not really for a beginner. It was an example of a good book from packt (it has more to do with Jeremy Evans than packt though)
But this is of kind of talking through the setup and working through an example is exactly the thing that I think needs its own special kind of treatment.
Oh, thank you, Drake, for explaining why you like to polished Ruby.
Let's pull this in.
15:02Yeah, OK, so they're hitting.
This is pretty solid.
Okay.
dr3ig for ruby beginners The Well-Grounded Rubyist by David Black is pretty good
This one actually, yeah, they're clearly trying to think about these things with the questions that new users, new developers will have in mind.
That's nice.
This is the kind of thing that I would never, I don't know the last time I ever called column names, but I can see why,
coming from other ORMs, someone would have that question and want to see it.
So that's really promising.
Talking about this kind of stuff.
Yeah, actually, this looks like a great update.
I'm not going to stop and read the whole thing on stream, but I'll have to come back for it.
So actually, let me grab that tab over to my other browser rather than just toss it away.
The Well-Grounded Rubius by David Black.
Yeah, that one, it's getting a little long in the tooth.
16:09nogweii @dr3ig would you consider _why's guide still useful?
So I love this book, and it has been my default recommendation.
Well, I'm not Drake, but since I have a microphone, I get to apply too.
I would not consider Wiseguide still useful.
It is far enough out of date, and why...
wrote in a really pearl inspired style that is no longer popular in ruby and i think the world of his art and i do like the guide as a cultural artifact to understanding ruby but if you are you asked specifically useful and i wouldn't say it is especially useful for learning ruby
adnjoo thoughts on Practical Object-Oriented Design in Ruby?
m1guno The Getting Started guide is great as an appetizer to get you excited coming into rails. As an experienced dev but new to rails, my next step was actually diving into rails/ruby magic as metaprogramming etc. is pushing me out of my familiar motions and comfort zone. I am currently taking notes on my own "guide to rails magic", because such a guide is one that is still missing in the Rails docs. For someone like me, that would be a welcome resource.
it's just a really nice time capsule for what was ruby like in the mid 2000s so yeah so i've recommended well-grounded rubyist a few times and it's five years old now actually five and a half i would love to see a fourth edition because there is some stuff in rails
Yeah, so this says Ruby 2.5.
dr3ig @Nogweii i've heard of it, and I know it's legendary but i haven't read it unfortunately. when I started with ruby it was already old
There's stuff in 3.2, 3.3, 3.4 that are worth adding on.
17:44Oh, Magunu, thank you for sharing your opinion.
That's actually super useful to hear.
pushcx https://www.poodr.com/
an actual experience report from an actual beginner thank you and adn joe adn jew i didn't miss your question but a couple of things to juggle so practical that's sandy metz right yeah so let's share that link so adn jew is asking about this book by
ghost_user_1984 Having read that and the Liskov book, it's basically the Liskov book.
sandy metz and i was actually just thinking about her the other day as i was catching up on some ruby videos because she hasn't given to my knowledge she hasn't given a talk at a ruby conference in a couple of years and she used to be a fixture so i don't know what she's up to this day there is
Nothing in this book that has slipped out of date.
This is very high-level, object-oriented design.
I like this a lot.
Ghost User, which is the Liskov book?
I don't think I know that one.
And I gave a talk on Liskov.
19:09ghost_user_1984 let me find it, I have it in paper somewhere around me.
I guess A.D. Anju...
nogweii @dr3ig ah, makes sense. As @pushcx already explained it's probably not meaningful to go back and study it, but it did a great job at making some culture in Ruby
I think it is a great book, and I disagree with a bunch of it, but in a really productive way.
I think it is a great book to read and work through the examples and see very different ways of structuring your code.
ghost_user_1984 "Abstraction & Specification in Program Development"
And I've gotten quite a bit out of
ghost_user_1984 0070379963
the book that has influenced my style especially the way she likes to in Ruby dependency injection is really cheap compared to other languages and so it is a nice way to is it even a bullet point here sort of build objects via composition but the idea
of using Ruby's really cheap dependency injection to inject object behaviors, which is kind of the strategy pattern.
There's a more specific one that I'm not remembering the name of off the top of my head.
m1guno @adnjoo I bought the book not because of OOP in general, but about Ruby's approach to OOP. I liked the book thus far (like 30% in?). She sure likes bicycles!
That was actually really useful for changing the way I thought about organizing objects.
I'm not sure.
I don't think I have an example of it off the top of my head in the lobsters code base, so this is not a. I don't know I get I got a bunch of stuff out of this book, and I think it is excellent I tend towards a more functional style that is a little more.
A lot more skeptical of mutation a lot more skeptical of.
Very small objects.
adnjoo cool thanks for sharing!
think actually maybe that's one way to put it i think if you took this book and you made basically all of the objects immutable you would end up in a really great place so hunter i don't i don't know this book abstract and specification programming development
21:30m1guno She has a brief section on duck typing, and I must say that, for me, it's not that convincing. I get that one has to accept duck typing when working in Ruby, but in general I do prefer working with a proper type system.
ghost_user_1984 She wrote like four?
I don't think I knew that she wrote a book.
ghost_user_1984 One of them is in java.
Huh.
Methods of decomposition.
What's the year on this?
ghost_user_1984 The problem is that CLU is acutally dead.
86.
ghost_user_1984 Not like kinda dead.
Okay, so I will have to read this.
Thank you, Hunter.
m1guno Oh, I didn't know she wrote more than the Ruby one
She wrote like four?
Boy, I'm out of it.
Yeah, CLU is very dead.
Yeah, CLU is dead in a way languages rarely die.
ghost_user_1984 I mean I still see SNOBOL running.
But Maguno, we're saying she, but we've switched from Sandy Metz over to Barbara Liskov.
m1guno Aaaah
Unless you're saying that Liskov wrote a Ruby book, which would shock me.
I would feel really out of it for missing that.
22:32m1guno I was still talking about Sandy
yeah yeah we're changing gears there's a whole hassle and it really it literally depends on the weather but our conversations get a little confused and overlapping in the way of a busy IRC channel because there's a delay between me talking and y'all getting it and so the various users are anywhere from
for seconds to 90 seconds behind.
And I say it comes and goes with the weather because when it rains, my connection goes to shit.
I'm in one of those places where we don't have any real options for broadband.
ghost_user_1984 WIth enough dry loops, I'm sure we could get something going.
So anyways, if you look at the seconds counting along here, you can figure out how far behind you are, but hopefully not too bad.
So I'm really curious about this.
ghost_user_1984 Ethernet technically can run over phone lines if you have three of them!
I think 80s books that talk about how to organize code are especially interesting because they have such limited computation available, like their computers are literally a million times less powerful than us.
And their idea of decomposing large program projects into independent modules is often stuff like
What if you had two source files instead of one?
24:10m1guno What is a good resource to learn about what a Rails/Ruby dev does when having to deal with "magic". Such as situations where you wonder "where does this symbol/method/... come from"? "How can I figure this out without having to run the code live in a debugger?"
Anyways, I'm old, so I like reading old stuff.
...21Oh, so great question.
ghost_user_1984 I feel like if you wanted to do a really neat podcast, you could bookclub a bunch of old programming books.
That is part of the value of watching stream, is you can watch me break Rails codes all day.
m1guno When I run into problems with, say, Java, Go, I know what to do. But Ruby/Rails is a lot of fzf/grep/pry
but you can run in a debugger ruby ships with ybug and what was that talk oh yeah so
There is a Rails guide that gives an intro to this stuff, but then what was the other talk I just watched?
It was Rails clone.
25:16I don't remember this one. Where are we here? Something in the last month. It was one of the Ruby conferences I just went to. Was it RubyConf?
...36Shoot, there was just, just this year, somebody gave a talk that was a great introduction to debugging Ruby apps. And I'm blanking on which it was.
26:13m1guno I asked this question on the Rails forum a few days back, with some good responses. But happy to learn more if any of you has additional pointers. https://discuss.rubyonrails.org…
yeah i'm not finding the talk here wait speaker oh no it's ruby rogues no thanks yeah this is oh i remember this talk this one was solid so aside from
...44Is this the one I'm thinking of? Yes. Did he give a talk somewhere else besides Roku where I would have seen him?
27:16Somebody else did too.
Alright, so there's a couple of options.
We've jumped past a couple of things.
So Ruby is a lot of FCF grep pry and you can debug.
The other thing that may be useful to you is if you are in your Rails app,
dr3ig https://www.rubyvideo.dev/talks… maybe you can find it here @pushcx ?
m1guno I am using neovim with ruby-lsp and vim-rails, alongside IntelliJ with Ruby plugin (think: like RubyMine)
so if i'm curious about one of these gems you can say gem or bundle open html entities oh it's let me just grab a this is a stream hassle let me just grab a new terminal there's a boring stream thing happening so if i said bundle open html entities it'll open up my editor in the context of this gem
m1guno btw
adnjoo @m1guno ask chatgpt haha
So it's immediately jumping into the source of that.
And you can throw in a, like a by bug or a print here because Ruby source files are just text and there isn't a compilation step.
So I'm going to write and quit that.
And so it's like, Hey, wait a minute.
I just put a bomb here and then it's what bundle restore HTML entities.
m1guno @adnjoo you are totally right though, chatgpt and claude turned out to be pretty useful (and accurate) for most of my rails/ruby questions thus far
Shoot, what is the command?
Bundle reinstall?
Refresh?
It's one of these.
29:10dr3ig gem pristine
m1guno my guess is that it's because of the strong emphasis on (stable over time) conventions in Rails, LLM training seems to work fine here
somebody did it in front of me and it didn't stick because i only saw it once so i usually just do like gem on install and then i re-bundle gem pristine thank you dreg i knew i was somewhere in there so if i said gem pristine yeah so that's my one big pro tip aside from jumping into by bug is
m1guno even though Ruby is very dynamic
you can just edit gem source because it's just files on disk and then you can restore it real easy and so also drake who is really the oh that's the one i was going to review later has thrown in a link here of ruby talks with
ask which one I was thinking of.
This one.
I'm thinking of this one, Pry Until You Die.
So he gave an introduction into Pry, which is kind of a way to drop into a Ruby console in the middle of an app that's not
by bug.
m1guno Pry Until You Die talk: https://www.youtube.com/watch?v…
It's not an interactive debugger.
It's like a live console in the same way that you can run Rails console to run arbitrary Ruby.
m1guno tnx for that pointer
And he just did a really nice job of explaining all of the functionality that was available there.
So yeah, Maguno, that's the exact talk I was thinking of.
30:55So Thank you. What is that, four times, Drake? You've been really helpful here just getting started. Thank you. All right.
31:22so we on the last let's just bring in some of the notes from the scratch file from last stream had talked oh actually yeah i had thought about so the two big topics i have were those comment stats that i've added to user profiles over the course of the last couple of streams prior to the last one oh yeah speaking of especially now that folks are arrived sorry i missed last thursday a personal thing came up that was really urgent and i added those comment stats for dealing with self promo the other thing is we've been working on reviewing all of the story mergers that have happened with the eye towards documenting that And unless anybody has a real strong opinion, I was going to pick up with comment stats because I think that's smaller in that I have a pretty good idea of stuff I wanted to do on there. And if anybody has any questions about the site of the codebase, feel free to pipe up any time. So it's kind of contextual.
32:50There we go. It's even nice when I spell things right. At least I'm already in Vim.
33:06So where were those stats?
...18Ah, here we go.
So yeah, after the stream, I replaced that if true, which I managed to deploy a second time or push a second time and then deploy for the first time.
I just replaced it with our rails and development check.
So let's get the server running in the background.
And then over here, I have been looking at my own profile because it's got some numbers on it and it's not too embarrassing.
Not really embarrassing as a concern.
It's more a, I try not to put somebody on a hot seat.
And so here's the comment stats at the bottom with a little graphic box to kind of offset it as, hey, only you can see this section.
m1guno On a totally different subject: trust in online communities. Lobsters is invite only, and has an "ancestry tree" of who-invited-whom. This is similar to an online community I have been a member of since 30 years or so. That community and its moderators have done a great job at maintaining a strong, welcoming culture. What has been your experience at Lobsters?
And it's just kind of shoved here onto the profile because it's a thing about you and I know moderators are curious about it it's especially a moderate tool.
On a totally different subject trust in online communities.
hmm.
m1guno I am considering a simple web app (one reason of my recent interest in rails) to use a similar approach to help some of my artist friends to track scammers that attempt to scam them on Instagram.
My experience at lobsters has been that being invite only is the reason we have an independent culture so.
potato toe asked about potato to asked about if we're like hacker news if we didn't have the invite thing.
m1guno so my friends could submit and up-vote known scammers in case instagram fails to ban them
The first time Hacker News or Reddit linked to us, our culture would have been replaced by theirs because we would have been overwhelmed because on any access, those sites are a hundred or a thousand times larger than lobsters.
And having 200 people arrive on the same day and start talking means that's your default now.
Having invites gives us a chance to acculturate them as they arrive.
But then also it is invaluable for spam prevention.
We have already had problems with literal spam bots that drop by and try and spam links or spam comments.
Those problems would be overwhelming, never-ending if we didn't have the invite system.
We get away with...
not having every last action rate limited because we have the invite system and so it protects against an enormous amount of bad acting but then also it raises the value of an account so if you are if a random user is inclined to maybe be a little trolly or a little argumentative or a little bit mean
They have to take into account that if they get the boot, they are not going to be signing up again 10 seconds later from a new IP.
It's a hoop to jump through.
It's a pain.
And I think that does kind of nudge people to be on better behavior.
Not that I haven't had to toss trolls, but I think it helps a lot.
And I think if... Ah.
m1guno What weak spots still remain with that approach? In my case, the community will be much smaller, so likely the personal relationships will be enough to keep it afloat
m1guno yeah, exactly
So I think the the scammers on instagram are like people who try to Commission work and then get it without paying for it is my understanding i've never been on instagram but i've seen some talk about it.
Okay.
What weak spots remain with that approach what remains with that approach is.
There are more scammers and they are much better at creating accounts than maybe you think.
So there's two classes of scammers.
There's... Well...
So there's the really malicious ones who know that they are scammers and want to rip off artists.
And they'll be...
kind of professional about it, for lack of a better word, in that they will make an account.
They will fill it with kind of plausible stuff.
They will go after a handful of artists and then they will throw that account away.
And your reputation tracking web app won't be able to deal with them effectively because they'll really only pull a couple of scams and they'll do it all at once.
And then they'll throw away that account and it'll look fine before and after then.
The second kind of scammer is just sort of a dysfunctional person who is going to tell themselves a story about why they deserve the art for free or to imagine that the artist has somehow slighted them or done something wrong.
And I think that's where your app will be more useful because those people will have consistent identities because they're telling themselves that they're not doing anything wrong.
m1guno yeah, another tell is same postal address for shipping
So I guess the big difference between the two is whether they know they're scammers or not.
And I say that not knowing really anything about Instagram scams, except what I've happened to see go by on like Blue Sky and Mastodon.
It's just that pattern of bad behavior comes in
the form of knowing bad actors and unknowing bad actors who don't realize they're bad.
You know, they're like from the sixth sense where they don't know they're bad.
m1guno there are some other signals that we've learned since
m1guno hehe, yeah
That's just a universal to all kinds of moderation issues.
39:38m1guno (but I don't want to sidetrack your stream)
nogweii I have a moderation thought: Can we say linking to a Github repo, but not any particular file, is not helpful? Feels like a bunch of people want to promote their code that way.
m1guno feel free to change the subject
So I think it's really, no, this is,
I mean, this is Lobster's office hours.
This is not sidetracking the stream.
This is talking about issues around moderation and understanding bad actors.
And Nagwe, I see your thought and come back to that in a second.
m1guno hehe, yeah. We have a google sheet for now ;-)
The other thing that might be useful if you're going to make an app for your Instagram artist friends is as a programmer, it is always tempting to try to solve things with code and to say, I'm going to make a database schema that contains an enum with all the kinds of bad behavior.
And we are going to categorize all of that.
And then we will have a code path for all of that.
nogweii (e.g. github.com/foo/bar vs /foo/bar/blob/README.md)
And that's really tempting.
Yeah, you're getting at it with a Google sheet.
The biggest thing is because the bad scammers are endlessly inventive.
The biggest thing is having a text box where people can type notes.
You have to think about things as helping the artists communicate with each other about what they're seeing more than you think about it as categorizing and imposing a schema and a set of functions on it.
And so that's why a Google Sheet or a Google Doc is enormously effective and enormously scaling because people can kind of skim it and get a feel for
m1guno they typically DM on Instagram or in their own discord servers
These patterns of things that would be really hard to encode so my general that's and i'm talking here very generally about moderation issues, because a lot of stuff that happens on the site.
Our guidelines are pretty light.
41:40m1guno they=the artists in my example
And not around being.
canonical taxonomy of every bad behavior that people can get up to it's kind of about the vibe and being a moderator is a lot about pattern recognition and when i realize someone is like boy in all of your comments you're finding a way to put down the person you are disagreeing with
m1guno how much of your (or other moderators) time is spent on moderation = keeping the community afloat
could never write a guideline that's like don't be a bit of a dick all the time that's really grading but i can see it as a person so i follow your example mcgunough so i would say just
The most valuable thing you could do is make it really easy for the artists to get material about the abuse they've seen into your system.
Because if you put it together and let people skim it, things will pop out.
Humans are incredible pattern matchers.
And so they will realize, oh, there's this scammer who comes by
on the 15th of every month when they get paid and they act like they're going to buy something.
m1guno so you mean documenting the typical patterns by which an artist could recognize the next scammer
Or, oh, this one guy, there's always somebody from Wales who really likes having, I don't know, tarot cards as their profile pics, but they keep making new accounts because they get recognized as a bad actor and demanding a thousand changes.
And as soon as you realize that pattern, you can spot the next one.
So yeah, when I say documenting the patterns, I mean, make it really easy for artists to say, hey, here's this DM conversation I had with this guy.
Let me just put the whole thing in in a way that's easier than having to screenshot it one page at a time and upload each of those photos.
I don't know what the Instagram API is like, but if you can make it easy for someone to throw that whole thing, that whole conversation into the app, then people can skim it.
And then from there, not only will the people who look at those recognize the patterns, you can start
m1guno sounds like a repo of scam examples
yeah, documenting it, the like, the most valuable version of this might be 1000 word blog posts that talks about the common characteristics of Instagram scammers.
While you say repo of scam examples, I don't know that I would publish it, especially if it's private correspondence.
But I would try and pull together the examples because if you have
m1guno oh, yeahβnot public
a zoo of them, you can figure out what the characteristics are and what the patterns are.
44:51m1guno we're based in Europe, so GDPR
Anyway, I didn't realize it was common enough to... You're based in Europe, GDPR.
Yeah, I don't know that one.
There was... Yeah, I'm not going to get into that right now.
m1guno this is good feedback, thanks
Good luck with that.
I'm sorry to hear that scams are that prevalent.
45:20So jumping over to Nogway's topic, can you say that linking to a GitHub repo but not any particular file is not helpful?
...37Honestly, so the thing I've thought about about specific links into GitHub is mostly I am concerned, almost, not quite, but almost want to blanket block links into GitHub issues and GitHub discussions.
gj1118 I am building an app and would like to (if I may, please) understand how you are identifying previously identified bad players .. Thanks for all the help
Because my gut feeling is that like,
nine times out of 10, that I'm mad about a bug and want to regrade the lobsters community into the project I'm annoyed at.
And that is definitely not acceptable.
46:35espartapalma Hi, hello again
Oh, hey, SParkformer.
nogweii yeah that's already handled with the current moderation approach
So GJ, to identify previously identified bad players, there's two things.
There's number one.
Oh, actually, wait, let me finish with, let me finish with Nagwe's thought.
So one of my concerns with linking into GitHub has been issues and discussions are very often
Daniel Katz- Brigading attempts almost to the point where I want to block those URLs off of github and just or give people some kind of click through that says.
Daniel Katz- hey are you really sure you're not about to break the rule on brigading I understand you're mad the browser change the feature I probably also am very mad that the browser change the feature.
nogweii I saw a slight pattern of "drive by promoters" that link their repo
Daniel Katz- But we're not going to do that.
Daniel Katz- and Daniel Katz- The database.
Yeah, the drive-by promoters that link their repo.
gj1118 sorry I was talking from lobster perscpective
We were getting at that on stream here with the new thing for recognizing different GitHub folks as different origins, but the false positive rate is high enough.
I don't want to block that.
I don't want to call people out this second.
48:48All right, not that.
That's not the useful time.
Is that milliseconds or something?
think it must be if we're getting numbers that big.
No, okay, so these are, these are all pretty chill.
So the last, so if anybody's not familiar with the stream, these are the last five stories submitted to GitHub, or to lobsters that start with the GitHub URL.
And
patotato03 How many users does lobster have?
I guess what we're getting at is we want to do where, so Nogway, it sounds like
50:02potato toe, it's around 110,000 accounts. And on any given day, call it 2500 people are active. And when I say active, I mean, submit a story, post a comment or vote.
...29pushcx https://lobste.rs/stats
There's some high-level stats on the slash stats page that might be useful to you.
And then readers on a daily basis, like on a US workday, my ballpark number is around a quarter million.
So let's grab this.
...56And then I have to do the math again because of the knowing order that SQL statements get evaluated in.
51:11Can I just say that?
No, I can't say that.
m1guno quick technical question: i would have expected to see a rails console and AR usage to find these DB records. any specific reason why you use the mariadb shell instead? just personal preference?
That would be too useful.
So let's say, what is this?
60 seconds times 60 minutes times 24 hours times 30 days.
...34It's personal preference. I can think in SQL faster than I can think in Active Record syntax. I would end up... Oh, it's not aware. I need an and. It forever kills me how non-composable SQL is. Okay, so here's the last five GitHub stories submitted by somebody who's under a month old. And yeah, I kind of see what you mean. Like, this is maybe getting at that drive-by thing, Nagwe? Is this roughly what you were thinking of? Let's look at the last 20, and let's grab the... How frequently are they actually happening?
52:39we're not actually getting a ton of them so this is limited to what i lost it to read like 20 and we've seen a couple of them in september i mean even this one is iffy 990 000 seconds is what nine days ten days a little more so
53:09So Nagoya, I think this is not too bad as a drive by promoter kind of idea where people sign up post.
I mean, it's kind of obviously happening when someone who is 192 seconds old is submitting a link to their thing.
181 seconds.
nogweii perhaps I'm over reacting since I follow /new closely
That's literally about as fast as you can get signed in and get oriented to find the link to submit a story.
So maybe there is a... Yeah.
I don't think you're overreacting.
These feel like kind of an obvious bad behavior when someone is submitting a link within...
Literally five minutes of signing up or what is that eight minutes nine minutes.
Maybe we have the concept of someone being a new user, maybe we want to have a concept of them being a really, really new user where, if you are less than 15 minutes old you get a come on man.
But I think.
I was talking about the comment stats for self-promo.
I think improving that contextualization of user behavior can lead us towards recognizing when people are doing self-promo things.
Oh, you know what might be interesting to add here is a column for the user is author.
So this is the checkbox where, yeah,
the checkbox where somebody says, I wrote this thing.
55:05nogweii LUL that'd be something amusing.
Because if we nudge in the direction of rather than having the 70 day new user thing, it is more of a, if we look back at your activity over the last six months, do you have a bunch of positive contributions to the site that are not self promo?
which is what this is getting at.
And if we make the restrictions around self-promo a little bit more based on what someone's recent activity is, that also helps a lot with the pattern where someone creates an account and then comes back two or three years later, now that they've joined a cool new startup, and then they want to post a link to their cool new startup.
And that pattern is
That's also a couple of times a year kind of thing.
And this one is, let's say a little bit more than a couple of times a year, but yeah.
Weird that it's especially popular in September.
You know, there's three Septembers here.
There's five here.
I wonder if it's students.
Every time I see something that peaks in August or September, I think, ah, students.
56:38So, GJ1118, you asked about re-identifying bad actors on lobsters.
57:00You know, the other thing on drive-by promotion of GitHub repos, I wonder,
nogweii well, that's an interesting exploration. thanks for pulling data!!
So there's the existing restriction.
This is on the story model where if someone is new and they try to submit a link from a website we've never seen before, a domain name we haven't seen before, they get this error that says, hey, don't do this.
We're trying to discourage self-promo.
m1guno any metrics on %percentage of such promos? is it a big factor for lobsters?
And GJ, this kind of gets to your answer that's, or your question too, is there's a mod note table in the database where moderators can put notes on accounts.
And some of that is I can put a note, just literally it's a text area that I can type in and say, Hey, I got this weird email from this person, or they grabbed me on IRC and
know like half the time it's really positive like oh this person told me about a bad thing that was happening and then half the time it's i saw this weird kind of sketchy behavior and i don't know what to think about it mcgunough you have to be more specific on percentage of such promos like are you asking about percentage of stories percentage of users
And if you look at our DB schema RB, you can see what our database structure is if you want to write the query or just kind of get an idea of what you could sketch out and ask out of it.
So I wonder what percent of people saw this unseen domain message.
So if I said, oh man, read line.
59:04I wanna know if they have a message in the mod log.
m1guno the actual question is: how much does it feel like a bother?
And I guess I'm gonna just say mod notes dot created at as.
...24How much does it feel like a bother? It has been an ongoing bother and it is a thing I think about most days when reviewing slash newest.
...44Self promo has been a major issue for us, whether that's very directly commercial like, hey, check out my paid developer tool or plug in or SaaS.
That's about
m1guno like, is that one of the top 3 negative issues on your todo list
A third of it and then two thirds of it are people who are so excited about their project that they really overstep community norms to promote their project or their blog.
And when I say overstep, I mean rather than participating in the community, they are just trying to extract attention from the community and drive traffic to their thing.
much does it feel like a bother is it one of the top three negative issues on my to-do list so now that i finished the mastodon migration because that instance was shutting down yeah i would say self-promo is probably the top issue of mentally i have stuff like simmering on the stove
where it's just kind of boiling away in the background.
And self-promo is the one that's coming up to the front burner, which is why it was scheduled for this.
And if you looked back in the stream archive, it's come up a whole heck of a lot in the last couple of months.
And we've been getting at what does it mean and how do we explain it to people?
Because especially when two thirds of it is people who aren't doing it for a very directly commercial purpose, they're just really excited about their thing.
ghost_user_1984 I really should finish my blog post on that.
People kind of read the guidelines with some motivated reasoning where they feel that their behavior is expected or exceptionally permitted when it's really not.
m1guno for example, by chance I recently came across a conversation where people on lobsters discussed the banning of the Brave browser/scraper bot. I don't want to open a can of worms here, just using this as example of "negative issues" one has to deal with when running/hosting a community online
got a blog post so for context folks ghost user 1984 here is 355 e3b a moderator on the site so i'm especially curious about what your blog post would be oh yeah the brave thing so the last
two or three streams actually i've had a fair amount of conversation on brave so if you want to see those streams in the archive and it has a transcript so you can just control f for brave but that's one of those things where every couple of years it pops up and it's a hot spot rather than an ongoing concern
ghost_user_1984 The short version is I found another analog for the problem we are having, and when you explore the problem using that analog, you come to a similar odd conclusion that we've discussed in the past.
m1guno It's super interesting to listen in on how you have been managing your community, hence some of my questions
Like, since I last left a comment on the Brave thread a couple of days ago, maybe Wednesday?
Monday?
Somewhere back there.
I haven't thought about that for days, and it's nice to not care about them.
01:03:12What's the name of that field? Well, I can just go look at the mod note model. It's note.
...32I said left outer join. Why did I get only the one that's matching? Well, I guess that answers my question in a different way, assuming I didn't botch this like, but what I was trying to get was one more column here on whether they have a mod note about trying to post an unseen domain. So Nagwe, this is kind of getting at your question some more, because a thing that happened a lot more frequently was people would come by and they would try and post a link to, say, their proprietary Postgres extension, and they would link to the sales site, and then they would hit that like, hey, you can't submit links to unseen domains warning, and then they would submit the link to their GitHub repo. And I was curious to see if that was still happening. And it sure looks like it's basically not.
01:04:35Frankly, that's so low that I wonder if I goofed up the query.
...48This might be a good time to mention that If I write a bug on stream, like I write a broken query like this, and you spot the bug, you get to be a channel VIP.
01:05:08Yeah, I don't trust this query.
m1guno lol
This is so low.
Because I feel like I've seen it.
m1guno talk about engagement
in the last six months, and I don't remember exactly which story.
So, anyways, yeah, Maguno, I appreciate that you're enjoying how I think about managing the community.
This is what Lobster's office hours are for, is it forces me to explain stuff or brain dump on stuff, and the questions that folks have help inform
Daniel Katz- The site itself of how do we make sure that the site understands itself and has clear guidelines and has good practices.
Daniel Katz- And also, if you think I goofed you can come on and say Peter you goofed.
Daniel Katz- I get that email once a month or so and sometimes it's.
about once a month, somebody from like a regular user will IM me or email me and say, hey, I think you got this call wrong.
And I'm not, I'm specifically excluding people where
They are pushing back against a moderation decision that personally affected them because like half the time when someone says, if you like language X, you're a dumb jerk.
I'm going to delete that comment.
And then like half the time I get a message from that person that's like, no, I'm allowed to call them a dumb jerk because they're dumb if they like language X.
So I'm crossing that one out.
I don't put a ton of stock in that.
So anyways, Hunter, I would really like to hear what your alternate analog is.
You don't have to post it here.
I guess I'm trying to say, please do write that blog post.
I look forward to it.
01:07:11All right.
jumping back the next conversation topic is coming back to jg's gj shoot where'd it go gj's question about re-identifying bad actors so that mod note table that you saw is part of it because sometimes
I see some behavior or some weird turn of phrase and I'm like, Hey, this one, Alice reminds me of Bob and I banned Bob six months ago.
And if I come back to Alice again a month later and I'm like, boy, this reminds me of Bob.
Oh, they reminded me of Bob last month.
That's one of those ways.
When the other thing is.
It kind of gets to Muguno's problem of how do you recognize scammers on Instagram?
And what I was trying to say with part of it, actually, let me link to someone who said it better.
How do I spell it?
I think that's it.
pushcx https://bsky.app/profile/rahael…
I guess that's not it.
Oh, no, here it is.
So this woman, Rahaley,
She is a co-founder of Dreamwidth.
And if you go look at...
So this is one for the old.
But if you look at this page, you will immediately go, oh, that's LiveJournal.
So she was involved in LiveJournal back in the early 2000s.
And for the youths who themselves may have been born in the early 2000s... God, that's so weird.
..
LiveJournal was one of the first websites, one of the first social sites that really scaled.
And when I say scaled, I mean got up to millions of active users.
And they had a variety of technical challenges that they dealt with, like Memcached, which is a, I would call it a precursor to Redis, which I guess now is a precursor to Valky.
And a whole lot of our understanding of how to horizontally scale services came from, what's his name, Brad, somebody from LiveJournal?
I'm blanking on his last name.
Was he Fitzpatrick?
Or is that?
Yes, Brad Fitzpatrick did a lot of that.
And it's not just that he did a lot of interesting work, it's that he
open sourced all of it and wrote lots about it and gave talks or if not talks wrote blog posts about it so let that be a lesson to you of if you are getting crushed by scale or other problems and you just keep writing about them you will get recognized as a expert on it so rahaley was involved in live journal back in the day and now she runs dream width which is very similar to live journal
And she's written a whole bunch about recognizing patterns of bad accounts.
So her site has open signups.
So they have problems with like backlink builders who will try and sign up for 20 accounts in a row and have all of those accounts post a link to their prostitutes in New Delhi, just to use one that I've had to deal with at a previous site.
And it is really nice to spot those kinds of spammers and other bad actors the moment they sign up for an account.
And she's written a bunch about recognizing those kinds of bad actors.
And I am stealing her terminology here or her explanation here when I say a big chunk of it is just look at it and look at it and look at it.
and the human brain is an incredible pattern matching machine and you will recognize patterns that you cannot even consciously explain and they will pop out at you and you will learn to trust your instincts where you look at an account
I think she even has examples of looking at bear accounts that have a username and nothing else, or a username and an email and an IP and nothing else.
And recognizing that they are part of a spam network, but not being able to explain why, because she doesn't know what the pattern is in terms of timing or source or how they try and make their account look real.
And I think this is.
so this is part of why i gave the advice i did to mcguno on their tool if you just get it in front of your eyeballs and you keep looking at it and you create a feedback loop so that you know you either look at the accounts again in a week or you look at the behavior again a week later or otherwise you say
when i thought this account was spam when i thought this account was a troll who's trying to hurt people did i get that call right if you create that feedback loop for yourself your brain is an incredible pattern matching machine and you will pick up on things you cannot consciously explain so i read the site through slash comments a lot and i'm just
gj1118 Thanks.. this is all very good information. Much appreciateed Sir
oh, this is all going to be lorem ipsum on my local database, because this is just my dev database.
But I will read it and be like, hey, wait a minute, that's a weird phrase.
I don't know why it's weird, but it takes me back to, and I will think of somebody who was active on the site two or three years ago.
And sometimes it's that same person returning, or sometimes it's just
someone who wants to repeat that same style of bad behavior whether that's you know the example i keep reaching for this stream is there is a pattern where people don't just want to participate in a discussion they only enjoy the discussion if they get to feel like they're looking down on someone which means they have to slip in some kind of oh didn't you know insult
Or, well, nobody reasonable would think that the memory allocator would work like that.
And, you know, they just have to get those digs in.
And I was dealing with one a couple of weeks ago, which is why it came back to mind.
And having seen a whole bunch of that, somebody shows up and posts one comment and, and I
see the pattern starting.
And so I do what I can, which is usually just DM that person and say like, hey, that's not quite appropriate for our site norms.
If you're having a bad day, no big deal.
But if this becomes a pattern, I will show you the door.
And a lot of times that cuts it off, either because people go, oh, the social norms are different here, or they go, oh, I was having a bad day.
I shouldn't be rude to someone because I was having a bad day.
Or they go, I guess I can't get away with that here.
This is not an interesting site to be on.
And they leave.
And the way I know that I'm seeing that last one is a lot of the times that behavior pattern of people, they will reuse their usernames over on Hacker News or on Reddit.
And so I can go look them up and see, is this a pattern for them everywhere?
Is this a continuing pattern for them?
Sometimes it is actually.
01:15:33So anyways, that's, that's part of what I do for re-identifying.
frici Evening π
I mean, there are like technical means for, oh, are you using the same browser?
Are you on the same IP?
But all of that stuff is trivially spoofed with VPNs.
And it's just, I have nothing special to say there.
m1guno hi
All the stuff that you can think of matters.
Yeah, no special sauce.
Hey, Fritchie, good to see you again.
01:16:13All right. So for contextualizing people's behavior, especially around self promo, since the north star for the site is are we having good discussions where people are sharing and learning and friendly one of the big red flags for self-promoters is they want to post a link and go away because leaving thoughtful comments on other people's stories doesn't get them more attention to their thing in the way a direct link does And it is very expensive. So... Who was that guy? This guy was a spammer. Where... Not only did he only want to submit links to his projects. Also, I'm on like... bunch of slacks where he's like DM spammed every user on the slack. I think I saw him do it on four different slack instances, three or something like that.
01:17:43And when someone has
I mean, he must have had a tool for all those Slack DMs is my best guess.
And then probably had a whole list of forum sites to spam in some tool as well.
The last thing that guy does when he wants to spam a couple of hundred programming sites, he doesn't want to engage and post comments that say like, let me read something and think about it and contribute.
Oh, even his thread is gone because it was on one of the stories that were self promo.
So these stats, when someone has posted very few stories or very few comments, especially when they don't post on things they don't author or aren't very good.
And when I say just roughly above average.
So, you know, if the average comment on that day gets four upvotes, do they get
four and a half or five.
bsandro VoHiYo
It's just a way of saying, are you leaving substantive comments on other people's things or are you, because one of the other things that's happened is self-promoters, I've said, hey, you can't use the site just to drive traffic to your thing.
You have to participate in the community.
God, there was one guy who, and I saw it in the server logs, he read that message.
Hey, Bessandra, welcome back.
and he immediately went to slash newest and on the top five stories he left a like wow this looks great comment and when i say wow that looks great i mean like that is an example of the comment he left like three or four words vaguely positive just just garbage comments and that was a like okay i am not actually
so dumb that I'm going to recognize that as meaningful contribution to the community.
chamlis_ belated ahoy!
Let me show you the door.
Because that kind of dumb, lazy spam to make the numbers
look good is really irritating oh hey Shamless so these stats are pretty useful to that because I've been able to look at it and go like oh okay I don't immediately recognize the username but they've been active on things versus you know when this is maybe one or zero and this is a solid zero and
And someone has posted five links to their things in the last year.
It's like, okay, you're just using us to post links.
01:20:41So there is a similar thing.
I'm going to get redirected to a login page if I try and pull it up.
It's got to be in here, right?
Standing?
Yeah.
So let's...
Let's just comment out these before actions and then it should load.
There's a page that doesn't get much use and is not much linked.
patotato03 Do you ever use Rubymine
Both in general it's not linked a bunch of places and then also it doesn't get used much because the problem it was created for is mostly gone.
So there was
i ever use ruby mine nope used it for 10 minutes 10 years ago that's about it i'm a vim guy so there was a difference between jcs the guy who started the site and me in terms of moderation philosophy where
He thought that mods could be very, very hands-off and only deal with outrageous abuse and voting would handle the rest.
And unfortunately, that doesn't work.
And the people who, like I mentioned that example of people who aren't happy unless they're putting each other down, those people kind of run rampant under that regime.
And everybody who isn't mildly sadistic like that bails.
There's the, what is it?
Dead Sea Effect?
01:22:34pushcx https://brucefwebster.com/2008/…
Yeah, this is the blog post I'm thinking of where they talk about when a company has bad management
The people who are most competent, the individual contributors, the employees who are most competent, most skilled, they know their worth and they have the most external opportunities available to them.
And so when bad management happens, it is disproportionately the best employees who leave.
01:23:20And then this is a positive feedback loop.
And positive does not mean happy things are happening.
Positive means it is a feedback loop that causes itself to be more likely to happen again.
So then the next best employees have more of the crap land on them, and then they get more tempted to leave.
And so bad management practices kind of create the Dead Sea effect.
So if you don't know your geography, the Dead Sea does not have rivers flowing out of it.
So some saltwater gets into it.
The water evaporates, leaving the sediment, the salts, rather than flowing out and carrying out the salt.
And the net effect is that the Dead Sea is saltier than the ocean to the point that you are ridiculously buoyant in it because it keeps evaporating.
It also gets called evaporative cooling.
Is that?
pushcx https://blogs.cornell.edu/info2…
Yeah, that's the other one.
The evaporative cooling effect.
So these are the basic ideas of the reason that we are really digging into mod philosophy a lot on this or office hours, which is kind of fun.
The reason that voting isn't enough is when people are dicks, the recipients of that
are likely to leave and it quickly becomes a self reinforcing problem.
And it was a significant problem on lobsters in 2017, when I took over the site.
And the first maybe year and a half, two years were
Building up trust with the community because every change is scary.
And I hadn't previously been a moderator, so I didn't have a reputation.
And folks were skeptical of me, which is all 100% fair and 100% normal.
But then also running off a bunch of bad actors.
And that was a couple of problems that were tough to deal with at the same time.
The, oh, Muguno, you didn't ask about it, but one thing that might be more useful for you, even than the invite system, it is tremendously valuable that we have a public moderation log.
m1guno ack
These things are very uncommon, but very, very valuable for building and rebuilding trust with the community.
Because especially when you're talking about, well, we're going to label this person a scammer, it's really important that your artists, your users, be able to look at that and go, do I understand why this happened?
How this decision got made?
Who made it?
Do I feel like whatever process there is existed was followed?
And the moderation loop has been enormously value or log, not loop.
m1guno I browsed through the mod log previously and was positively surprised by the transparency
The log has been enormously valuable for me for building up that kind of community trust.
Cause people can look at it and say, all right, well, what has Peter done against every user against everything?
And you can see.
m1guno would be nice to have this on reddit!
you can judge for yourself as a user you can build that pattern matching engine of oh peter gets really mad when people post bigoted stuff or only use the site for self promo or you can see stuff that pops out and go oh peter makes mistakes when i don't know his favorite programming language comes up maybe he's always nice to the ruby people and he bans anyone who dislikes monkey patching i hope that is not the case
So the ModLog is tremendously valuable, both as a moderator for building up trust from the community, but then also so the community can understand itself and police its norms.
And yeah, I was, the first maybe three months, I was like feeling on stage and not taking into, I don't know, it was a complicated feeling of like both
Feeling like I had a spotlight on me more than I did, really.
But then also...
ghost_user_1984 I will say, going from the no-monkeypatching camp to an observability developer where everything was a monkey patch was a bit of wiplash.
I made early mistakes where I wrote messages deleting comments that only made sense to the author of that comment, and then in the mod log, they were especially confusing.
01:28:50Hunter, yeah, I was just throwing out monkey patching as an idea.
I do only a very little bit of it.
ghost_user_1984 Oh good.
And Byroot came by and deleted a bunch of our last bits of monkey patching from the code base recently.
I think we might have one left.
Where was I going here?
Oh, Maguno, I do think it's possible to have a mod log on Reddit.
It's been a while since I looked at it, but...
think there is a way that moderators can turn it on and almost none of them do or there's some third-party service that's available that they can turn one on i remember there was something along those lines i don't know much about reddit moderation so anyways early on i was dealing with these folks who were jerks to say it succinctly although it's more complicated than that but just you know jerks for brevity's sake
and I built out this standing page of, hey, if you are getting flagged a lot, that's actually really unusual.
So this is a,
this data is not a useful presentation because this data dump that's here on my local host is well not only is it a couple of months out of date it's also full of synthetic data that i've created as a process in the process of developing whether that's by hand or by our fake data task but this is a chart that shows like oh 20 users got no flags and then it'll have an entry for
Eight users received one flag.
Seven users received two flags.
Four users received three flags.
And then, you know, zero users received 10 flags.
Zero received 11.
And then the problem was sometimes down here at like 28 flags, there would be you.
And I don't mean, you know, you the viewer.
I mean, you the prospective jerk.
Yeah.
Most often, it's a consistent pattern of rude, dismissive, abusive behavior.
01:31:16So that was really unpleasant to clean up after.
But it occurred to me that we had that standing page.
So when there is a concept of being heavily flagged,
m1guno @ghost_user_1984 observability should be ok because, while having side effects similar to logging, it doesn't have side effects to the business logic? I'm new to rails, and one of my main learning obstacles are "weird" side effects thanks to monkey patching, but I'd be ok with side effects for logging or observability. Is that what you mean?
it's in here i don't know it's over in is it in the mod dashboard flagged commenters here it is find the consistently most heavily flagged commenters requires the flags be spread over several comments and stories because anyone can have a bad thread on a bad day
or a bad day, excuse me.
nogweii is standing public not any more? I'm not finding it
And it's trying to get at the idea of are we seeing a big pattern of behavior where someone has a lot of flags that are spread across many stories and many individual comments and there is a mod dashboard for those folks
That I have been able to stop looking at every single day, which is nice I check in every week or so now.
But also if somebody is in the top couple they see a warning them directing to that standing page that I was just showing.
And it's been.
it's been pretty inactive lately.
01:33:06which has been lovely.
Is standing public not anymore?
nogweii Ahhh that's it
So Nagwe, if you pull up your username slash standing, you will see you in context on your page, but you cannot see others because public shaming rarely helps.
ghost_user_1984 @m1guno Oh, the issue is that the side effects happen no matter what.
And it would also prompt a whole ton of meta discussions where someone would be litigating their status across every comment of you know.
I used allison Bob so if Carol was mad at Dave and David had a couple of flags Carol might go look at dave's page and then.
On every random place Dave posted a comment say yeah Dave but don't you know this page says you're bad that's not going to help any discussion.
01:34:02so after after adding this stat block i realized oh hey this is kind of the less judgy less stressful version of that standing page and i think there's just a general value there to helping users contextualize their activity. Because like the negative version is some of the jerks just had no conception that they were jerks, that it was abnormal and unacceptable to be acting the way they did. And having a page that was like, no, you are really out there. You need to understand it. It helped with some of them, especially the ones who are carrying over norms from much more critical communities. Like, say, a site where the comments kind of infamously compete to put things down.
01:35:29So I was thinking maybe it would make sense to take this page that's fairly infrequent and kind of... So standing is a little bit judgy. Because it's, you know, we are making a ranking. And I was just thinking, well, if we had the more neutral way of putting it, like context,
01:36:10Redirect to slash to my redirect. Yes. But we have to do that strange kind of interpolation because we're in the router.
...33So I'm thinking of revamping that page To say hey let's put some stats that kind of put all users into context and make it. Part of the user sub nav.
...52chamlis_ are there intended semantics for a positive vote? I spend an inordinate amount of time worrying about my voting patterns - are they endorsements? belief that the story/comment as described fits the site? can I upvote something in good faith that I'm not qualified to assess the correctness of?
In which case I better so that's proud let's get out of prod.
Are there intended semantics for a positive vote.
01:37:09m1guno @ghost_user_1984 ack
I don't think I could articulate a single thing or small set of things that an upvote is for.
Sometimes people use it to mean I agree.
Sometimes they use it to mean thanks.
Sometimes they mean
I got a lot out of this or that's interesting.
It's a pretty broad positive sentiment and if you are using it in a broadly positive sentiment kind of way I think you are probably using it just fine.
01:38:07I don't think also you know if you think that something fits that can be enough i've upvoted stuff where i don't know the programming language and i don't have a strong opinion on it but it's really solid technical writing or it looks like it's starting a really interesting discussion that might touch on something i know more specifically all right
...46This is one of the lorem ipsum user.
...54They have no comments.
01:39:02Is it a comment count field? Comments posted count. OK.
...26I'm going to call them.
...33It's not called.
...42OK, it's the store, that's not.
That probably could have just been a counter cash.
chamlis_ right, I think I get the sentiment. whenever we see you homepage you've always voted up more things than me so I wasn't sure if I'm being too stingy
That's one of those little places where we have a an oddity, I'm pretty sure.
Countercache has existed when the site got started.
01:40:04chamlis_ your*
Whenever we see your home page, have I shown my home page on screen?
chamlis_ not recently, but I think you have in the past
I've tried not to be logged into prod on stream because there's a whole bunch of mod stuff that gets displayed.
But I don't know.
I just like stuff.
Not recently.
Okay.
All right, let's go.
So once again, I'm going to jump over to the database cause it's easier for me to express this in SQL.
01:41:14just trying to find a okay here we go you're going to grab this account and then log into it which means
Can I just get to that?
No, I can't.
I have to post to that.
So let's click over here.
Y'all can see my email address, which is public anyways.
dr3ig what is the slash ? "/" in User/ ?
And then let's log back in as Norberto.
Oh, the slash.
I wondered if anybody would ask about that.
This one is real cute.
pushcx https://github.com/lobsters/lob…
So that is a convenience method I saw go by on Blue Sky, and I went, oh, wow, that's nice.
Yoink.
So Joel Draper, who has a bunch of interesting Ruby libraries, posted that you could encode your
nogweii very clever
id for whatever your object is in base 36 make a little string out of it and use that around places but i looked at this and i realized you know the things i do all the time in the console are look up users stories and comments and all of those things have usernames or short ids so i could add a convenience method that just takes a short id takes a domain
or in this case, takes a username and gives it to me.
Yeah, and since you can just, since it's an infix operator, you end up with that really short syntax.
And I was tempted to swap out to square brackets, because you can have square brackets on a class and it feels kind of reasonable to say, you know, if I had said,
that you know it's sort of like the user class is a big hash i don't know it just seemed a little too cute but i did like this semantic of slash because it's kind of like the the vim keystroke for searching things that you see all over the place in programming tools and it's also obviously an infix operator where this one is almost
too common and you would start wondering if i had actually made a hash here i feel like it would be a little just a little too cutesy so anyways i've been using it for a couple of weeks and i really like it it's a nice convenience for let me take this public id this string i already have and grab the object
I've been building out the mod and admin tools for lobsters for years now, but there are still a handful of things that really need to happen in the console and stuff like, you know, I'm going to blow away the password and take over the account.
I would never build that tool.
That doesn't happen in prod.
All right.
So Norberto here has
m1guno As a ruby/rails newcomer, this is also exactly the kind of code that sends shivers down my spine because I tend to struggle to figure out where such kind code comes from! (I think I would be able to find that particular example by now though)
Let's just add the standing page to that subnav.
That's the, I think, the user subnav.
01:45:20m1guno I'm too old for clever
Yeah, Maguno, I can see how that one would be surprising.
And as you can tell, Drake, who is very clearly an experienced user, had a moment of like, wait, what the heck did you just do there?
Because that was odd.
It's a little clever, but I don't know.
It's so convenient that I was seduced by it.
Because the alternative is over here I end up writing... And this is a significant number more keystrokes.
I guess part of the reason I'm okay with this cleverness is...
It's not something I would not accept.
I would not write in the code or take a pull request in the code that depended on this slash method.
I would say, no, do the for, you know, find by username in the code base.
I want to do this.
I see this as very strictly a convenience for IRB.
Well, I guess this is PRI now.
IRB is the old version of what was replaced by PRI.
So, you know, the console.
01:46:44Isn't there a, all right, so we have a sub nav.
nogweii I've used more irb than pry in the past couple of years. it's gotten a lot better!
dr3ig both the old and the new version. they're adding more features to irb
Look profile filter, here we go.
01:47:10Really, Nagoya, IRB is more...
m1guno related question: I have what i call the "3am test" for code but not just code. "It's 3am, and production is down. Your house is on fire, the wife's left you, and the kids are screaming. Are you able to find and fix the production problem in 10 minutes?" What's your experience with Rails? It's alright if I struggle with stuff as a beginner, but how is it after some years of experience?
I didn't realize IRB was actively developed.
I am out of touch.
...27I clearly didn't know what was going on there. I just sort of assumed that Pry had effectively replaced IRB. Hmm.
...44nogweii yeah, I'm kinda certain that the rails console you're using is actually irb. pry doesn't have a completion menu IIRC
Well, Maguno, I don't have kids to scream at me, but I have woken up at 3am to debug Lobster's outages, and I'm okay with it.
I wouldn't keep it in production if I thought that I was burning time on cleverness.
There is a lot less magic in Rails than there used to be, so...
It used to be you would say, what was it?
Find by username colon or no colon.
This would be the function call.
And in Ruby, you can dynamically define methods.
So no method named find by username actually exists in the code base.
The method underscore missing method got called.
m1guno are you, say, documenting key parts of where magic is used in lobsters, so that other co-developers can see the lay of the land? Is that even required after you gained some experience?
and backed out that you wanted to search the username field by deconstructing this string and it got kind of silly because you could even say find by username and i don't know name another field profile and it would deconstruct this and so like the method name behind became a kind of metaprogramming
That was a little too much magic.
And that's been out of Rails since...
It was Rails 3 to 4 that dropped those kind of things.
They were called finders.
Probably doesn't have a completion menu.
01:49:36Well, you know, I do have...
dr3ig whereami
I think, Nagwe, you got me there, because I have an IRB constant to find and not pry, so I guess I'm using IRB and not even knowing it.
Where am I?
Oh.
Drig.
How do I talk you into making PRs?
Because you're clearly a very experienced Rails developer.
nogweii @dr3ig it's fuuuuunnnn
Would you like to help whitewash a fence?
And Maguno, I do occasionally, when I'm doing stuff that's especially unusual, I do occasionally leave comments that say, hey, I'm kind of doing a magic thing.
so like a recent one was this zeitwerk initializer has a comment that says this file is a relic of how lobsters used to manage api keys and it explains what i'm doing with it and this one is kind of irritating magic that ins where the app i say irritating because the app
reflects on its own config setup and if it knows that the config setup is in a state that implies you haven't updated the app in a particular way because people use the code base to run their own sites we call them sister sites sometimes i even spell sister correctly oh my god that's a tacky one
01:51:38So this is the kind of introspection, metaprogramming, and magic that this used to have. The previous version of this, if you look back in the Git history, there was an even a much longer comment where I kind of griped about how much magic I was writing. If you look through lobsters where lobsters commits, anytime you see like a three line comment, there's probably me explaining some magic or weird complex site norm that I'm trying to get at with code.
01:52:21So let's, what's the name of this guy? It's gonna be context. So it's probably users context path, user context path. As long as I live, I will never have a mental model for when Rails decides to pluralize things. All right, so we've got that. We should see a standing link. Excellent. And I think let me put it on the public profile. So when viewing your own public profile, you see that too. I think that would be useful. So let's take this. grab that and i just was looking at the file wasn't i yes all right so if user is showing user will link to the standing honestly should it just have So here's a design question. So there's this sub nav. And if it's going to link from settings to public profile, it's a little weird that the public profile doesn't link back. Same with the filter tags. These are all kind of, you know, like the about your accounts pages. Yeah, I think that should be consistent. And maybe we only need to show log out from the settings pages. Because it's a little weird to go from like your list of filter tags to log out all right yeah. So let's make that a sub now. And then, did I do anything special for sub navs. No okay so. We will just grab that. Oh, I forgot about that helper. So that's actually an improvement. So we got the user page. How does the about page render that?
01:54:52OK, just renders partial. So here it's users plural. And then you can just grab these things. Plop them in.
01:55:30nogweii plop therm into about's subnav?
Showing user is active.
...37Yeah, this can be simplified.
...45Oh, no, it really can't.
I have to test.
Did I?
Whoops.
Yeah, I meant to save this, too.
at views users subnet.html.erb thanks for catching that so we will have send a message and then these are if you're looking at yourself you see these things sure so there's the standing and this wants to be a link to
Different page.
And then where else did I have this?
The settings index was the other sub nav.
So bring those in with public profile ahead.
Standing I just did.
or not standing, obviously, context.
I was just talking about renaming that to be a little less judgy.
And bring that in here.
Yeah, see, these all can be the link to different page helper.
m1guno What are you using for authE/authZ? I have learned that devise is a popular gem, and rails 8 has introduced its own auth gen (though I'd be wary to DIY more involved security code if I can help it).
This will be filters path.
no user on it because it doesn't live under the user for authentication and authorization we actually have it totally home rolled you can look at the login controller for authorization and this is I think lobsters predates devise there was another one whose name I don't
omni off maybe i think that one's still going before devise there was something that was fairly popular but regardless the site creator hardcoded it and it has worked it has worked reliably it has enough tests on it that i'm comfortable with it so i don't want to tinker with that and break it
Yeah, I share your wariness to DIY security stuff, and that's part of why I've just let that sleeping dog lie.
For authorization, we also don't use a library.
m1guno this one? https://github.com/lobsters/lob…
The gem CanCanCan is very popular.
We just have a handful of if you are, you know, if user equals showing user.
Yeah, that's our login controller.
So there's our authentication.
And then authorization is just ad hoc custom code.
01:59:00See, now this is a place where
Rails is not quite expressive enough.
m1guno oh, i wasn't questioning what lobsters' approach is. it was about feedback for what I would consider for my own setups
Because what I want to say is if you are on slash settings, I just, I don't remember this one.
oh yeah if i was starting fresh i would say devise and can can can and you're all set all right controller name and action name are what i'm thinking of i'm gonna have to point it because i don't want
m1guno tnx
remember if it's going to be settings controller, actually.
Yeah, it's not going to be just settings.
That's the route.
But the action name is going to be lowercase because that's a method.
I think that'll do it.
I'll add some debug there if needed.
Cool, lost that entirely because I left in the old context four instead of the new.
Let's just...
Slowly I'm learning to copy and paste stuff.
Okay.
Syntax error.
What have we got?
02:01:09Oh, it's done. It's not end if, it's just end. So I was working on my personal blog, which uses liquid templating. And so I'm crossing over liquid templating and ERB templating. undefined method is active there isn't going to be a showing user when you're not on let's comment that
...56I just, that's obviously not it. It's there we go. Okay. So now we have nothing, which is like progress.
02:02:28So if you haven't looked in the stream archives, I title streams based on silly things I say during the stream rather than anything useful like topics. So why am I not seeing anything here in the user sub nav?
...56Because on the... on the non-settings pages, this should show. We don't have the, so there's this missing concept of, are you looking at your own page? And I put this sub nav under users, because it's collecting up Actions across a couple of places, so the profile is under the users controller the context, you know the former standing pages there but filters and settings are their own controllers. Actually, this should be man it's fine. So we're kind of. Have a cross controller concern. of. are you looking so it's only the public profile yeah actually it's only the public profile that cares about that on the other one if you can see this sub nav you're looking at yourself so maybe i just want that better lost the public profile link
02:04:29So this one, let's go there. And I think that'll be fine. Undefined method sub for an instance of user. So I'm doing a link to different, this link to different path is a wrapper, so this can just be, user path in the the main link to rails helper you can just pass a model object and it infers that you want a controller with the same name and the show action so there's one of those places where being implicit is a little much so okay so these look good and if we reload that profile yeah see now we're getting that that nice underlining that says you're on this thing you know settings isn't even in this path so let's put it in and do it like this yeah So this red underline, this UR here, the double underline is a little much, but hey, we're programmers, not graphic designers. So let's look at the filtered tags. Great. And if I click over to my settings, so I should have had the logout link on this page, because this is the one that's looking back at the controller, and I must have not gotten that right. So let's debug that.
02:06:37Undefined method, controller, controller.
Can't type and think at the same time.
Oh, it's doing a clever thing.
It's not the settings controller.
m1guno Is it possible that the google calendar for the twitch stream lacks time zone information? I added the calendar to my google account, and monday sessions are listed as starting at 3pm CET (+1:00)
It's just settings.
And there's a little magic from Rails.
And the action name is index.
That's fine.
Is it possible it lacks the time zone information?
That is totally possible.
So where are we here?
02:07:24So today's session started for me at 2 PM.
And in Central European time, that should have said, wow, 9 PM?
That late?
m1guno yeah
So I have, I don't know what's up with that.
m1guno wait, is your stream online for 2h ?
I can look at the Twitch schedule.
02:08:00That's not my schedule.
...06m1guno yes, it is
nogweii a little more than that, but yeah, it's been running for a while
Actually, I don't think I know where it is, twitch.tv slash pushcx.
I'm poking at my off-screen browser, trying not to show too much meta.
...23And somehow I don't have that edit thing on my pushcx slash schedule.
...38m1guno the Thursday session is listed as 10am CET here.
cool so i have that up off stream and i will put it in my notes of things so it sounds like you are seeing u.s eastern time rather than central europe eastern which i think is
or Central Europe time, I think is your acronym.
02:09:18So that's off by like six hours.
m1guno I double check my setup, maybe it's a me-problem
And so that might be a me thing.
Okay, so now I have the logout link.
Great.
I will look at that after the stream.
Because, you know, watching me debug the stream thing is not especially useful.
maguna you might also be seeing odd time zone stuff if you have your browser's privacy settings cranked up like resist fingerprinting in firefox sets your time zone to utc regardless of
what you have set elsewhere in the system or the settings.
And a lot of sites will just assume whatever time zone your browser says is what you are, overwriting anything in their user profile.
I found a lot of those that way.
I can't guess if that's your hassle, but...
02:10:24m1guno ok, will check
So there's the filters page that should have it.
m1guno firefox is on standard security settings, but that includes fingerprint
And then last standing page, which I'm about to rename, should have it.
Great.
And then when you say includes fingerprint, is fingerprinting on?
I think it, or maybe it's one of those multi-values like low, medium, high.
I don't remember which level it would kick in at.
02:11:00So I name that. And then, so that box, what was it called? I'm going to grab this off and bring it over to the context page. And I'm just going to throw it up at the top. And I can get this stuff. Actually, this whole if can go away. because now it can be handled at the controller level, which is nicer. And it doesn't actually need the breakout box treatment anymore. So this can just be another box wide.
02:12:21And Let's demote u to an h2.
...32nogweii @m1guno the thing called "resist fingerprinting" is not included in any of the standard security settings, even the highest level. It's only able to be activated using `about:config` and goes *really* far. It's designed by the Tor Browser.
And this thing is going to come...
frici Unrelated entirely but what do you use for fuzzy finding on vim ? π€ looks cleaner and snappier than options I've seen.
Missing a close paragraph tag.
This is going to come up here and be another... Ah, thank you, Nagwe.
...58So let's revamp this message.
02:13:20m1guno @Nogweii thanks!
nogweii @m1guno not to be confused by Mozilla touting the 'lesser' options as privacy enhancing, fingerprint resisting options
Some stats.
Yeah, really naming it.
So this is one of those...
What do I use for fuzzing finding on Vim?
I think it's just the FCF plugin.
...37nogweii @Frici https://github.com/junegunn/fzf…
And I'm always happy to have off-topic questions about setup.
Let's see, do I have anything special in my Vim IRC?
Yeah, there's two plugins by Joongun here.
So this is, this is the plug section that I have.
And then I know there's some config down here somewhere.
02:14:17Yeah, here we go.
I can grab that.
And then I think, is that all of my FCF config?
And the reason I'm, yeah, I'm schlepping through my VMRC off screen because who knows what kind of nonsense is in there.
That's private, you know, names of projects and stuff.
pushcx https://gist.github.com/pushcx/…
m1guno @Frici There is also https://github.com/nvim-telesco… which is what i am using
And so if I say just, there you go.
So we'll throw that in scratch.
...56I think I've heard of Telescope. I don't know anything about it, but I've heard that name.
02:15:09nogweii telescope is amazing, but nvim specific. (100% lua)
Yeah, I'm not actually using nvim.
m1guno think of a popup menu that can search for all kinds of stuff
I've looked at it, but kind of bounced off.
I've had hassles getting set up.
I kind of want to move to nvim, but
frici I'll have to check fzf again, last time i checked it ... it didn't sit all that well π
m1guno if you want to stop being productive, start writing your own neovim config
nogweii @pushcx you see that vim is under active maintenance?
don't know it talks about setting up dependencies and there was some there was a tool i think it was called lazy for installing and managing packages and i just everybody was like that's the default that's the standard and i just bounced off its docs pretty hard all right so
...57I see that Vim is under active maintenance.
Yeah, I know it is.
I am very glad that the project is still going after the loss of Bram Mulyanar.
m1guno folke's LazyVim is a good starting point if you want to try out a fleshed-out neovim installation without configuring anything yourself
I probably would be using Vim indefinitely, even if it was never getting another patch, just because changing is such a pain in the butt.
So this one is...
02:16:31m1guno exactly
frici yeah i am eyeing nvim here and there but i've been using vim since the 90s? moving is uncertain. Though if nvim in the end is easier to automatically config for bringing on other boxes I might end up there.
yeah and mcgunough the hassle is i don't want to start out with a new neo vim installation i want to continue using my 1100 line vim rc because at this point so much of this stuff like fcf is a mapping i made 15
years ago and I don't want to think about again.
I want to say my Vim config started in 96 or so, and it's been continuously developed since.
m1guno muscle memory is a thing for sure
When I played with nvim, actually, I only had, actually, yeah.
So I did get a handful of warnings out of nvim.
And I got it down to literally one bit of my config required an if.
And I was floored by this.
m1guno "i could spent time with the family, or fine-tweak my neovim config juuuuust a bit more..."
That's incredibly impressive that with the amount of remodeling they've done to the Vim source code that I had so little tweaks.
Ah, wow, Muguno.
m1guno heh
As I said, I don't have kids, so I get to spend all the time on my Vim config as I want.
No, actually, I try and only touch my Vim config on Wednesdays.
I have a regular thing where I play with my tools for an hour.
jmiven hello!
And it's two things.
Number one, I don't want to spend all my time tinkering with the tools and playing with new plugins.
But then also, I can only learn
one or two shortcuts a week hey jay miven or one or two new plugins or one or two features and i have to space out the learning whereas if i do like a four hour big vimrc tinker
It feels like I am learning four times as much stuff, but actually I still only can remember the last hour of it.
The first three hours will get forgotten.
I can't remember 20 new keyboard shortcuts in a day.
Exist, there's like four sub clauses there.
02:19:15m1guno hi
helps you to contextualize activity against other users.
...36frici according to a quick gitlog the last time i touched mine was in 2016. Gotta like a durable immovable tool LUL
frici Hey jmiven
All right, so maybe this part is going to come back down here.
And each of these can have their own explanation kind of sections.
The last time you touched your vimrc was eight years ago.
That's pretty great, actually.
02:20:15m1guno @Frici blasphemy
I kind of want to say it's not about winning or losing or something, but that's enough for that.
Let's just get a first draft of it up.
So here, that went away.
calebhearth Closing p tag instead of opening there
calebhearth Right above "Mods"
Context got renamed with the load showing user callback.
Oh, this is one of those things that I love in Rails.
Closing P tag instead of opening right above mods.
Yep.
Got that wrong.
Thanks, Caleb.
How do I?
All right.
02:21:06Congrats.
You are now a VIP because you caught a bug.
m1guno admittedly, one of the little pros for learning ruby and rails is that I can use nvim for coding. for languages like Java nvim is simply no that useful
calebhearth oh shi
That's all it takes.
So I was going over to the user's controller.
And not this user controller, Miravim, because I renamed this from standing to context.
And now Rails has this nice anti-footgun.
And I don't think there are any other instances of...
It's going to be in the...
the heavily flagged warning, but I want to get this page hammered into rough shape before I go and touch that.
And given that I'm at two hours, 20 minutes, probably not going to touch story merging on this stream, which is not bad.
The office hours exist for folks who ask questions and we have lots of questions and discussion.
That is better than just computer codes while thinking out loud.
OK.
So here's this.
Good.
And then so let's go over to the context page and give this section a title, comment stats.
02:22:48I guess. So a thing that's a little confused is this first section that I'm bringing onto the page.
02:23:06This one is very you-centric. And then this one is very broad, the community. So I want to be Kind of consistent or are we looking at this second person or third person, if that makes sense, wouldn't hurt to make the intense consistent in the P tags. That's the opposite of consistent. All right. So I also maybe like this big chunk of warning. probably wants to move into a details tag and say, hey, here's a longer explanation for people who are getting flagged. And this is a... I know there's a ton of fake data in here. There must not be flags happening in here, are there? There are comment flags.
02:24:34This must not have generated
Because I just ran this last week.
This must not be generating valid lag somehow, because otherwise there would be some in the test database.
I believe that's correct.
jmiven merging /standing and the comment stats together in this user context is a great idea!
Yeah.
So grab a user out of the array flag.
Oh, thanks, Jim Evan.
Yeah.
I think you came on before I introduced it, but I'm also going to, I talked about how this standing page got created as part of.
steering the culture because we had a whole bunch of jerks not to put too fine a point on it and i was trying to help which of them one could help understand that their behavior was abnormal and unacceptable and at this point i feel like the norms have shifted enough that it can be a lot less
I guess, judgy.
So something seems to have gone wrong here.
So what if I just grab?
It's not going to have users.
I was trying to think of ways to real quickly create more useful data to see here.
02:26:49And I wonder if it's worth filing a GitHub issue about. I'll have to spend more time playing with it. Let's put that on post stream.
02:27:04All right.
m1guno FYI: I also checked the Twitch calendar link (webcal://api.twitch.tv/helix/schedule/icalendar?broadcaster_id=95536715). This one, too, has time zone problems. In my time zone (CET = +01:00), the Monday session is listed at 2pm and the Thursday session is 9am = the original, US Central times of day.
So in the meantime, let's grab Norberto.
...20Norberto has 21 comments. And then, how do I want to do this? Kind of want to do the fake data thing. to make a way to move tabs over to the next.
...58Can't remember my own keyboard shortcut.
I have a way to move a window over onto the terminal, and I don't remember what it is offhand.
So we want to say, OK, great.
So let's grab four of his comments.
and say and this is this is a little bit of a foot gun api it predates really i think it predates keyword arguments in ruby actually it is one of those api bits that i look at and i can tell jcs used to write a lot of
see or you know see family languages oh thank you for that info that that definitely means that
Maybe what happened here is I set up the Twitch schedule in a browser with resist fingerprinting on.
And so I was seeing a weird, what would that be, five hours off?
That's pretty close to what this issue would be if I had UTC minus five or, yeah.
frici twitch calendar is always in your own timezone yeah
All right, story ID, comment ID.
frici or what it believes your timezone to be
user id so let's just say that peter flagged all these things and all right wait wrong clipboard
02:30:10Which, there we go.
...19No, I don't have the.
...30That's fine. We'll just do it by hand.
...40Really? Readline, you're going to fight me? All right. So now there should be some flags in the database for Norberto's comments. I just wanted to kind of see something here.
02:31:19I don't?
jmiven the .ics file seems to list the timezone correctly
How did 20 go down to 19?
God, if this query is bugged, that query is complicated.
...50Why would 20 go down to 19 when I add flags? So all this is... This is why we get deadlocks occasionally when people vote, because it's like nine things, but...
02:32:20Insert into votes, values. That's all correct.
...36Oh, yeah.
And you know what's interesting is the chart is broken.
But down here, Norberto can see that some of their comments were flagged.
This display is wrong, they shouldn't see this bar on the end without a vote summary.
m1guno hmmm
All right, wheels within wheels.
So let's grab that.
And that is clearly after the story title.
02:33:15Yeah, I'm a little puzzled. And Maguno, I think this one might be just you because in one of these moments here, I looked at it in a browser that I know is in the US central time zone and it looks correct. And also, you're the first person in a hot minute to say that it's wrong. I wonder if you go to...
...46m1guno curl'ing the .ics shows the correct time zone
So this everytimezone.com is pretty darn handy and it uses your browser's idea of the current time zone.
So this browser says it's in US Central.
So Maguno, if you pull up everytimezone.com, what time does it say your browser is?
02:34:12m1guno correct local time
m1guno 23:35
m1guno 11:35pm
And then knowing that, I would go check your Google Calendar for that time zone too.
...27m1guno never mind, I'll first check again on my side
All right, so.
...37m1guno keep going :)
Why are we seeing the vote summary for user?
So there's a vote summary where you see after a comment, oh, two people flagged it.
But I think what's happening here is it tries to
02:35:09That part is correct. So if Norberto is the one logged in, and they are, they should see the vote summary for user. Let's debug this. So we should see the word user here. The reason this page takes a hot minute to load is that that flagged count up there is fairly expensive as a query because it's grabbing all the comments posted in the last month and doing a big group and join. Why is this blank?
02:36:01Oh, is vote summary doing something clever? Oh, the votes aren't loaded, are they? So this is a performance issue where when we load comments to avoid one plus end queries, we create a vote summary data structure and then slap the votes onto that structure. And so the standing page is not loading that correctly. So let's go to the replies controller, because it's pretty small. Yeah.
...57And then we can grab the user's controller and find context not standing anymore. Here's the flagged commenters. And here's the expensive query. And then here's the flagged comments.
02:37:41A different model, isn't it? Yeah, you could just plug this off.
...56So if we grab the... That was Sorbet on file save was like, oh, hey, you have an unused variable. I'll delete it for you. And now we go flag stuff each. And we say for each flagged comment, note summary is. That'll probably do. Why am I getting a warning? Oh, it's the old Sorbet integration that I still haven't debugged. Bad streamer.
02:38:53There we are. So now the little vote summaries are appearing correctly. God, that's... So that's an embarrassing bug because the point of this showing your comments that have gotten flagged recently, the value of it is seeing, oh, hey, I'm getting a whole bunch of unkind flags. Oh, hey, I'm getting a whole bunch of spam flags because I'm discussing my innovative product. And if that's... I'm sure it worked at first, but I did change the way vote summaries were attached for a performance thing a couple of years ago. So I must have broken that. That's unfortunate.
02:39:46And I'm going to bounce the Rails server because of that heinous inline partial. I just want to make sure it gets picked up and run again.
02:40:01Oh, I didn't end up touching comment. So yeah, I don't actually need to do that. That's fine. So we were here in the flagged comments. We grab everybody with their little summaries.
...26So for recent. This is just using the interval, so let's echo that in the context page.
...52Don't we have a helper for this for putting it into English?
02:41:14Interval human. Okay, that's what I'm thinking of.
...42m1guno FYI: Calendar issue was actually on my side. Fix was to set my Google time zone from CET to something different, then set it back to CET. \_(γ)_/Β― So no need to follow up on your side.
Oh, all right.
Thanks for following up, Naguno.
So while that loads, let's go over to my Scratch.
Let's minimize it so it just disappears.
Here we go.
And I don't have to check that.
Great.
Here, flagged comments in the last month.
There we go.
02:42:19frici We are now even more confused, than when we started LUL but we'll chuck it up to Google being weird I guess, glad you got it sorted
so the time interval is always a month that can get changed and parameterized a bunch of views reuse this interview full helper but i don't want to do that right now so if people are going to be looking at this page with zero flagged comments in the last month we should probably explain what's going on with this page and
Make this its own section.
02:43:03Why am I retyping?
...28I'll be in the div. I do when I don't. And then otherwise... You know, they'll get an OL, but it won't have anything in it, so it'll be invisible, and that's fine. So let's see how that looks.
02:44:17You know, for cheat, I actually can't count the number of times where change the setting that is correct to something incorrect and then back to the correct things, that has fixed so many, so many weird bugs. So I say props to Muguno for figuring it out.
...59frici Hey, never discount the ancient art of turning it off and on again :D
Let's put the top.
Never discount the ancient art of turning it off and on again.
Yeah, I think that is a closely related art.
m1guno aye
Not to be outdone by percussive maintenance, which is when you thump it until it works.
02:45:23m1guno (IT Crowd vibes)
Oh, and Maguno, as long as I'm sharing...
m1guno oh dear
m1guno ^^
mod philosophy there's one more of those useful terms occasionally i have to perform corrective phrenology so phrenology is the old racist science of figuring out people's personality traits from the bumps in their head and so corrective phrenology is the art of you know like percussive maintenance correcting those bumps
...57I kid. So I thought there was...
02:46:10I thought there was something here. I know I've said it on stream a bunch.
...20I think I called it the... I might have called it the North Star... So occasionally I lapse into business jargon where a north star metric is a, how do you know you have your shit together? If you could only use one metric, what would be your north star metric? And I have something I am trying to find the quote about for how I think about moderating. Where did I put it? I set it on stream.
02:47:05Let's see.
I have my assets, right?
m1guno https://en.wikipedia.org/wiki/T…
Assets, stream.
Yeah, here we go.
...22Yeah, IT crowd is pretty popular. I think maybe two streams ago, A couple of streams ago, I used the, I'll just put it over here with the other fire. Yeah, here we go. All right. So I have said it a few times. And if I say grep dash L, then I can just list those files.
...57The North Star is always, are we having good and interesting quality discussions? Nah, it's not a good statement of it. So what I'm trying to say is find this quote for the user context page of, I guess I'll just write it again from scratch. And I'm not going to say North Star, because at least it's easier to not lapse into business jargon when I'm writing.
02:48:40Our goal is passive voice.
02:49:03jmiven it's even on youtube nowadays https://www.youtube.com/playlis…
jmiven (legally!)
I'm sure this is a community.
What do I want to say?
IT Crowd is free on?
Oh, man.
I'm going to have to fire up YTDLP, I guess.
Make myself a little folder on the NAS.
I should write that as a blog post of my whole TV setup sometime.
m1guno @jmiven nice!
All right.
What am I trying to say?
I'm trying to contextualize this page and say, the reason that we provide all of these
02:50:03calebhearth "compared to others" feels less antagonistic.
useful useful for what to whom this is first draft kind of stuff discuss and it's nothing that's good enough for a first draft i just want to say like at the top yeah the reason we have this page is so if you're weird in a bad way we know it
Compared to others feels less antagonistic.
...44calebhearth vs "against other users"
Are you saying, Caleb, are you comparing against the to help contextualize your activity against other users?
Yeah.
Oh yeah, I see what you're saying with against.
Contextualize your activity.
calebhearth Yes "against" specifically
compared to other users.
That sounds nice.
Thank you.
02:51:18calebhearth :thumbsup:
Lobsters is a healthy community with a high cap.
...36So I guess whose goal is it?
calebhearth I don't think that I can tell from this <p> how the comment stats / flags relate to a healthy community
Because part of the reason I'm struggling here is another one of those changes of perspective where I am trying to say like the meat of this page is
a you thing but this is an everybody thing yeah so caleb also part of this is to help contextual let's swap it let's go broadening lobsters aims to be a healthy
healthy.
Didn't I have it in the garden party link?
That's on my profile, isn't it?
Let's grab that.
That's here.
Can I grab more of this text?
No, because it's really an extended metaphor.
But this is kind of the vibe of
We are talking about our shared interests in a pretty chill way.
calebhearth Our goal is that Lobsters be a community centered around healthy conversations - to that end, if your comments have X or your flags have Y, you may be an unhealthy part of this community
We are friendly, social, informative, as opposed to, you know, welcome to the Thunderdome.
We are going to determine which programming languages are the most ethical and morally acceptable to use.
02:53:45calebhearth Hey that was my thread the other day
calebhearth ethical and morally acceptable, not programming languages
Oh, Caleb, which was your thread?
...58calebhearth Don't Get Distracted
calebhearth might have been HN actually
Are you... Don't get distracted?
Oh, did you write that talk?
I'm not going to have it in my streaming browsers.
calebhearth calebhearth
Are you Caleb on the site?
I don't recall.
Don't think so.
Ah, Caleb Hurth.
OK, Kat.
calebhearth or possibly Caleb_hearth?
jmiven not this caleb
It's less fun when you startle when your claws are this long.
02:54:32calebhearth that's me
jmiven :)
Somebody submitted to the site.
...44I know we had it, right?
Yeah, there we go.
This was the one a couple of years ago, right?
Yeah.
calebhearth It got picked up by HN again last week and the conversation went around ethics naturally
So you are, Caleb, you're thinking of it appearing on Hacker News because I saw it there a week or so ago, too.
calebhearth Yup, I am. Sorry for the confusion.
I didn't read the comments there because I recognized it from a couple of years ago.
Yeah.
I mean, natural that the conversation went around ethics.
That was a big chunk of what you were speaking about.
02:55:53calebhearth May have been missed but my suggested template is something like: Our goal is that Lobsters be a community centered around healthy conversations - to that end, if your comments have X or your flags have Y, you may be an unhealthy part of this community
I mean, that's not a bad confusion.
I mean, Lobster spun out of HN and looks pretty darn similar.
We have a nicer color scheme.
We have dark mode.
calebhearth And usually nicer users!
No, I saw what you said.
I guess where I was stumbling is that I was stumbling on the R. Yeah.
funny that we're talking about it because we are trying to get at nicer users as opposed to you know it's been a few years but there were a couple of years where hn comments kind of feel felt like a competition to look down on things and i think it's incredibly hard to steer a large community but dang has done a pretty good job of getting away from that really unpleasant contest
Monstrous aims to be A.
02:57:09What does it do?
...36calebhearth You can use this page to compare reactions to your posts and comments to those of other users.
calebhearth I'm gonna be quiet now because it's all me in the chat
m1guno this is a reason (the different vibes among the various communities, like HN, Lobsters, Reddit, Twitter, ...) why I have pinged you on Bluesky earlier today, Peter
Yeah, that's exactly where I was headed, Caleb.
m1guno *this is the
It's okay if it's all you.
People kind of step up and step down.
Oh, thanks, Maguna.
m1guno midnight
but caleb you know people kind of get more active and less active as we get into topics that they're particularly interested in or i mean we are still in u.s working hours for the central and western time zones so sometimes people actually have jobs they go to it's getting fairly late what time is it in europe we were just looking yeah so
The Europeans hopefully are not at work coming up on midnight, coming up on 11 p.m.
02:58:54Caleb, how do you feel about relative to other users?
That doesn't sound like necessarily an up first down access to me, I think.
calebhearth I'm happy with "relative"
Yeah.
02:59:14Happy with relative, okay.
...25calebhearth But I still don't think I'd know what to do with this information yet
All right.
So if we set it like that, let's take a look at what that looks like, switching from monospace to sans.
Yeah, do is a different matter.
So I think I talked about it before you hopped on stream, but the big chunk about lagging, I'm actually going to fold away under a details tag.
that'll be closed unless someone is heavily flagged.
03:00:19And you know, if I'm going to say it's let's where's that sub now.
I do actually want that.
Oh, wait, that's going to be wrong.
These things, these shouldn't print for all users.
yeah okay hang on this i know what i need to do because right now this is going to show for all logged in users yeah and then some of these are universal and some are
m1guno "This page is an overview of how your activity in discussions fits into the context of the [existing culture in the] Lobsters community."
not like settings so it's going to be especially confusing for mods which i'm kind of okay with so here hold on yeah so before i jump into that so show on links
03:01:54That's not bad, Maguna. I see where you're going there.
03:02:03All right, so... Let me put this one on the end, because I always get hung up by this part of it. which is just, has the user not deleted or been banned? And
...45m1guno as a new user, i'd expect a signal that tells me "oh, I'm red = I'm not doing well here" vs. "oh, this is colored green = I'm a valuable member of the community"
Let's not have a default.
With these partials, a lot of the time, I prefer to force all the users to specify the value for the partial.
Yeah, Muguno, that's kind of the direction I'm headed.
I'd like to avoid being... Well, I'd like to avoid any kind of false negatives or false positives, and so...
That's why I'm writing a sort of generic, hey, I want to help contextualize you.
Because if you get into the heavily flagged bit, well, then it's written as a, dude, you're fucking up and you gotta correct.
And it's trying to be polite about that, but...
Okay, cat.
The cat has figured out that my spouse has left and is demanding attention.
m1guno is the page only showing negative stuff?
Oh, baby, come here.
Oh, good baby.
Sorry, no cat cam, because he wants to be on my lap rather than on his little designated place.
m1guno sorry, i have been multitasking and not solely watching the stream
The page used to only show negative stuff, but now we are making it more general.
So let's go to close that and user show and filters index and settings index.
What are the other ones?
This context page.
User show.
Should have done these in the same order.
All right.
Relieve him.
You consider these equal.
There you go.
03:04:47m1guno if the page is only showing negative metrics, then one could consider changing the intro phrasing differently
m1guno what's "contextual" ones?
so on the mcgunough i'm taking this page the other direction from previously it only showed negative metrics now it's showing more broadly contextual ones and i am changing the orientation of it and the stuff that leads into it to be more general i thought you're here but
It's kind of, it was judgy to help deal with a culture problem.
What's contextual ones?
I'm not sure what you're asking.
03:05:59m1guno "to help contextualize" is in the copy, I wouldn't know what that says in concrete terms
m1guno does that make sense?
m1guno it's too abstract
To help contextualize I see what you're saying.
yeah actually and contextualize is redundant with relative to other users that's part of what's wrong here.
03:06:28So on these other pages, I'm just forcing it to true because they only appear to you.
m1guno what's the (updated?) goal of the page now that you are changing the direction
Mods can't load your settings page or your filters page, which is fine.
The updated goal of the page is to find
Just really to help people contextualize their activity so.
Like earlier.
m1guno i get you want to point bad users to it in case they screw up
Shamless asked a question about the semantic meaning of up votes, which is one of those questions that if we zoom out that question is.
m1guno but is it also carrot-on-a-stick for other users?
Am I using the site correctly, am I normal is my behavior acceptable and.
It is mostly, the new stats are a bit of that.
souphascookied Man I love rails so much, but I keep falling out while using it, the answers online are like always outdated with their constant breaking changes :')
The big chunk of text, if you're seeing this warning, this is the stick.
Ah, Supa's cookied.
You, ..
I think two things.
You missed a discussion earlier of Good Rails intro books.
I don't know if you can scroll up far enough in the Twitch chat to see them.
But if you follow the page to the stream archive, you'll see them linked in there when, you know, an hour or two after I put this up, which is usually...
Hold on, said that wrong.
Been running long enough, I'm starting to get a little discombobulated.
So...
I will put up a archive for this stream.
It typically goes up an hour or two after I finish the stream, and then you can grab these links.
But here are a couple of nice Rails books.
But in general, the constant breaking changes hasn't really been true for five years, I would say it's changed.
A lot of what's happened to Rails in the last few years has been additions rather than breaks.
was god there was so much churn in the one to two two to three three to four days four to five had a reduced amount and then since five very little breaking changes or at least they fell relatively minor
All right, so these are if show own links.
03:09:42And then this is, I mean, it's always going to be true here, so that's fine. Yeah, actually, I think I, If more stuff moves under the settings controller, like theoretically filters should maybe be under there, that's fine. All right, let's see how that looks. Probably there's some dumb typo and I'm gonna get an exception. Well, if it took this long, it's actually running the query.
03:10:21souphascookied Thanks mate
Good.
Good, good, good.
All right, so what I was concerned about was
I grabbed this URL, so I made a little private one here.
Yeah, I knew there would be some kind of silly bug.
So this one is just a nil, because Rails and Ruby loves nils.
...57So I wanted to make sure that when looking at a user's profile, you didn't see the links that should be there for that user. Especially because the, what do you call it? The settings link would go to one's own settings page when logged in. Yeah. All right.
03:11:37souphascookied Although I've learned to love having my bread JSed on both sides, often ends up simpler to implement
m1guno My first feedback for the page would be to trim down the text you see at first sight (like a collapsible <detail> if you want to learn more or whatever). I'd expect the intro of the page to be a summary like: "Dear <user>, (1) You are bringing value to our community ... because [some metrics that like you got some upvotes, you did XY] (2) You are under scrutiny because ... (not the copy, just the idea) And that would be the first screen.
What is BreadJS?
Is this like BreadTube on YouTube?
...57Yeah, actually, Maguna, that's a really good point.
souphascookied Nah I mean like "having your bread butted on both sides" but in this case I used JavaScript lol
The context page, let's...
m1guno sorry for the broken twitch chat formatting
comment stats let's make this this is it's on others posts we could put something real positive on here like most uploaded comments
Yeah, I don't know if Twitch displayed it funny in the viewer, but it looked fine in the mod view.
And Sup, I see what you mean.
03:12:53So what's useful is probably some idea of
03:13:06how many comments you've posted, how much upvoted they are, like what's the median. Yeah. I can think of a few ways to present that data. And maybe this wants to be like a proper SVG chart. Because previously, the flag thing is like a emoji chart. but I think it predated me pulling in the SVG library.
...43souphascookied I have found rails to be very comfy tho, especially with the automatically defined variables like "settings_path" in your case - always have to go all roundabout to make it nice like that in JS
All right.
We'll fill that in.
03:14:05calebhearth Do we need charts? Can it start with text and add visuals if things aren't clear from there?
m1guno I dont know which metrics you have at your disposal for lobsters, but i'm sure there's some good ones. and yeah, a visualization is nice. but overall, as a user, I'd just like to see some tangible information
Yeah, I like the route generation in Rails, although I fight with the pluralization.
Do we need charts?
Can it start with text and add visuals?
Yes, it can.
m1guno no matter the format
There's actually not a heck of a lot of stats built in for mods.
The ones we have in the mod dashboard are mostly pretty negative.
where it's literally a leaderboard of the most flagged users.
...57What do you want to say? Just kind of grab a couple of stats and we can improve this later.
03:15:29m1guno for a "good" metric: If a user has invited other users, this can be a metricβat least if the invited users (= the child tree) have good reputations, too
I called it showing user here too, didn't I?
...44m1guno i'd like to see that myself as a user because it means I'd be helping to grow and foster the community
Yes.
Okay, so.
...58And I'm grabbing this clause from down here, which probably wants to be a scope on comments.
Oh, yeah.
That would actually be really clever.
m1guno metrics like number of upvotes are more individual, metrics that measure my invitees measure my beyond-the-individual impact
Let's put that on the list of useful context.
Comments posted.
Uploads on your comments.
Uploads on your invitees comments.
03:16:53Yeah. Meguno, has somebody sent you a invite to the site yet?
03:17:02m1guno and, if you are a moderator, you can also list that
m1guno invite: no
I don't really look at IRC when I have the stream up.
No?
Is your email on your GitHub?
Is it on your personal site?
I guess what I'm saying is I'm looking for your email so that I can send you one.
Oh, here we go.
Got you.
m1guno https://miguno.com/
m1guno its simply miguno@miguno.com
so let's go to the browser slash settings so i'm pulling off the invite page off stream all right so mcgoon if you go check your email you should have an invite in it thank you
calebhearth Pick mine!
You've made a whole bunch of contributions.
m1guno cool, thank you!
calebhearth (also sent one)
It seems pretty obvious from how you're talking that you're very, very likely to be a positive contribution to the site.
Oh, your homepage has a different email than that.
m1guno why, thanks for the kind words
A number at Magoonode.
Oh, Caleb already sent one.
Thank you, Caleb.
m1guno yeah, that's for the web scrapers
All right.
m1guno @CalebHearth thank you!
Well, please just pick one because we asked the people not sock puppet.
03:18:59calebhearth lol true
m1guno my GH commit also have my email
m1guno *commits
m1guno oh, i said that to mean "I'm real" ;-)
yeah but it's a pain in the butt to clone your repo and dig through it for your email is there yeah okay so these are not any order
03:19:33Let's just grab the thing. Let's grab the whole thing. I think I can do this with a range, right? I learned that one fairly recently.
03:20:23calebhearth Oh hey I just saw the mastodon connection for profiles. Neato!
Yeah, the Mastodon connection is fairly new, and I just moved us
Well, actually the Mastodon account connection is separate from our bot that posts stories, but I did just move that over.
Can I do like that?
Oh, let's just see the SQL.
Greater than null.
Oh no, I have to say, I mean, I can put the thing in Ruby, right?
Right.
This is my my little interval object.
03:21:11Have a.
...19So there's the duration. These are I don't love these names because it's not obvious what they are.
...32So there is the units. No dirt is the number and intervals is the units. And what I want is to convert it into a, what does Ruby call these or rails call these just a time with zone. All right.
03:22:06calebhearth You need a unit
I think I can even just do that, right?
calebhearth days or weeks
Well, no, I need to public send.
Ooh, that feels dangerous because we're talking about user input but it's passed through the time intervals.
calebhearth oh I see
Yeah, that's what time intervals are.
Is there going to be hour, day, week, month, year?
So if I pass that down case, I think I can just do that.
In which case, this becomes where comments.createdAt is
interval dot ago no ago dot dot that seems legit so let's grab that and we will say dot interval at interval dot count and let's just print that value
03:23:41I don't need that anymore. Let's bring this up. Undefined method comment. It's not comment. It's comments plural. The where is angry because, oh, I don't have a inside the model. I don't have to contextualize the table name that way. So I was trying to get out of the string so that when ActiveRecord is doing a complicated join, It's not going to get mad about the table name changing or comments being self-joined. OK, so I got 21, which is for this test data is probably correct. Let's look at the query as executed. Yeah, there we go.
03:24:41Because that's coming from line 24, which is 21, line 17.
03:25:04Or higher up. Oh, there we go. Interval one month. That's that thing.
...21calebhearth I think ERB lines don't necessarily line up with backtrace lines
Just want to see the query.
It's the line number here.
Now, ERB lines do, and it is
Man, don't look into the deep magic that happened to make that work.
So this will be 125.
31, 125.
Here we go.
Comments with this user ID and comments created with this.
Yeah.
And that's one month ago in UTC.
Great.
Okay.
So we got the expectation there.
03:26:27All right, so this page kind of whipsaws between the last month and the last six months because of these stats.
calebhearth For this, maybe n-tile compared to other users who have commented in the same period?
And honestly, six months is a better default, but this could just use this new part.
So this recent scope can just go, because that was for that stat, and can become
03:27:41Yeah, Entile would be pretty useful, I think. OK, I missed a place where I didn't clean up recent. There it is. I think there's a lot of stuff that could be here, and I want to hit I just want it to wire up that thing. Great. And then I can change the interval to six months and yeah, for the default interview, let's go ahead and change it to six months.
03:28:37Mmm, so I just glanced over at the stream counter and it's it oh There we go.
So this is what this chart is supposed to look like.
calebhearth haha there are more results here than on the live page
So something I did with that boat was funny but the idea of this chart was You would see oh there are lots of little lobsters here who don't get flagged at all and then a few who get it some and
And then the user who would see the warning would be like, this person out here?
Or this person out here?
Yeah, Caleb, I've made a whole heck of a lot of fake data locally.
03:29:26That's why there's like... Oh, yeah.
Well, when I'm logged into my user account, the inbox is like hundreds of things.
Because very often I...
will grab snippets of the fake data and just make 100 replies to me to see what that page looks like or whatever.
m1guno Is that much detailed information necessary?
My account, especially in dev mode, is full of testy kind of stuff.
So this was the kind of chart that was here.
And Muguno,
Yes, this was very useful for dealing with the problem users years ago, but it has kind of faded out.
The general idea was to make it really vivid that when someone is getting heavily flagged, that is a meaningful feedback rather than, I'm just so right that other people can't deal with it, which was one of the deflections that people commonly had when they were jerks.
03:31:07m1guno I mean: Does it need 3 screen scrolls to convey the point in numbers?
jmiven I had never realized that it's the lobster emoji, thanks bad MS font
m1guno or sth like "97.4% of our users received less flags than you"
Does it need three screen scrolls to convey the point in numbers?
Yes.
Yes, it does.
That is the rhetorical point of this chart.
You have immediately put your finger on it.
calebhearth To me that looks like it wants to be a bell curve chart now that we're no longer trying to make the same point.
The point is, yeah, no, even the rhetorical effect of having to scroll past several screens of users to find yourself is to make it very explicit, both on desktop and mobile.
Yes, you are way out of the,
calebhearth quantitative
m1guno yeah, have all the books
norm it is i don't know if you've seen it so i often mention books on the stream there's a really good three books in an unfortunately four book series by edward tufte of what is it it's behind me on the shelf visual display of quantity
m1guno (to say: they are really good)
oh you've got them yeah all right then i won't lecture you about the books if you've got them but the idea was to make a chart that is vivid and dramatic so this chart of like one user received 70 flags so actually one of these
03:32:47I'm not seeing it, but one of these items should say literally the word you.
m1guno i was actually thinking of using a horizontal bullet graph to convey what the 3 screens are doing now
calebhearth I was looking for that on the live page and I don't see it there either
And for this test user, I thought it was going to be around like 10 or 11.
At the time I created it,
03:33:15calebhearth it being "you"
So Muguno, at the time I created it, the most flagged user was actually around twice this number, somewhere around the mid hundreds, mid 100, I should say.
And it varied by month, but it was like 120 to 150.
And at the time we got, well, I don't have to guess.
I can pull up the stats page.
And it must be uncached for production to take this long to load.
...59Yeah, so this was late 2017, early 2018.
So comment activity was something like just eyeballing it here.
So if it was 3,500 back in,
February of 2018.
And now last month, it was 6600.
The users the chart was made to address were getting flagged at a rate four times what you're seeing on this chart, because we had half the comments and roughly roughly half the votes and more than double the amount of flags in raw numbers.
m1guno So i think there are multiple purposes at play? I could imagine: (1) To convince a user who is open to feedback that they are really off the charts. (2) To have justification for moderators in case users who are closed to feedback question mod acitons.
so yes mcgunough the chart absolutely could be denser but the point of the graph was how sparse it was so if i put this horizontal so it fit on one screen
03:35:15m1guno Like, why do you need to visualize it
So number one was definitely the point, was to make it very vivid to people what extreme outliers their activity was, yes.
m1guno and what action shall it trigger
Justification for moderators, because people brushed it off.
m1guno justification might need a different approach
m1guno for example
The visualization was, I could tell people their behavior was extreme.
I could tell them it was unwelcome.
I could tell them it was unusual.
But for the folks who loved fighting, they would brush all of it off because that was just rhetoric.
It was just a couple of words.
It was an adjective.
It was a judgment call and they didn't like my judgment.
Seeing things in really stark numbers was undeniable in a way that
explaining stuff in words and in a couple of adjectives was not and i am aware it's a lot of vertical screen space to do so and it was it was needed i didn't have anything else there were so many conversations
So there's the moderation log, and I talked about the value of it.
m1guno i mean: "If you are not open to feedback for a <condensed variant of this>, then this is another strong signal that you might not be a valuable member of the community"
But the mod log doesn't, and kind of deliberately as a choice, doesn't capture private messages because having a message be public, even the fact of a message being public, turns it into a kind of public shaming and changes the rhetoric.
So a lot of the mod actions are just messaging people and saying, hey, this is kind of weird.
m1guno yeah understood
calebhearth There is text similar to: "Currently, users who see the warning have been flagged between 10 and 35 times.". I suspect that with the shift to a configurable window for this context, that copy will become incorrect.
And yeah, Muguno, I have written things very much like what you wrote.
And now that you have an account, you can pull up your slash context.
For you, it'll be slash standing.
pushcx lobste.rs/~m1guno/standing
m1guno yeah, im on the url
m1guno https://lobste.rs/~miguno/stand…
and i don't know what username i'm guessing you're going to choose the same one like this so if you go to well and obviously you won't be on localhost so i'm guessing at your username but that'll be the url for you and you can read the the text at your leisure but that text is also really hard it's
it's judgy and it's pointed and it is written based on having, I think I had that discussion variance on it.
Maybe in that first two years, let's call it 40 times.
And I want to say
only a handful of those didn't end up in a ban.
And if I had felt like I had more default trust out of the user base, because I was very new, or the community norms were a little more aggressively friendly, if that phrase makes sense, willing to defend the idea that the community should be friendly,
I wouldn't have bothered making the standing page that looked like it did.
And I wouldn't have bothered talking so long to the folks.
m1guno i think I'm asking the philosphical question or "the approach itself" question: In my experience, people who wouldn't get a shorter version of sth like the existing page, they will not get it even if spoon-fed right next to them
And part of the reason I can drop this page or revamp this page is that when someone comes in and wants to say, wants to talk down to everyone, wants to be a big jerk, you know, all the stuff that's down in the text of the page,
I'm more willing to just toss them as opposed to try to tutor them in basic decency.
03:39:50m1guno (i don't have mod experience like you, so i'm thinking aloud here)
Yeah, Muguno, I see where you're coming from, the word justification there.
The...
That's actually a really good point getting at.
So part of the purpose there was to show really vividly to the couple of trolls who were... God, what's the word here?
There are a couple of subtypes of trolls and some of them really like to try to...
get people riled up, especially at innocent victims or at mods.
And the page made it really clear to them that you are well outside of the norm.
And if you try and stir people up, I am going to publicly explain how far outside of normal behavior you are.
And I have the numbers to back it up.
There was more.
God, there was so much I tried in messages where it was, you know,
It's been six or seven years, so some of the details are faded in my memory.
I'd have to dig through the mod log or the mod note messages, but it was a ton of stuff around just explaining to people how odd and unacceptable their behavior was.
And there was a lot of like, you know, quit hitting him or I'm going to pull this car over.
It just felt like explaining basic decency to people so often.
m1guno Im browsing https://lobste.rs/~miguno/stand… Should I see a visual highlight where "my user" is on that vertical histogram?
which was strange to have to do with adults but i mean there are lots of communities where being a enormous jerk is normal and acceptable unfortunately meguno yes you should but you haven't written any comments and so you wouldn't appear so you're
You haven't posted any comments to get zero flags on.
You should probably be in the first section.
Ah, yeah.
m1guno that's what I mean
m1guno it's all gray
So the U I'm thinking of is there's a little div that says U on the tail of the line.
And I'm not sure what's going on with my test data or if something funny is broken in the query.
m1guno gotcha
Yeah.
calebhearth I don't see it either and I have a comment 24 days ago
jmiven I don't have any "you" or any highlight fwiw
so you don't appear because you have zero comments arguably you should be in the first section well if nobody sees you and i know both caleb you and jay miven are active commenters then it's bugged
03:43:19m1guno like @CalebHearth said, maybe a bell curve chart (likely not bell because it's not a normal distribution) with a pointer arrow that says "but you are the outlier right over THERE" would be an option to visually condense?
or this might not include you based on the yeah i don't want to dig through this query yeah at this point it could probably be visually condensed it would lose some of its rhetorical punch when you're not scrolling down four screens but that's probably fine
03:44:21All right, now, hold it.
...53m1guno the standing page reminds of an ascii roguelike ;-)
You know, Magudo, I have played a lot of ASCII roguelikes, so that's probably where I got the idea of let me just stamp out a lobster emoji for every user.
03:45:09m1guno hehe
I think the source of the bug may be that since the only thing that linked to the standing page was the warning that one was heavily flagged, it may not correctly handle the case where someone has zero.
because they definitely wouldn't see it.
calebhearth quick somebody flag me
So this checks in flags, which is, yeah, actually this is, you have to have flagged user stats.
m1guno how does a user navigate to the standing page in the first place?
So this one is gonna be nil.
m1guno I have not seen a link in my profile, for example
yeah so mcgunough that's what i was just saying prior to this subnav change the only thing was where is it the flag warning thing
so there is a red warning that would show up on a couple of pages that said your comments have been heavily flagged across several stories in the last this is going to say month please review your standing for context on how unusual this is there's some of that rhetoric that's historical now reconsider your behavior or take a break you could also talk to a mod about what went wrong or
You can delete your account if you prefer to leave.
So this red warning would appear on a user's profile and I think on slash replies.
I would have to check the source to think of every place it appears.
m1guno ah, ok If you're revamping that page to also include positive metrics, than i guess the standing page should also be found when there's no such red warning page
I'm kind of winding up the stream, but this is going on the useful context.
Useful additions to tilde slash context.
03:47:23calebhearth It's been a pleasure but it's my EOD, so I'm going to say goodbye for now. Be good!
yep that's exactly it mcguna so this is move profile new profile comment stats to standing new title and intro for the page and then we did the sub nav yeah caleb i'm i'm winding up the stream here too so this has been the lobsters office hours stream
m1guno I'm also leaving in a minute, goodbye caleb
The next one is Thursday at 9 a.m. U.S. Central Time, which is somewhere around 3.15 a.m. Muguno Time.
03:48:33m1guno so I arrived right in time as a new user to benefit from a new standing page with positive vibes! :)
jmiven :-D
Well, Maguno, I try and always talk about meta stuff.
m1guno thanks Peter for the stream and everyone else for the chat
Occasionally, these streams are all plumbing as I review pull requests or fix bugs and other stuff.
But I try to lean into things that touch on meta topics and community norms.
They're just more interesting to watch.
It's a value for office hours.
All right, so did a bunch of things related to this.
Definitely not done.
03:49:17jmiven welcome by the way m1guno π¦
Yeah, so next stream.
I think I'm going to do a bunch of this copy stuff off stream.
And thanks for coming by, Maguna.
I've appreciated chatting with you today.
m1guno @jmiven thank you!
espartapalma thanks!
think i'm going to do more of this copy stuff off stream because it's just going to be me beating text to death and then i'll have something to come back with and review yeah so this has been lobster's office hours thank you all for joining me i'm going to wind up the stream like i said next stream is on thursday in the u.s morning which is like mid after
patotato03 Bye cool stream
jmiven good night/evening all!
new in eu time who knows when australia time and as always thanks for joining me take care ah bye potato