If it doesn't come from the spam region of the Balkans, it's just sparkling self-promotion
Streamed
- Looked at some PRs, mostly stalled. The new one is LLM or junior code.
- Fix up a test failing from fixing up some length validations.
- Fun Rails code from fractaledmind.
- Deciding between Rails vs Django
- The big wooly problem of self-promo, the limitations of coding social rules, the limitations of mod judgement, trying hard to not create bad incentives.
scratch
topics:
* spin through PRs
* link shorteners, traffic stats (send_referrer?), llm PR (?)
* marketing/traffic attribution commit recently
* failing invitation test https://github.com/lobsters/lobsters/pull/1360
* https://gist.github.com/fractaledmind/410e519ccd51445cc10c3408b5f24d77
* worth browsing his repos!
* https://lobste.rs/s/xopqmh/sqlite_rsync_database_remote_copy_tool
* https://github.com/fractaledmind/solid_metrics
* self-promo
self-promo:
* why not say 'spam', 'marketing'
* new_user restrictions rather than recent activity
* authorship bump and non-author complication
* alice author, but bob submits alice's blog - want to recognize that alice's
commments on bob's submission are kinda self-promo
* https://lobste.rs/s/xryt9t/un_deprecate_big_my_plea_w3c#c_g1geao
* https://lobste.rs/s/utbyws/mitigating_content_marketing
* Origin https://github.com/lobsters/lobsters/issues/1352
* what's next? how do we make this more sophisticated?
* new user vs inactive
* inactive vs in good standing (got an example live on stream!)
* last 6-12 months, have you participated in non-promo and had it well-received?
* lurking + upvoting? no bc upvotes are trivial to fake and bad ones are noise for the whole community
* well-received:
* we have voting! so llm slop + thoughtless one-liner comments don't get attention
* unfortunate incentive to create sockpuppets + voting rings
* still gets to intention: there is no plausible, non-evil justification for sockpuppeting + voting rings
* adversarial - and everything is all feedback loops!
* currently don't have automated voting ring detection
* but it pops out when you read the site and see a weird number of upvotes
* a big chunk of human hardwiring is: is this person in the group or out?
* I've improved logs + switched to json logging to make this easier
* a standout feature of VRs is early votes by the same couple users
* improvements to invite system?
* how do we better acculturate new users so they have good expectations?
goals:
* improve community norms and discussions
* system has to be predictable and understandable
* so people can internalize + follow rules, and readers will trust them
* trust that they're well-designed, and fairly implemented
* visibile to other site readers without being a (strong) public shaming
* reduce mod judgement calls and _improve_ fairness of outcomes
* reduce false positives!
options for code changes:
* identify authorship/beneficial submissions
* either to one's own blog, or one's employer
* non-author submissions, good to recognize alice's comment on bob's submission of alice's site
* replace .new_user? checks with .recent_well-received_participation?
* on non-self-promo stuff!
* last 6-12 months
* inactivity/non-history for new users is sort of assumed negative, false positive risk
* https://en.wikipedia.org/wiki/1%25_rule
* want to see comments and stories with positive voting
* want to be sophisticated here (story suggestions example)
* based on the average activity of last two weeks?
* have you written comments on non-promo stories that were contemporaneously above-average?
* if a restriction fires, put it in queue for mods/more trusted users to consider
scaling interventions with spammy links:
* (new user restrictions)
* delete the link
* send the submitter a grumpy DM
* ban the domain with a note that it's for one year
* ban the domain
* ban the submitter
I go for heavier penalties when links are off-topic and submitter isn't a good participant.
HALTS: are you Hungry, Angry, Lonely, Tired, or Sick?
* Irene knew history, it's from AA
humans have social skills hardwired
every card with an odd number has to have a vowel on the back
------- ------- ------- -------
| | | | | | | |
| | | | | | | |
| 19 | | 8 | | J | | A |
| | | | | | | |
| | | | | | | |
------- ------- ------- -------
every person with alcohol has to have an age over 21
------- ------- ------- -------
| | | | | | | |
|beer | |coke | | 15 | | 80 |
| | | | | | | |
| | | | | | | |
------- ------- ------- -------
https://en.wikipedia.org/wiki/Wason_selection_task
also check out "Dunbar's Number"
https://mirlo.space/ worker owned coop competing w bandcamp
https://en.wikipedia.org/wiki/Big_Mac_Index
post-stream:
read gists https://gist.github.com/fractaledmind
thank djfpaagman for rspec version of that public controller action
find a new rails-for-experienced-devs go-to resource
find an apple employee about icloud deliverability
title:
it doesn't come from the spam region of the balkans, it's just sparkling self-promotion
twice as much ascii art this stream
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
02:23Happy Halloween.
I live in a big apartment building, but I'm going to get some candy and go sit on the front porch this afternoon.
Not a big trick-or-treating neighborhood, but somewhat of a trick-or-treating neighborhood.
And I think Halloween is a great holiday.
Ah, so hello.
This is the office hours for lobsters.
I can mostly remember my standard spiel.
This is where folks are welcome to drop in and ask any kind of questions they have about lobsters, the community, which we'll be talking a lot on stream if nobody has questions and queries.
Or Lobster is the code base, which I have some small coding stuff that I want to start with, but then we're going to jump out a deep code for at least a while.
And I am happy to run database queries against the production database if folks have those and want the iterative process of running those and revising those, because writing queries against just test data is...
Pretty clunky.
Otherwise, feel free to say hi as you pop in.
It is always nice to see familiar faces.
And yeah, that's kind of my outline for what we're talking about.
I wanted to...
I feel like I missed the opportunity to Halloween-theme this episode.
On the other hand, I do have an old goth
vim color scheme of black and slightly less dark what is what's the line from the the lego movie very dark gray that's pretty much my vim color scheme so it's already ready for the holiday i just need to change all the highlight colors to be orange instead of the occasional red or green too bad maybe next year so there were a couple of prs and we've seen
I think all but the last of these.
Now, I think we've seen these first three here on stream already.
This one was a work in progress that maybe is stalled.
These two were bug fixes that don't really fix their bugs, unfortunately.
frici Goth vim coding is sure a line to drop in stream at. Good morning and Happy Halloween!
This one
is an attempt at a bug fix, and I think I just reviewed it off-stream because it was real small, but it's a little odd.
Oh, hey, good morning, Preachy.
gmem_ good afternoon all
Yeah, I feel like... Yeah, I don't want to try and make all my highlights orange.
Oh, hey, GMam.
Good afternoon.
frici Hey Gmem!
gmem_ i'm over in the UK :D
See you over in the EU somewhere then?
I just had my my morning cup of coffee and it was maybe the worst cup of coffee I've ever made.
I only really started drinking coffee a year, year and a half ago.
And we have like a little UK afternoon for you.
That's why I do a morning stream.
I tried to schedule these as the Monday one is in the afternoon for folks who are on the US West Coast and then one in the morning for folks in the EU.
And then, you know, the India-Australia time zones are kind of SOL because I don't want to stream in the middle of the night.
Lobsters is, you know, primarily American, but everywhere that speaks English in that kind of Anglosphere way.
So it's a shame that it's really hard to hit those antipodal time zones.
But yeah, I don't make a lot of coffee and we just have a basic little...
cheapo drip coffee maker that somebody some friend gave us because they didn't want it anymore and today i managed to make one that was mostly grounds somehow coffee should not be gritty that was unpleasant the yeah so this this pull request was a fix that
would work if we were a standard rails project but flatly doesn't because we're not and either it is junior developer code but it is a little odd that it leans on rails ujs which is not a popular feature anymore so i i honestly wondered if this one was llm code it was like let's throw away
our JavaScript that would actually work.
And then this styling, I feel like a person would have touched it, especially because it, well, honestly, AIDR could probably have made that.
pushcx [post-stream note: Nope! I'm just wrong here: https://github.com/lobsters/lob… ]
But then it tried to use the button to and the data confirm that just wasn't going to work in our code base, period, flatly.
We have
08:16Yeah, we have one button too.
And I believe we have zero confirm if we have any.
All right, we have two examples of it, but they're dead.
Like this is not live code.
It doesn't do anything.
So that's why I kind of wondered like if this was LLM code.
And then the last PR I wanted to touch on was this current one that definitely hasn't been up on stream.
There was a bug I filed, gosh, a while ago, March?
March, where we have a list of link shorteners like t.co and Bitly.
And this kind of touches on, oh, good traffic data from marketers.
There's a commit I made a couple of days ago I should show on stream.
The
We used to have a constant that just kind of tracked these tracking domains and it had like 20 or 25.
And I was like, oh, that's great.
That's basically all of them.
And then every couple of months, somebody would find another link shortener and use it on the site.
And I would just ban it mostly.
And then I saw a list of URL shorteners that someone had put together because they had made their own shortener.
And anytime someone is shortening a shortened link,
They're probably doing something nefarious, like trying to set up phishing links.
And by redirecting through many steps, it just helps defeat some anti-phishing efforts.
frici I am not sure what % of π¦ userbase is on mobiles but I would assume even those would not be partial to having to deal with shorteners... honestly still see no reason to them.
frici They don't help users, and the def don't help accessibility so...
they ended up starting to maintain a list of link shorteners let me just grab this what percent of the lobsters user base is on mobile that is a good question i don't know the answer to
Yeah, link shorteners, they had a purpose back when Twitter had that 140 character limit, but that's been, what, 10 years since it had that?
Something huge.
And otherwise, I really only see them used for, what's that source?
Graphs, Heads, source link shorteners.
I really only see them used for traffic analysis.
So the feature that all of these link shorteners grew immediately was, okay, well, if you create a short link for something, we will tell you how many people click through that short link.
And so when we get link shorteners, it's almost never because we tattle on them.
When someone tries to submit a band domain that goes into an internal mod note system that I review every couple of hours, typically.
if not every day, even when I'm on vacation and I see these things go by and it's like some small percent is people actually now it's mostly just people who are copying links that happen to have link shorteners versus every once in a while, it's a marketer who wants to know how many people are clicking through their link.
And we do a bunch of stuff to disrupt traffic stats.
frici for marketing tracking yeah which eh, i do understand why but i also just abhor that HahaSweat
Yeah.
Before I lead into that,
12:09making a note on the to-do list here let me finish the thought on link shorteners so this guy person made a list of link shorteners and the current list is 2300 longs 2300 link shorteners and i want to say we have something like 23 link shorteners so we have like one percent of this and a bunch of these are are one-off random spammy things but I feel really good that we would have a roughly 0% false positive rate if we just banned all of these. So I submitted a future request that we should follow this list, which is very nicely maintained. And someone submitted a pull request for it, and they've already worked through the list of... the basic feature to grab this list and insert it into the database. And this was one more place that I was thinking I was seeing LLM code because there was a really... Oh, is it gone now? Oh, no. So this list, if you look at this list of domains and we can scroll the whole thing real quick. This is the output from their little database and it's a text file with 2300 lines and it's just all the domains, right?
13:53But then the code base has reject line.empty or line starts with hash. Why is that there? This feels like an LLM hallucination to me that somebody said, take this list of domains. And it is so common that plain text lists, especially that end in dot TXT will have separating lines and comments that the LLM spit out code to do so. And the coder just accepted it. I'm not trying to accuse this person. It's just not helpful.
14:36So I might as well ask in a general way.
15:02There also was a... very naive and not at all specific to our code implementation here where they just grabbed all domains out of our database. We have something like 30,000, which is not an impossible number of objects, but it's only gonna go up. So, yeah. The verbosity of the logging also felt kind of LLME. where most developers just write Unix scripts that don't print things. The LLM bots seem to love including real spammy progress meters and things. So this was odd. It looks like it'll work fine, but it also clearly won't run. I wasn't sure how to handle it, but if you look at this, the last couple are emoji domains and our domain model will not accept these. You cannot submit emoji domains to lobsters. So I know that they literally haven't run this against a dev database.
17:06frici I am of the "shut up unless error" school. no successful or similar logging. only log problems. I don't want to see things work... I KNOW they work i'm over here. tell why or when they broke so i can fix them instead,
Yeah.
I think the shut up unless error, especially given that this said, I'm going to run this daily by cron job, you really want to shut those to shut up unless and so that's either very junior dev code or it's LLM.
There was one other thing is the the build is failing.
because of some other code.
And I'll talk about that in a second, but I wanted to finish out the thought of link shorteners.
So there was some code I recently did.
Where'd it go?
Oh, so maybe, was it last stream?
Yeah, it's Thursday.
So last stream, I demoed Recheck, and I've been continuing to alpha test it against the Lobster's database.
And so there are a couple of...
commits here that are me cleaning up weird data issues oh there was a big one actually it was this was such a weird one it's just here in the last page or two somewhere before
oh speaking of llm this site was desktop on fire was very clearly llm slop they this post was just a rewrite of a project's readme and then they had another one about haiku mail that was they clearly fed the forum post where someone was like hey check out this neat thing i made for the haiku community because the blog post was
like many responses include and it was just the next three forum comments so what i wanted to show was this mod log entry from three days ago where i compiled some old mod logs so this is real uncommon and i called it out in the lobsters chat room because i think one time i have edited a typo that i put in a mod log message
And one time I wrote a really bad log, mod log message, and like five minutes later, I was like, ah, shit, let me write something better.
And then otherwise, this is, I think that would make this the third time I have ever edited anything in the mod log.
And the other two were both within five minutes of posting to correct obvious errors.
This one was a little weird and different, so I called it out in the chat room to highlight it because...
Oh, I want to be incredibly conservative.
Having the mod log has been so, so valuable
for building community trust that mods are not doing anything sneaky and underhanded.
You don't have to worry that the mods are shadow banning people or secretly removing comments or pushing things up and down the homepage based on whether we like them or not.
You know, and that kind of trust is just, it's enormously valuable.
And I want to be really, really careful of anything that could in any way hurt it.
And even this kind of maintenance-y stuff is a reminder that if someone were abusive, if they have root access to the database, they could do any kind of abusive thing.
And so when I was adding foreign keys for another pull request,
There is one spammer in 2015 where the previous admin not only banned those users, but then went to the users table and deleted them.
My best guess was he deleted their user records.
Well, it certainly had to be either at the SQL console or the Rails console, because it's not a feature of the code base.
would guess they had a bunch of votes on other stories and he wanted to just clear out all of that data but i don't really know why because it was more than nine years ago so the mod log has a a user id column that points over at the user who was banned or otherwise moderated and these were just dangling pointers off to records that don't exist
And so I couldn't add a foreign key for future things because literally there was one spammer nine years ago who rendered this column not quite a foreign key.
So I wanted to do a pretty simple code cleanup or data cleanup, really.
And then I did enforce the foreign key.
So I wrote a message that's just, hey, here's the thing I did.
And I highlighted it to the chat room.
And I guess I'm beating it to death by talking about it here because I want these things to be real obvious that I don't want to play games with the log.
22:35so another thing i did was as i was going through stories that don't still pass their validations and there are plenty of these in the lobsters database just because validations primarily validations have been edited over the years but then don't apply to old stories so i spotted in the database that there were a bunch of urls One sec. Getting a little froggy. So I spotted a bunch of URLs in the production database that ended in question mark lobsters. And when I see the site name, you know, it pops out at me. So I did a query for it, and there were a bunch of folks who put either question mark lobsters, source equals lobsters, or ref equals lobsters. Nobody did the domain name of lobste.rs. They all did the name lobsters, which tells me it's people doing it by hand rather than serious marketers who are following a playbook. So I added a little code to strip those out and tattle on when people do it. There are a bunch of little features in the code base for trying to make it hard to attribute lobsters traffic. And when I say attribute, I mean get a good metric on... I posted this link to lobsters. How many visitors did I get from lobsters? It's interesting and like fun trivia for regular authors, just programmers who have blogs, but it is absolutely essential. Are you doing your job metrics for marketers? And they are required by bosses and wanting to show off the performance reviews to show, oh, I grew site traffic by 30% and they're going to have various charts in google analytics that break out traffic by source and so those url parameters are to help them make serious metrics that break out oh i spammed lobsters and i got 5 000 visitors or whatever the number is to give an idea of scale lobsters has on a typical weekday we have about 250 000 visitors that's my best guess for unique humans who view a page of the site and so it's if you looked at just the home page or regular visitors regular visitors is probably more in the 100k range given that programmers as discussed on the last stream are a really highly paid demographic there is a lot of money sloshing around the industry and so that is And especially valuable source of traffic and in the same way it's nice to build a factory on a river that nobody else is dumping factory waste in marketers like lobsters because there aren't a bunch of other marketers there. So the other feature I was going to show was.
26:00we when we link to a story there is an attribute on the a tag that you can have to not send a refer and when we first have stories for the first hour or so especially if they're not merged we do send the refer so if you are the idea is
If someone runs a programming blog and it shows up there, we want to show up in their analytics so they can see, oh, hey, this lobster site linked to me.
Oh, hey, there was a neat discussion.
I would like to be part of this community.
That's been great.
You know, we've gotten a lot of great regular contributors out of it.
But we stop after an hour because if we show up and it says, oh, you got five visitors from lobsters.
and you are a random blog author, that's a weird, interesting name and you will probably check it out.
If you are a marketer, it looks like we are a trivial source of traffic and you're not even going to notice us.
dpk0 stream breaking for everyone or just me?
But then also, you can't get good analytics to show your boss that spamming lobsters is you doing your job.
So I've done a bunch of stuff to thwart marketers.
Hmm, have I dropped?
frici yes heavy buffering
pushcx Not just you.
My little stream manager says I dropped for a sec.
frici and hey dpk
Yeah.
pushcx Sorry, it's rainy today. :(
dpk0 π
I don't know if y'all can hear me, so I'm also typing in chat.
Unfortunately, it is rainy today in Chicago.
dpk0 bad internet weather
And when it's rainy, my network connection is less reliable.
And it's
yeah it is literally just bad weather it was drizzly this morning it is going to drizzle again if the thread or if the stream just keeps going to i will call it off and come back monday because i don't want people to suffer and only be able to view the recording it is a thing i have talked about with the cable company but when you call the cable company
you say hey i have a bunch of packet loss at best they will do a speed test and the speed is fine but it's the latency and the packet loss that suck and so they're like oh you get 10 megabits because they're just
29:12pushcx I am literally getting cutouts while explaining why the cable company is bad at fixing cutouts, I'm sorry.
All right, let's add a note here.
Where are we on the stream?
...53All right, so I can at least turn on a little note for folks.
There you go.
All right.
We've given it a minute or so.
dpk0 it seems okay now
Can anybody tell me if you can hear me all right, if things seem fine?
My stream preview on Twitch is ridiculously behind.
dpk0 wait, it actually is caused by rain? D:
And I don't know if that's I'm actually behind or the stream manager occasionally gets itself in a broken state.
Yeah, so I call the cable company, and I say this thing happens.
Yes, I'm entirely literal.
This is rain.
God, I wish fiber went, right?
frici it seems to be getting better. i have 20s delay let me refresh
But we call them, and their analytics don't talk much about dropped packets, and so they don't really care.
But also when I call, they're like, all right, fine, we'll send out a tech.
And then they send out a tech three days later.
And when they send the tech three days later, it's not still raining.
frici oh ok it looks fine right now.
And so then they test the line out to the telephone pole in the alley and they're like, oh, everything is fine.
Yeah.
You don't have any packet loss issues.
And I'm like, yeah, it's not literally raining right now.
And so it's, it's so infuriating that because they have so much delay in their process of fixing bad connections.
They can't even detect that it's bad because by the time they come out, it's fine again.
And I spend a lot of time on the phone hassling them.
I almost, I don't know how to get the, how to motivate them to come out and fix it.
Also, all of the folks, almost all of the folks who come out are independent technicians.
they get paid a flat rate per job maybe that's just the installs where i learned that but they are incentivized to just rush through the job as fast as possible and so they do really sloppy wiring on the side of the building and it's a rat's nest at the termination box and any time that they spend diagnosing something bad the last guy did is time that they're not on the next job ah it's so painful i almost
Yeah, I don't know how to get it to actually fix.
I'm tempted to upgrade to a business line.
Maybe they would come and rerun a new line and just running a new line would get me a working connection that is not exposed to the rain.
I don't know.
Incentives.
So that's a long way of...
That's a long interruption from, I try to break the good feedback links that marketers need to know that they are getting traffic out of lobsters.
And I do that very deliberately because it is great to have authors on the site.
It is not great to have marketers on the site.
And differentiating between the two is hard, which is a theme we will be returning to.
What is it?
Is it two Rs?
Yeah.
33:53All right. So another nice PR that I merged a couple of days ago was installing Active Record Doctor, which is a tool for... No, it is a set of missing features and misdesigns in Active Record, I think. And i've talked about the single layer of cleverness mistake that rails makes, and I think that's why things like active record doctor and good migrations and strong migrations and all these other gems and rubo cop has a bunch of. rails migrations cops all this stuff layers on because. There was a bad call a long time ago and the design of rails and it hasn't been reversed. So we added a bunch of missing length validations to the database. And this test got flaky. So if I run it, spec models invitation, it might pass. It might not. I don't know what the odds are. They're pretty good at fails. But sometimes the test data it generates doesn't fit in the limit that we're actually enforcing now. And should have been for a while, but that's okay. All right, yeah, so I was able to recreate the failure. That's nice. But this test went flaky. So I think it's just in the factory for invitation. Nope. Then I guess I'm doing something in the invitation spec. But I did want to get this cleared up for the user. So we expected this error and we got... Oh, maybe it's the reverse, that we enforced a slightly different error.
36:28Let's pull it up and sort it out.
...37Oh, this one. Alright, so this one is me breaking things. Because I remember I bumped this to 375. Because there is literally one or two... Alright, it's not being flaky. It's me being flaky. Because I will admit, I did this one without... actually rerunning the specs. So it's just me breaking the build. There are like two memos in the invitations table that have a length over 255 and below 375. And I just I didn't want to destroy the old data. So I just slapped the validation up a little ways better. Maximum helps if I spell correctly. Gosh, the LLM would have spelled correctly. Maximum. Oh, I've got to say. And then we'll grab the SHA1 for my commit where I broke things and drop that in. And that'll at least fix the build.
38:00Good. And then this one is, the other side of that is, oh, I can't type this morning. Make sure that's valid.
...22Oh, and I didn't say it dpk, but hello, welcome, thank you for coming back.
...31Yeah, right. Got to put the... This is why I try and... Yeah, I don't want to destructure. I try to reduce duplication in tests. It's kind of a balance between are you over-specifying and repeatedly saying? Because now we've sort of violated DRY where we say 375 in the code and in the test, but also in the test of the message and so if i edit one thing i have to fix two things to fix the test but then because errors and is an array i don't want to just say is too long because then i have to pull out of the array well and then i can't assume it's going to be the first thing or the last thing in the array so then i have to say errors on memo filter to what the message I want and say that there is exactly one. That's just not an expressive test. Let me just duplicate rather than getting real complicated. All right. What is the SHA one of my culprit?
40:00Let's push that up so that folks can have it. Oh, what are we? I'm going to load this one off stream, especially given moderate. This is almost certainly a bug and something we don't actually use. Yeah. It is a potential denial of service in an XML library we don't use. So let's just bump rexml and make sure the tests pass. This is a pretty minor one.
...49And I'd like to include the... There we go. So I'm grabbing it off stream, but I'm grabbing the CVE number. I like to include these because every once in a while, you will see a commit message that says something like bump for commit. And I want to know why did we do that?
41:16And occasionally, you know, if I break something, I would like to know what I was thinking. And every once in a while, it is certainly possible that I'm wrong and it does affect us. So better to know that soon. All right. So close out this. So we've done the spin through PRs. We've done the failing spec and that kind of pull request review that really smells of LLM. Oh, I wanted to, as long as I was coding. So here's a good point to remind now that more folks are on the stream that this is the Lobster's office hours. If you want to talk about anything about the site of the community, you can pipe up at any point. And it is great to do that right as I finish a pull request or a bug. And I am just about through my to-do list into the thing that's the big bulk of today's of talking about self-promo. So I saw this go by on Blue Sky. This person, Fractaled Mind, who, if you code Rails, I would suggest actually poking around his GitHub because he has a whole bunch of interesting repositories. I should poke around his gists at some point. Let me put that on my to-do list for after the stream.
42:52His repos are just interesting.
How do I... Will this take me to his profile?
No.
Will this?
GitHub.
Ah, there we go.
anshulxyz I like this /tmp/scratch thing you do, I've started doing this
This tiny button down here.
See, he's got a couple of interesting repos, and a lot of it is half-finished.
Oh, hey, Nushu.
I believe you are a returning chatter.
Thanks for coming back.
Yeah, you know, I started the, if you go back to the first stream archive, you can see me figuring out this Scratch thing in real time.
You know, one really minor thing I will highlight is you say slash TMP slash Scratch,
I actually put it in my temp directory that's in my home dir.
Even though this is a single user machine, I have this habit of, in my home directory, I have a dot tmp that is my personal scratch directory for temp files.
I also have a dot bin.
arh68 lol wasn't there an "against /tmp" post
You may see that go by.
And I have a dot in front because I don't need to see them all the time when I run LS.
arh68 also happy boomtime errybody
I mean, tilde is a wreck of hundreds of files.
anshulxyz haha there was @arh68
You know, it's one of those, the standard practice for your tilde, your home directory is either it's perfectly empty or you have like 900 files in there.
And I am in the 900 files of messiness.
Is it boom take?
44:38No, I think that was a couple of days ago, ARH.
arh68 ya I'm not trying to be accurate lol
I'm looking at my D date.
Today is Prickle Prickle and it is not the holiday.
dpk0 900 files club β
All right.
Ah, okay.
So the reason I have this is the system-wide slash TMP is deleted every time you reboot.
And so if I kept my scratch file in there, I would lose it pretty regularly.
Especially my desktop, I don't reboot it very often.
But every once in a while, especially if I'm playing games that don't have great Linux support, I manage to crash it even.
Or... Oh, the one I do fairly regularly is I manage to fill up my root partition.
And if you fill up your root partition, things get... Lots of background processes get really sad.
And some of them can't recover very well.
Who is it?
dzwdz i have a really bad habit of keeping "temporary" stuff in /tmp/
I'm not remembering, but there's some service I run in the background that if it runs into a zero disk situation where it can't create files or can't lengthen its logs, it gets into a broken state where it doesn't recover if you fix the, you know, if you free up some space.
dzwdz great way to run out of ram
And so I end up rebooting for that kind of stuff.
So I don't want to keep files in slash TMP because I would absolutely lose them.
dzwdz hi
Ah, hey Deezy, good to see you again.
So anyways, Fractaled Mind had two things that I wanted to highlight that I thought were really neat.
46:33Let's see, where is it?
pushcx https://wafris.org/blog/rearchi…
I had this blog post, is it in the history?
Yeah, so I know these guys, the Wafris team, Michael and Ryan, they wrote this blog post a couple of weeks ago.
And I think if you read down at the bottom, you will see my name, because I read a draft of this and I gave them some suggestions for, here is some inevitable criticism you will get from the comments on HNN Lobsters, and you should address that before you get it.
And there will be some of that like, anyways, but you can improve a post.
So I know these guys.
They have this service Wafris, which is a WAF for web apps.
And it has to store a bunch of IP reputation data and bands and traffic stats per IP.
And they originally built their whole thing around Redis.
That's why it's called Wafris.
It's a WAF that runs on Redis.
I don't think they're going to rename.
But they're dropping Redis, which was a pain in the butt for people to deploy.
with SQLite, which Rails is, especially Rails 8, is really leaning into.
And I think this is a really interesting architectural improvement for Rails that's going to be big for the next couple of years.
And I've been thinking about it a lot since DHH's Rails world keynote and since that blog post of what does a web app do if it has this SQLite database alongside?
It is not your full-featured transactional database, or it is not your full-size transactional database.
It is just a local database.
And FractalMind, Steven here, created the exact idea I had, which was, oh, it would be really nice to do exception logging and stick those in a local SQLite database, because you don't need those to go into a shared production database.
They don't need to be
pushcx https://lobste.rs/s/xopqmh/sqli…
copied between hosts and then there is also that combines really nicely with this recent sqlite rsync feature for yeah let's say so if you have
So if you take your errors and you log them to a local SQLite database, and then on some intermittent basis, you use SQLite rsync to roll them up to a central monitoring service, you have all of the benefits of an error monitoring SaaS, but you can run it totally on-prem without a lot of extra moving parts and without
the very pricey SaaS services that do exception monitoring.
And they're pricey because they have to keep a lot of data hot because they can't know which customers are going to log in to look at their errors at any given second.
And so they have to keep all of that in OLTP, even though the workflow for these things is either you are
top of it and you look at your day's exceptions basically every day and you fix the most recent one or like every so often you come trawling to see historical data and you are searching to see other instances of an exception you've identified but they can't tune to that workflow very well because they have many users and they have to keep everything hot in OLTP so they are running expensive services
And so they end up charging for that.
This isn't any kind of knock.
This is just the data is driving the business model.
50:43So I really think this solid errors, once it gets past this current bug, I'm really tempted to add it to lobsters. I think it would be a really nice little improvement. And I think this has really great potential. He also had the other idea I had, and this isn't implemented yet. But the other thing that looks very much like exception monitoring is performance monitoring. And this one has all of the same business OLTP hassles of exception monitoring, but a million times worse. So APM, application performance monitoring is, okay, for every request, let's record some stats, like how long did we spend in the database? How long did we spend rendering templates? And can we catch any N plus one errors? And then let's log it to a dashboard. And then hopefully the users will log into the dashboard and look at those and make performance improvements on the regular. realistically they will do one big burst when they sign up and then in response to acute problems they will log in every couple of months and look at stuff but an apm service a sas has to keep it all hot so they're real pricey i would like this for lobsters and we briefly had apm services donated by scout and it was quite nice i caught a couple of issues but They didn't want to run that indefinitely and I don't want to take business services for free indefinitely. So Steven here sketched out, you can see this is the default gem readme, but he said, hey, what if we did that same thing where Rails apps log to a local database and they logged all their metrics and then you can roll them up occasionally because unlike David Price- lobsters most rails web Apps have multiple hosts, especially if you're a commercial service. David Price- So i'm watching that one a couple of people volunteered. David Price- So I really like his thought process, because he has my exact same ideas, but he's actually implementing them I love him right.
53:17Yeah. Oh, this is neat. This was not here 51 minutes ago. I was gonna say these comments were not here when I was looking. So I wanted to yoink this code and someone has improved it. So I will yoink this. So it is a nice little test that says,
...58In Rails, and I don't totally love this about Rails, but let's look at a controller real quick. Yeah, hats controller. A controller is a class. The various actions that users hit are methods. And if you have other helper methods, they are just methods on the class. And ideally they will be private so that you can't accidentally expose them via the routing, which is over in a separate file. And that's good, but it's then very easy to make edits that don't consider. And so I really like this spec that says, If there are any public actions on the controller, there should be a route that points at them. And if there isn't, you know, if there is a public method that isn't routed, that's just a misdesign. You're setting yourself up for future hassle. So I saw that and I was like, oh, hey, that's great. I want to adopt that. And what are we mad about? Do not define constants this way in a block. Standard, that's not helpful. Do you want me to just do it outside? Will that make you happy? I guess it will.
55:35I don't have to name that. I can just say describe. Don't tell me not to use const get. Oh, I will fight you on that. That's replace constant. This is I'm puzzled by this one because this is kind of the standard way of going from a list of really nobody turns that up. I want to see the discussion about const get because Maybe they're... That's not a useful string. Algolia is splitting the word at the punctuation and then giving me nonsense back.
56:49arh68 uhh what is const_get ? is that like getOrDefault
Describe class.
What is const get?
No, const get is a Ruby feature so that you can get at a constant.
So it's for metaprogramming and reflection.
So if I have class who, great.
So I can say who.new, right?
If I'm in a context where I'm introspecting,
You know, I never know the hair-splitting difference between introspection and reflection.
If anybody knows, please tell me, but otherwise you're just going to hear me equivocating between the two.
Maybe that's a mistake, but I don't know.
But we're saying we're going to loop over all the controllers, and we're going to loop over all of their actions.
But since actions are public methods, here, class, boot, def, a...
57:55Oh, the pager is getting in the way. I got to fix that one in my config. All right, so there's foo again. So if we're iterating over these things, and if we're iterating over classes, we could say object.onstget So if I want to get at that, I can then say new A. So it's useful in these introspection places where I am doing things like find me all classes that are in my running process. And that is a weird thing to do, but it is super useful for things like test suites. So in mini test, Well, Minitest doesn't actually do this. Because I've read that code. No, RSpec doesn't do it. Occasionally, there are a few non-sinful reasons. And I say non-sinful because there is usually a nicer reason or a nicer method to do it. But in Ruby, as a very dynamic language, you can introspect on basically everything. So you can say things like, Object space dot, what is it, classes?
59:40Yeah, you can, where is it?
...49I'm grabbing a quick Google here.
You can use object space to iterate
over all defined classes or even all defined or all loaded instances of those.
It is useful in testing and doing really weird things and one-offs.
It is not a big thing you would do in production code.
But here in this test, it is saying, we are going to iterate over the list of controllers and Rails is giving that back as a list of strings rather than a list of contents.
constants, which is a little odd, actually.
dzwdz why is that useful for testing?
Maybe I can just improve the spec to not need that.
Is there a way to?
No.
So what is it iterating?
Application routes, routes.
Why is it useful for testing?
For testing, do we have an instance of it here?
Yeah.
Of course it's user.
Where is it?
01:01:15Oh, this is old code. I have a different way of doing it. But...
...23Occasionally...
Because Rails manages the control flow of your request, you want to inject into it testing code or testing tweaks into it in a way that is not straightforward because of how Rails is managing everything for you.
And this is kind of the canonical example where we know at some point in the request cycle
some hook is going to say user.authenticate with a password.
And we are not executing in a context where we can reach into Rails and grab or override or monkey patch out that exact call.
And so this testing helper allow any instance of
So it's going to take this class user and then it goes and finds all of the instances.
And I believe the way the RSpec feature works is iterating over object space to find all instances of the class and hooking them so that when they get a call to authenticate,
They confirm that they're getting the argument and then they stub out the method.
dzwdz that's cool
So this is a way of doing spooky action at a distance in testing where, yes, the right answer would be to re-architect everything so that it would be easy to inject a dependency.
It is, yeah, it is cool for testing.
It is also,
Oh, is it a loaded foot gun?
You have to be real careful with this one.
And it usually points at a design issue of you are missing an opportunity to do dependency injection or some other kind of object oriented service.
But every once in a while, it's just an invaluable escape hatch.
So over in the
story spec we have some yeah so like in the story spec when you submit a url and this spec just loads up some test data we know somewhere in the story model it's going to instantiate sponge and i didn't want to
edit it to take dependency injection of the model.
Even though it's a one-liner in Ruby, I just didn't want to edit it at the time.
Maybe this is a bad idea.
But it lets us just reach inside and say, all right, we're going to stub out, we're going to fake out this network call so that we can test the code we want to without doing the strict thing to implement a test seam.
And so, you know, every time I see any instance of it is handy, it often points at a design issue, but I do love having these escape hatches.
Just as long as you look at them and you're kind of like a little suspicious of them, that's fine.
The other thing is you can put expectations on things.
It is possible for this to be a pass through.
where you say, I just want to confirm that the code called sponge.fetch, I'm not going to stub out the method.
I just want to make sure that somewhere in there it happened.
This is really nice for testing side effects where you're like, I want to make sure we call this third party API.
I'm actually fine even if the test does it.
I just want to make sure that that happened.
That is the thing I am testing is the side effect happened.
So that's the idea.
01:05:49I don't know. Let's see. Lost my train of thought. Where was I? We were looking at these codes. So const get rails. Is there a nicer way to introspect on these controllers?
01:06:09Yes, we can. Not in the rails console. So we can get that.
...26Doesn't look like Rails immediately has an easy way to ask it for all of the controllers it knows about. And it does a clever autoloading thing, especially in development and test modes. And so it's not like it's preloaded them. So I can understand why Rails itself doesn't even know the list of controllers. So then this spec asks the routes, and then it iterates over. So this first routes call that gets the routing table, which is the object containing all of them, and then it's going to iterate over each of them and collect the controller from each. So it makes sense that that's a string, because in this context, in the routing table, they are deliberately strings. They haven't even been loaded yet. So I think I'm fine with that. What is standard RBMAT about? This one is Sorbet. Actually, the RSpec one was Sorbet too. I started adding Sorbet to recheck, and then I ran into that bug where it was wrong about how data.define worked. Yeah, spec, routing, controller.
01:08:01Uninitialize constant rails. Oh, we don't have that. What's the header? Rails helper. I can never remember if it's a relative require or what.
...21So I added Sorbet and my linter picks up that Sorbet is installed.
And so it tries to Sorbet test everything all the time now.
So I have a bunch of these spurious things.
Ooh, and it immediately caught two bugs.
That's great.
I mean, these aren't strictly bugs.
They're just untidied code.
Comments controller has render created comment.
Yeah, it should definitely be private.
Right.
Unless render created comment is kind of a helper and it's not, and then invite.
That's an odd one.
I don't immediately recognize it.
Oh, this one.
is an old action, but nothing points at it.
Does it have a, no, it doesn't have a template.
So this is just dead code.
gsora_ hello pals!
Maybe I moved this out to the invitations controller.
Maybe it's a stub, but that's just old dead code.
So then the other one was the, oh, hey, GSora.
The other one was the comments controller.
Yes.
Before I leave this file.
Let's leave in a handy link to this gist.
01:10:12I don't know if y'all can hear it, but the cat is playing. So he's fighting some stuff on the floor if you hear him meowing.
...23I have a noise gate set up so you don't hear trucks in the alley, but he might be loud enough. All right, where are we here? Where's the water line for private? I'm going to PR. Let's just sort these by name.
...49gsora_ cat's fine :^)
I saw the other day somebody, just yesterday, somebody wrote a bunch of higher level RuboCops that were trying to sort out methods according to Bob Martin's principle.
And so, of course, just seeing that made me
arh68 haha that guy is an interesting figure
unreasonably mad because i disagree with almost all of his code advice great there we go let's check if it's actually happy with this or not yeah it doesn't like const get yeah let's let's maybe not rabbit hole on that one guy who has
You know, if we start listing the things that he is wrong or irritating about, we'll never get to any code on the stream.
So.
All right.
So we got this.
I don't think there is a nicer way to look this up, so I'm going to just disable row cop, row cop slash.
What's the name of this?
01:12:13No, it's sorbet. Sorbet is mad at me. Oh, yeah, because I wanted to add sorbet to lobsters, but it's such a big project, and it's limited utility until you get a fair amount done. Did I get this wrong? Ah, it's RuboCop colon. There we go. Mostly remembered.
01:13:16That's a good justification.
...22So if this runs, that's kind of the end of the code stuff I wanted to touch on, and we can roll into the big self promo meta discussion brain dump slash how do we use our big clunky code fingers to enforce very subtle social rules. okay these are fine and i should probably bump rubocop at some point all right let's do it from here
01:14:35I think if I app mention someone, I don't think GitHub is going to send a notification. I do like to give credit.
01:15:13Oh, this is such, why am I not writing this sentence?
...21There we go, that's good enough. All right.
...34So, oh, let me push those commits, right? Because we've had, yeah, I could just throw those up.
...49So self-promo is an infinitely large, endless topic that we will return to forever because it is about people's intentions and trying to harness them for good. It has been a long running thing on the site and will be forever. So I will just kind of move the ball along. Oh, where is the thing?
01:16:36i want to send this guy a quick email because i appreciate that so we have some guidelines and i added these fairly recently to lobsters maybe a year ago just trying to formalize things and the self-promo one is a little bit rough but I was trying to give a rule of thumb and some kind of stick your finger in the wind. What are we talking about here? So I wrote, it's great to have authors participate in the community, but not to exploit it as a right only tool for product announcements or driving traffic to their work. As a rule of thumb, self promo should be less than a quarter of one's stories and comments. This is pretty short and straightforward of, And I just, you know, I showed you the... What was it called? Oh, I didn't put it in the list here of topics, but the...
01:18:02When I showed that marketing traffic attribution, what I didn't show was if you, oh, it's still here in the Mod Log. That's why I kept this tab up. There also was a couple of dozen articles in our archive and I searched and replaced them. So this guy, Kevin Burke, was individually like half of them, where he was using this parameter to attribute our traffic so he could track how much traffic he got off of us. He's wandered away from the site, but there were a bunch of these where either they end in Question Lobsters or, I guess I did that one last, where they include this traffic attribution. So there's like just one page of the mod log that's me writing a little script to clean those out. So that goes to this.
01:19:07The fundamental thing going on here is what's going on in your heart. Because if somebody's intentions are good, we tend to get really good results. But I am not Anubis. I cannot take out anybody's heart and weigh it. I just have to look at their actions and judge them based on the sum of their actions. And there is a lot of self-motivated reasoning and justification. So I didn't write spam and I didn't write marketing because these are not all commercial. They are sometimes people who are just really enthusiastic. about the thing they made and that is great but sometimes people have that enormous level of enthusiasm for their 10-minute blog post every single day and lobsters doesn't look really good if we get just an overwhelming amount of stuff from one person like that yeah I don't want to highlight anybody but like old names are coming to mind and We have a bunch of stuff that is trying to get at these restrictions. And a lot of it is tagged to new user restrictions rather than recent activity. So one of the places what code we do have falls down is it affects people who have signed up in the last 70 days rather than people who have been inactive for years. There is a very common pattern where people create an account on the site and then don't use it. That is totally normal. That is every website ever, whether it is a forum online or a commercial service, it is totally normal that some significant percentage, when I say significant, I would say half to 90% is a typical rate of people create accounts and then never use them or They create them and they forget about them two years until they join that hot new startup. And then they want to post about their startup's product. And then they come back to Lobster's, which is full of nerds. And it sort of looks like hacker news. So let's post on Lobster's. And they are more than 70 days old. And so they skip right past all the new user restrictions that probably should apply to someone who hasn't logged in since they created their account two years ago. So that's one place our code is rough.
01:22:14Another part of it is... Oh, I'm in the wrong directory.
...38dpk0 i think for another feature request i suggested a combination out of age and activity to determine user newness? (minimum number of n comments + stories submitted)
in our story ranking which is the story models method calculated hotness yeah dbk i think i think that's going to be part of what this code has to look like is something like a a sliding window based on
how well one's activity over the last six months or a year has been received.
And that's also part of why my previous attempt in the mitigating content marketing post, and I'll come to that on the stream in a few minutes, but you can pull it out of my blue sky or mastodon.
and I think I even mentioned it in chat this morning or linked it in the chat, is... That's a big part of why that was ham-handed was it wasn't time-sensitive.
And when I say ham-handed, let me be specific.
I mean...
gsora_ OT: are you enjoying bsky at all?
It had a false negative rate, which is it failed to detect some amounts of self-promo, and that is a lot more survivable than a false positive rate.
If false positives are high, we're SOL.
Am I enjoying Blue Sky?
Yeah.
Yeah, I like Blue Sky a lot.
I like it significantly more than Mastodon.
When...
I'm trying to not be spicy.
Approximately two years ago, when the Twitter diaspora began in earnest, my experience was that all of the programmers I followed on Twitter went to Mastodon and everybody else went to Blue Sky.
If they left.
You know, it was like most of the programmers left and 10% of everybody else left.
And
gsora_ yeah i noticed the same thing
The Blue Sky is just a much more pleasant place to be than Mastodon.
And it's more pleasant as a technical product.
The UI is nicer.
The app is nicer.
It is much, much less buggy.
anshulxyz is bsky active?
It basically doesn't have significant bugs the last six months.
And...
The feature set is better.
gsora_ a lot
I like that I can retweet, although I guess it's repost with comments.
Because a lot of what I want to post on the socials is a yes and to somebody else's neat thing.
And I literally can't do that on Mastodon.
And so it's just endlessly frustrating to look at Mastodon and then not be able to promote neat stuff.
gsora_ i don't understand why the masto community is so opposed to quote posts, i enjoy the feature as well
And then also there's a little bit of a vibes where Mastodon got a lot of people who are zealous about the word distributed.
And for them it has a whole bunch of moral connotations that it does not for me.
I am unpersuaded by a lot of the moral arguments around it has to be a distributed system.
It has to be totally decentralized.
It doesn't push any moral buttons for me.
I look at it very practical, and the results of it have not been super positive.
And then having folks show up all the time to scold people about...
gsora_ in the end, all we want is just have a good time with your friends
being on a centralized service, that doesn't matter to me.
Those people are really tedious to me.
They're not actually engaging with the concerns I have.
And then they are really moralizing about concerns I don't have.
And the combination is unpersuasive and unpleasant.
So Blue Sky in the last two months has doubled from 6 million users to 13 and a half.
totalecl1ps3 Aight, as a Django dev, looking into RoR, how do you like it?
mjiig I think quote tweets were both a very useful feature and also used to be very mean to people, and people's opinions of them are shaped by how much of each of those they experienced
is i believe the stat i just saw this morning the big x having a big crisis around brazil drove like three million people and then announcing a week or two ago that x was going to remove the blocking feature or basically neuter it to the point that it's only a mute feature is
drove the other couple of million.
And all of a sudden, in the last two weeks, a ton of programmers came over to Blue Sky.
So...
I find it pleasant in a whole bunch of ways.
Oh, Mastodon also has accessibility problems.
gsora_ *A lot* of interesting programmers people came to bsky yeah
I hate animated stuff, and the other day, maybe a month ago, the Mastodon mobile app showed me
strobing gif and i tapped to try to stop the strobing gif and it just made it full screen and i have on my user setting i have turned off autoplay and on the phone i have set prefers reduced motion and on the profile i have set prefers reduced motion and so it's like there are like five different settings on top of jesus don't autoplay anything that's obnoxious anyways
So I uninstalled the Mastodon mobile app and I said some snarky things about it, but just if their primary concern is we have to have a distributed system and not we have to have a usable system with a pleasant community, we are not ever going to mesh.
So TotalEclipse, hi, welcome.
So as a Django developer looking at Rails, how do I like it?
So I have a...
kind of unique background.
gsora_ oddly enough the masto community is also very active and vocal about a11y
gsora_ sorry for derailing the convo :^)
I have done Python and Django professionally for years, and I inherited a code base from Adrian Holovaty, one of the co-creators of the Django framework.
So this was 2007?
totalecl1ps3 Okay! yeah!
No, geez, sorry, you're fine.
The point of these office hours is to talk to folks.
They are not just for me to show you my neat coding chops and hear the sound of my own voice.
I would rather talk about stuff that's interesting to the chat than just present.
So Total Eclipse, I've inherited a code base from Adrian Holovaty.
totalecl1ps3 A lot of this file looks similar to Python, just a little nuances here and there
So I have seen Django.
There are a bunch of features in Django that make a lot of sense if you are using it.
as it was written, so I used it in the newsroom of the Washington Post
to make stories that were related to news events.
pushcx https://push.cx/tags#washington…
I can't remember my own URL structure.
Yeah, here we go.
So if you look at these posts on my blog, you can see a lot of the projects I've made with Django and the ones where I was maintaining stuff were code that was written by one of the co-creators of Django.
So there's my little...
claim to fame being close to somebody.
So I have seen Django as intended, and then I've done a lot of Rails too.
I think they are very, very close together.
I think Rails has a slightly bigger community and a little more momentum.
The style of it is very different because Ruby is implicit and has magic, has things like const get, as ARH pointed out and asked about earlier.
So for me, it's largely a style concern.
Actually, the biggest difference between the two I see is addressed by Flex, where I was just talking to
The primary author of this, Josh, is it Draper or Draper?
I don't know which way it's pronounced.
I met him at Madison Ruby early this year, and I really like his libraries.
There's something about his API style that really just works for me.
I find them very comfortable and predictable.
And they're coming up on the next release of Flex.
believe it's 3.0 i was just talking to him on on blue sky of all things to type together two conversations and it's views that are more explicit in the same way that django is more explicit about views where you have to pass explicit arguments to your views rather than
Rails is quasi-magical foot gunny.
totalecl1ps3 Yeah, render(request, template, context), etc?
All your controller action instance variables get copied over to Rails views, and they are variables there.
I don't, yeah, so the render, and you have to be, the thing I like, here, let me just show you this specific thing.
The thing I like about flex is there is an explicit render call and you have to be explicit about the variables, you are passing in where rails is mostly coupled implicitly.
and Here's an example of this and only recently.
It has grown this feature for partial templates to say, okay, these are the arguments I care about.
frici did the rain start flexing on you instead? again NotLikeThis
Cause it was just, it's been very frustrating and expensive and error prone maintenance to understand, to understand what variables a partial needs present to work.
You have to just read the whole partial because they're just local variables.
Oh no.
Is the rain killing me again?
I'm sorry.
It's not raining, but yes, I see that the stream spinner is getting funky.
Let me know how much you missed, and I'll back up.
But Rails partials have picked up this feature for naming what local variables they need passed to them.
And it is addressing kind of a misdesign, I believe, where everything was implicit.
So yeah, if I was choosing for a new project, I'm more experienced with Rails and I would just default to Rails.
If I didn't know either, I would look at what libraries I'm going to need.
So if there's a really nice Python library to do blah and my web app is about blah, I would use Django.
totalecl1ps3 Right, which there's some instances in Django where the templating engine requires a |default flag to be passed through to be able to function when needed. kinda error catching in a way
If there is a really nice Ruby library for blah, I would use Rails.
Or otherwise, if you have other people you are going to be collaborating with, or you have a senior developer who is a friend and knows one of the frameworks really well, that's how I would pick.
I think they are both excellent projects from healthy communities.
You're not going to choose wrong when you choose between them.
So either way, best of luck.
01:35:04totalecl1ps3 Awesome! is it very batteries included like DJango with ORM's, auth, etc?
All right, so Rails versus Django and Blue Sky versus Mastodon aside, we were talking about how story ranking is influenced by self-promotion.
In this ranking, we call user as author to see if the submitter of a story
is the person who wrote it.
It's just a checkbox on the story submission form.
Rails, yes, has batteries included with an ORM, an auth, and a million other things.
totalecl1ps3 Thanks! I'm a django dev with 3yoe with it, just was curious!
Assuming you are a...
...56pushcx https://www.railstutorial.org/
I think it's org, or is it com?
Honestly, if you're three years into Django, that should probably answer your question.
Just use Django, unless there is some feature in Rails that is really compelling.
And I would look at Action Cable for where some of the interesting stuff is happening now.
I don't think Django has an equivalent to that.
If you have the budget for it,
This is the Rails guide that I would give to an experienced programmer.
I want to say it's like 30 bucks.
It's 40 bucks.
Why is there a monthly fee?
It's a book.
Why does a book have a monthly fee?
Oh, it's not a book anymore.
It's now a subscription.
Why is it a...
01:36:50gsora_ how can a book be sold as a subscription...?
That is really strange that it's a subscription.
I understand that they want ongoing maintenance, but I don't think that is a good fit for the actual product.
My guess is they're going to keep updating it for new Rails versions.
That makes it a little harder to recommend.
I guess my recommendation would be subscribe for a month, save a PDF, work from the PDF, because Rails...
We're not in the Rails four or five days or the three or the two days where it was changing heavily all the time.
We've got some better abstractions in Rails so that upgrades are a lot smaller and a lot less, hey, you have to rewrite half your app.
It's been a long time since Rails felt like that.
God, what, 15 years?
So, yeah.
I guess I will have to look around.
totalecl1ps3 Thanks for all the input!!
Let's put that on my... All right.
You're welcome, TotalEclipse.
When you build your website, come back in a month or two and show us what you made.
01:38:26totalecl1ps3 absolutely!
cat is having big feelings this morning i know you got breakfast sir good boy so there's kind of a attention at work here in the self-promo stuff because we give an explicit 25 bonus when it is the author submitting their own stuff and the show tag even has a bigger one
Where is it?
Wow.
My connection must be really terrible.
It sounds like there is a 30 to 60 second delay between you seeing me saying something and you seeing something.
So that is a little rough.
Sorry, chatters.
The
You can tell i'm a gen X right because I said sorry chatters, as I am addressing people instead of sorry chat that fourth person plural i'll learn, I will become a great streamer I will say spicy things and sit in a hot tub and.
I don't know get banned for having gamer moments I don't know what other stereotypes to lean into here.
gsora_ only worse stereotypes sadly
So the show tag.
I thought it also gave a small bump.
Maybe it doesn't because it would be redundant, but... Yeah, I only have negative stereotypes.
for streamers because I'm being silly, but actually there are streamers who do some excellent stuff.
It's really funny.
gsora_ absolutely, there's not just bad stuff on twitch thankfully
I read a book by a streamer where there definitely was not an editor involved because it was kind of rough.
gsora_ unlike kick... :]
And he was a very...
01:40:32It is not things I would have chosen to share in public, some of those stories.
And he made a bunch of very junior mistakes or not junior, wrong word.
frici just remember selfharm is bannable so no malΓΆrt on stream LUL
Just a very, he was a teenager when he started.
So immature, I guess is the word.
I don't mean to insult him because it is very normal for teenagers to be immature, but some of that stuff hurt to read that he wasn't getting good advice from more mature people.
And he was getting taken advantage of in a bunch of ways he didn't realize because he was immature, both emotionally and professionally.
So it was a really hard read and like halfway into the book, I realized I've seen some of his streams because he was a prolific streamer for Slay the Spire and one of the best players at it in the world.
And I have,
gone to his stuff for advice on how to play that?
Oh, self-harm is bannable, so no Malort on stream.
I don't even know if I have a bottle of Malort in the house.
I think we have hazed enough tourists with it that we ran out.
01:41:51Yeah.
So there's a tension between don't go ham on self promo and you get a bonus for self promo.
This is what the guideline is trying to get at of if you are in the community and you are making stuff.
And in the community means participating normally, writing comments on other things, contributing to the general good vibe of the place.
We very much enjoy the author's presence and want to reward it.
But at the same time, we can't just be a place that people dump links to promote their thing to grab traffic and bail.
That is just really toxic for a community.
It becomes a link dump.
It becomes X or threads or link in bio on Instagram.
That's lousy.
espartapalma good morning
Another complication is we have that authorship bump, and it is a nice flag, and we would love to lean on it in the code.
Oh, hey, Spark Palmer, welcome.
I'd love to write code that leans on it, but we also have...
I also want to recognize activity where, like,
alice's author but bob submits i want to recognize that alice's comments on bob's submission are kind of self-promote
And we can't really do that now because we don't do any kind of authorship tracking.
And there are so many corner cases of who can claim to be an author or not.
And is it actually being an author or is it just benefiting?
So we have had, I've had marketers where I'm like, Hey,
You've got to stop with the self-promo.
And they're like, oh, well, it's just a link to the startup I work for, but I didn't write it.
So it's not self-promo.
And it's like, buddy, you work for the startup.
You are marketing.
And so all of these terms have places that fall down.
And let's do this out of order.
There was this thread.
just in the last couple of days and i just left another comment this morning this author submitted a link to their blog and got flagged a whole lot because the only thing just about the only thing they've done on the site in the month or two they've done is post links to their blog and leave a couple of comments and
pushcx https://lobste.rs/s/xryt9t/un_d…
I will not read you all of the comments.
Let me throw this here if you want to read this or handle it later.
They kind of get into an argument with folks who are explaining site norms and their general line of argument is just, it's so complicated, I don't understand.
And I don't think this person is evil, but I think there is a self-motivated reasoning happening where if what one wants is to promote their blog and get attention, it is very straightforward to find reasons that the words marketing or self-promo don't apply.
Oh, it's not marketing.
This isn't a business.
It's not self-promo.
My boss wrote it.
It's not spam.
Because it's, I don't know, I'm not in Eastern Europe.
It doesn't come from the spam region of the Balkan Peninsula.
It's just sparkling self-promotion.
01:46:24There we go.
...38Or the other one they're saying is, it's not self promo because your rules are so complicated, I just can't understand them. And we've talked, I've already talked about intent.
...58It is hard to read this one seriously as having enormously
01:47:12There is one purpose statement. We like to have people participate in the community, but don't exploit us as a right only tool for product announcements or driving traffic to your work. And then here is just a rough rule of thumb. This is not enormously complicated with subtle gradations, but this author is working pretty hard to find some.
...44Maybe this should be implemented in code.
...54anshulxyz I have a suggestion, how about, "you can not submit anything that you are even remotely connected with"
gsora_ last time someone tried to encode social rules in a computer program we ended up with smart contracts :P
So, code is not a great tool for the job of getting at, is this person acting in good faith?
So Anshul,
If we say you can't submit anything you're even remotely connected with, there are two problems with that.
Number one is people have lots of remote connections.
Like, I met this person at a meetup and I thought their blog post was neat.
That's totally fine.
Maybe it would get submitted anyways, but it's definitely a false positive there.
And then the second one is it incentivizes people to create sock puppet accounts.
And so if I am Alice, the author, what if I create Bob who just happens to submit Alice's posts?
And so an unambiguous rule makes a different problem worse.
Smart contracts.
Yeah.
01:49:17anshulxyz damn, this is tough
And then the other part of it is, Anshu, I guess I have a third point.
A third point is we do want authors to submit their own work.
If someone writes something excellent that is
relevant to this community that is on topic that advances the public understanding of it, I absolutely want them to write it and participate as part of the community and discuss it and have us figure out the world a little bit better and share something they made.
And if we have a blanket ban on it, we are losing some of that celebration.
Because if you look through
the show tag you will see some excellent stuff this stuff is I'm aware the number is pretty small by reddit or hacker news standards but a lot of this that's getting 27 30 100 up votes is some of the best stuff on the site
Some of it is not great self promo where people are like, I released version 1.1.17.
So I've submitted the last 16 and here is 0.17.
It's like, I have to tell those people to cool it.
But some of this stuff is great.
So show is just for projects.
We don't have a page that lists things that are where the authorship checkbox is checked.
Maybe we could.
But it is also a whole lot of excellent posts and I don't want to lose that stuff.
I want to celebrate it and integrate it.
epidemian_ yeah, i have personally submitted some posts form people i know and follow their blogs; things that i immediately thought "i'd like to read what Lobsters think about this!"
And it is tough to talk about universally because we have to write a general rule that is welcoming to the 95 out of a hundred people that get it.
Oh, hey, epitome.
So this morning I responded to this author who, as I said, I have a hard time reading, is not self-motivated, explaining the specific thing they asked about, but then also talking about how simple code solutions have a really high false positive rate.
And on this stream, the last couple of weeks, we've built out the origin feature.
And it's funny, I don't think this came up on stream, but those of you who were here maybe two weeks ago when I finished up the origin code might remember that I wrote a function, I linked to it here, for just like we detect new domains from new users,
epidemian_ hi! :) regarding this topic in particular, i honestly appreciated the author asking for clarification about the rules. i didn't interpret it as rude TBH, maybe a bit frustrated on their part
I wrote but commented out this check of new origin from new users, because I kind of looked at the database and thought about it, and I realized the false positive rate was going to be really high, and that maybe we should go into approvals first.
And after I deployed this code, like one day later, Natty Narwhal, this is, he doesn't mind connecting his handles, this is CB on the site, Calvin, who is a prolific submitter, said, hey, why don't you have
basically exactly the feature that we wrote and commented out on stream.
Yeah, Epidemain, and maybe I'm being overly cynical.
anshulxyz only submitter I can recall off of my head is "susam"
That's part of why I tried to respond generously and non-snarkily is I can't know what's motivating.
I just know that when people are showing up to the site to do self-promotion, they are very good at finding
discovering, adding ambiguities and incompletenesses to a fairly straightforward guideline.
01:53:37And I'm a little unsympathetic to people who say, oh gosh, this is all so hard.
I need it to be explained to me again because
epidemian_ yeah i think *the spirit* of the guideline is pretty clear
It is a one in 500 kind of problem that somebody gets the rule explained to them and can't follow it and integrate themselves.
01:54:05So I thought I linked more. I thought I linked more in this, but
...17One of the things that I put already in the scratch to talk about and then have linked here is four years ago, how closely? Oh, four and a half years ago, I tried a straightforward, simple, very broad rule, Anshul, along the lines of what you suggested, where we had some really ugly abuse where a marketer was not just spammy they also created 10 alternate accounts of sock puppets to try to upvote their own stuff with sock puppets and they didn't were just clever enough to realize oh if i invite 10 accounts myself the mods are going to notice me and so they went to the chat room and they pretended to be a bunch of different unrelated developers to beg people for invites so that their sock puppet accounts would be less likely to be detected which was i mean there was no ambiguity here over whether they were just misunderstanding or loving the contribution so much that they just couldn't help themselves. This was just big, straightforward abuse.
01:56:04gsora_ the funny thing they thought they could get away with it
You know, the funny thing is not that they thought they could get away with it.
You generally can.
Like, it took a minute to notice them.
and spam is an arms race and we look very unsophisticated and in some ways we are fairly unsophisticated because the invite system lets us be much less sophisticated if we didn't have the invite system we would be utterly swamped with spam bot signups that submit links the spam bots at this point
are not specific to a site.
They are general enough tools that a spammer can put in a site.
anshulxyz especially, in 2024, imagine spam bots powered by LLMs
They will crawl the site to find a signup form, sign up, do any kind of email confirmation needed, find commenting forms and link submission forms and anything kind of forms.
And, oh yeah, even before LLM, I am talking about the state of the art
10 years ago, LLMs, I assume, have turbocharged all of these because they can be so much more flexible.
So the invite system lets us be much less sophisticated and cynical and put much less time and energy towards spam detection and mitigation.
because it's much harder to automate that sort of thing.
gsora_ i remember seeing lots of fiverr and upwork job posting to write "automation tool" and "comment software"
And a big part of this guideline is... Kat, do not put your foot on the keyboard when I am streaming.
Oh my God, Kat, thank you.
When people want to do self promo, the reason this rule of thumb is here is if you see
arh68 does lobstrs do shadowbans ?
yeah you'll see lots of those kind of spam requests on fiverr and upwork and really any site they're on reddit too anything that is like remote contracting that you can do from home is full of people trying to hire human spam bots for cheap so part of this rule of thumb is
No lobsters does not do shadow bands lobsters was founded in response to jcs getting shadow band from hacker news for publicly disagreeing with Paul Graham in a very innocuous non flame worry way.
program was not an effective moderator.
gsora_ huh til it was a shadowban
but that's also why lobsters has the moderation log is mods doing secret things is very disruptive to a community and i think the moderation log the public mod log is a very innovative and incredibly powerful thing for the site i already talked about it a little maybe an hour ago yeah
Yeah, it was a shadow ban, but the point of shadow bans is they work well against spam bots, but against actual humans who don't have major personality disorders, they're very obvious and very hurtful.
If we didn't have the invitation system and we had open invites, we would almost have to
have shadow bands you have to have them if you are dealing with spam bots I don't know they're more sophisticated now but you really need to be able to cut off the spam bots effectively and give them as little feedback as possible so one of the things of where I say the word like exploit is
anshulxyz SEO ruined the Internet
The self promoters their goal is the traffic their goal is the attention or the clicks or the dollars or the signups to their mailing lists and eventually the purchases to their product or just the warm warm glow of attention.
The thing they want to do last is spend hours creating original content to.
justify their presence on our smallish site.
They don't want to spend 30 minutes a couple of times a week writing comments so that once a month they can post.
That's really expensive.
And LLMs are changing this equation.
So, you know, they could just submit LLM slop comments.
We have ways of dealing with that.
But what I wrote four years ago was, when we are sending attention to celebrate someone advancing the state of our understanding or sharing what they've created, it is the internet at its best as a gift economy.
I still believe that very strongly.
And unfortunately, some people see the site as a handful of rubes naively standing around a money fountain.
And that was the case for this really abusive marketer.
I don't believe that's the case for the person I showed a few minutes ago.
I think they're just really proud of their work and want attention and have a little bit of motivated reasoning that justifies using lobsters in a fairly exploitative way.
02:02:21So four years ago is when I added the domain model and making it possible to ban domains and expanded a bunch of those restrictions on new users that really do need to become more sophisticated. One second, I'm gonna clear my throat. And this stuff has been big improvements. And especially this year, self-promo has kind of been stepping up and we've had more and more of it where I have to chide people. And so I think it is a good time to revisit. And that's what motivated a lot of the or motivated the origin code was getting at better these sites where we're seeing bad behavior from one guy on GitHub, but we sure don't want to ban all links to GitHub, right? All right.
02:03:51totalecl1ps3 Ooo, so just saw your site, and it's really cool! I like it!
so let me grab obs here for a second i'm going to step away for two where's my little
Oh, I got to push the...
Helps if I push the right button.
totalecl1ps3 looks like a HR/YC style site
I'm going to step away for a bio break, and then we can jump into this.
Oh, thanks, Total Eclipse.
Yeah, we are running this.
Oh, and just as a spicy thing, in case you didn't catch it, I said we now consistently average over 20k visitors per weekday.
This is four years ago.
Programming is an enormous, growing, lucrative, powerful industry, and thus a very expensive demographic to advertise to.
A link on our homepage sends traffic that would otherwise cost 15 to 30K on Twitter, AdWords, or LinkedIn.
We now have more than 10 times this traffic.
Every day we see more like 250,000 unique humans.
That means we have a problem that is about 10 times as large.
pushcx https://jcs.org/2012/06/13/hell…
Yeah, Total Eclipse, we've talked a little about it in the Shadowban thing, but... Where is our...
Here we go.
Hellband is an alternate term for Shadowban.
Where's my clipboard, Linux?
This is the Lobster's origin story.
All right, so I'm going to step away, use the restroom, and then we're going to talk about making a lot of this stuff more sophisticated.
And if you want to think about any questions you have or culture stuff, that would be great.
I appreciate folks hanging around to dig into this as I'm thinking out loud and figuring out how to keep the false positive rate down because that's so bad.
02:08:15So that's pretty great that JCS, who is really into retro computing on Macs, his personal site has a screensaver that after a couple of minutes of inactivity, it starts displaying a take on the classic screensaver. God, I remember seeing this in junior high. I want to say there was a later variation where occasionally the toasters will pop up toast or take bread in I don't remember exactly how wonderful that there happened to be a screen saver for my little break. Very convenient.
02:09:20so we've talked about new user and inactive user and i think i think inactive is actually imprecise what we want is inactive verse in good standing and what i mean by in good standing is
...49last six to 12 months have you participated and let's break it out
02:10:04Matt doesn't need it. And had it well received.
...17So it's just, are you acting like part of the community?
Are you submitting links?
And are you commenting?
And are those well received?
because I had one guy, especially where I said, you know, Hey, here's this one quarter rule of thumb.
And he very clearly just clicked over to our programming and collect grabbed the top two or three links and slapped them in our submit form.
And it was like, yeah, that's by the numbers, but I don't have to pretend that you were seriously engaging.
That's not,
epidemian_ does lurking + upvoting count?
meaningful participation that is you are trying to check the box with the least amount of work possible so that you can continue to exploit us and i don't have to pretend that i can't tell that that was in bad faith and i think this well received does lurking and upvoting count
epidemian_ i think it has *some* value, not as much as commenting tho
I would say no, because because up votes are cheap.
And
It does have some value.
I can see folks' votes that shows on profiles.
It shows me somebody's last 10 votes.
Mostly I use that to see, hey, if you are in the middle, if Carol and Dave are in the middle of a conversation and I look at Carol's profile and she's flagged all of Dave's comments going back the last month, then I will know that Carol is not acting in good faith.
That is not a good use of the flag system and I will ask Carol to knock it off.
I think I have seen one or maybe two people in the last seven years who could not stop flagging the people they disagreed with because they wanted to punish those people.
And it feels like a punish button.
And I had to boot them from the site because they would not stop trying to chase someone around and punish them with flags.
The flip side of that is
anshulxyz power tripping
upvotes are cheap you know so like trivial to fake and bad ones are noise for the whole community so if i said that so epitomain if i said that voting was considered part of good standing someone would just load lobsters
upvote whatever the top three stories are click into those upvote whatever the top three comments are and close the tab again right you could be you could do that in 10 or 15 seconds and it's just noise into our vote signaling and even if they don't script it it's it's a nothing thing the reason that
keep coming back to i want you to talk on other people's stories is it's expensive and it's hard to fake and people don't tend to upvote vacuous comments because i had one guy had one person who after being told they needed to participate in other stories
epidemian_ the amount of adversarial thinking you need to put into this! thanks for the hard work :D
just kind of went through the home page and they on the top five things they left five one-liner comments that were incredibly vacuous yeah adversarial thinking it's not so much so serial
02:14:42It's all feedback loops.
You get what you reward, and we have fairly blunt tools for rewarding things, and you have to think really clearly.
You know what you want a feedback loop to do, but it is going to influence other things, and you are dealing with people who want to shortcut stuff to get the reward without putting in the investment.
of actually caring and actually participating.
So there is a certain guy who got famous for investing in electric cars and investing in rockets, and he bought a social network.
anshulxyz I wonder who that guy is
totalecl1ps3 Got to go! I'll catch you back on here soon!
And people went, wow, this genius entrepreneur who makes electric cars and makes rockets, obviously he's going to be great at social networks.
So first off, he was an investor in Bowles things.
And second,
A rocket doesn't have feelings about how the rocket launch went last week.
espartapalma I can't image who that genius is
An electric car's batteries do not charge differently if you charged them yesterday.
I mean maybe a little bit, but you don't have adversarial thinking and complicated feedback loops
in electric cars and rockets.
Yeah, eSport promo, who could be talking about?
Social networks are harder than rocket science.
Social networks are harder than brain surgery.
They're also easier than those two things.
anshulxyz whaaaaa
You know, our brains have, they're such different classes of problems.
Our brains have specialized circuitry for dealing with social situations.
arh68 spam is the mind killer
anshulxyz lol
But the thing about if you've never had to moderate a community or run a student group or organize a church Bible reading group, if you haven't put on dinner parties, you might not even recognize that there are these very hard problems.
So there's a, how does the task go?
02:17:38All right.
So I am going to give a classic social experiment that I love to pieces.
arh68 do I get a marshmallow
And I know folks love jumping ahead to the solution.
So if you have seen this one before or you figure out what I'm doing, please don't say it.
ARH, you get two marshmallows.
arh68 PopGhost yas
But yes, you specifically, please ARH, do not jump ahead.
So don't give this one away.
Give people a chance to participate, please.
ARH, the cake is a truth for you.
So I want you to imagine... Oh, let's make ASCII art.
I love making crappy ASCII art on stream.
02:18:32Yeah.
...51Alright. This is not pick a card, any card. Oh, these are going to have to be wider, aren't they? Let's see how I can do. Alright. We have four playing cards. And I'm going to lay them out in front of you. And you tell me which ones I need to turn over. So there is a rule. And the rule is... Every card with an odd number has to have a letter on the back. And I'm going to give you two cards face up and two cards face down. So we have a card with the number 19, a card with the number 8. Let's say a vowel, not just a letter. And we'll have a card with a, I don't know, J is a good letter. and we'll have a card with A for ARH, who is not going to spoil this if he's seen it before. How many cards do you need to turn over to know that the rule is followed or broken?
02:20:10gsora_ went out for a few mins for work standup and now we're playing cards!
Take a second, puzzle it out, throw an answer in the chat.
We'll see if we can get a couple of people.
This one, it's a little tricky.
Nobody's going to get picked up.
Yeah, we're playing cards.
This is a social experiment.
So we have a rule, and I have four playing cards.
chamlis_ can a card have two numbers or two letters?
Which cards do you have to turn over to know the rule is followed?
And I'm going to be quiet for a sec so folks can think.
anshulxyz A and 19?
Can a card have two numbers or two letters?
No.
On one side, it has a number.
On one side, it has a letter.
I'm not doing...
arh68 mmmm seems like the non-vowels, and the odd nums, you gotta flip those
I mean, it's clear you've written a software test or two before, but I'm not being that hard.
So A and 19 for Manoush.
Thank you.
And Shul.
Sorry.
And Shul.
Seems like the nod vowels and the odd numbers.
manuelfcr 19, J, and A?
chancedev can we clarify a rule? does the rule mean that vowels are ONLY on odds? if not, then just 19
So that's a slightly different answer by ARH, who I guess has not seen this one before.
Shamilis, Gisora, you want to take a guess?
19J and A.
Thank you, Manuel.
Can we clarify a rule?
Does the rule mean that vowels are only on odds?
So that's an important clarification.
The rule is...
If the front of the card has an odd number, there has to be a vowel on the back.
We are not having the inverse rule.
It is acceptable for an even number to have a vowel on the back.
And it is acceptable for an odd number to have a consonant on the back as well.
chamlis_ 19 and J I think
But ChanceDev, thank you for joining us.
Yes, that is an excellent rules clarification.
arh68 i mean could 8 have 7 on the back, i'm assuming not
So nobody has to participate, but I'm going to close to guesses in a minute.
19 and J.
8 could have a 7.
No, every card has a letter and a number.
I'm not going to really violate it.
02:22:22anshulxyz ok, now I see how y'all are thinking
So I could give you the correct answer to this puzzle.
anshulxyz reverse is also true?
I'm not going to, because I'm going to give you this puzzle again.
Angela, you see how we're thinking?
Yeah.
Reverse is also true.
Reverse is not necessary.
If it has a vowel on the back, it doesn't have to have an odd number.
The rule is just one way.
anshulxyz then only 19
All right.
chamlis_ trying to think contrapositively
I'm going to say...
Then only 19.
Okay.
Last call for guesses.
I'll give you 10 or 15 more seconds.
Contrapositively.
Yeah, that's part of this.
All right.
All right.
I know everyone has admired the ASCII art.
arh68 i think i failed the interview :( lol
We're going to duplicate it.
epidemian_ are all cards front-side up? and front and back are two diff things?
There's going to be twice as much ASCII art this stream now.
Ooh, there we go.
02:23:20anshulxyz man, these leetcodes are evolving
the cards all front side up no these first two are front side up the second two are back side up front and back are different things imagine playing cards this is a by the way this is a real social experiment that has been well replicated these lead codes are evolving yeah all right so i'm gonna wipe this out all right last chance to get in your guess
Is that your final answer?
Before I give you a second version of this question that's going to make this very easy.
02:24:02epidemian_ i'd say just 19
I'm going to give you four cards.
anshulxyz yeah, I'll stick with 19
And on the front there's going to be an age.
And on the back there's going to be a drink.
The rule is...
chamlis_ sticking 19 and J
every card every person with alcohol has to have an age over 21 and your four cards are a beer a coke a 15 year old
and an 80 year old.
Which cards do you need to turn over to know that the rule about alcohol is being enforced?
anshulxyz beer
arh68 seems like the alc drinks & the under-21s
If every card has a drink and an age, which ones do you have to turn over to know that the rule is being enforced?
02:25:13chancedev interesting
gsora_ 15 and beer?
chamlis_ yeah beer and 15
And this becomes much, much easier.
anshulxyz beer and 15
Yeah.
So the correct answer here is 15 and beer.
chancedev agree beer and 15
manuelfcr Definitely easier :D
You have to make sure the beer is old enough and you have to make sure the teenager is old enough regardless of what they're drinking so that you can see that they're not drinking alcohol.
And I may not have gotten these in the same order,
But these are the same question.
anshulxyz damn, I failed
The human brain is hardwired to enforce, to detect violations of social norms and rules and enforce them.
gsora_ i'll be expecting my hiring letter
It is not just that you have been to a bar and seen this rule enforced before, because there are different versions of this that invent different social rules, like only people who are
wearing hats are allowed to eat fruit which cards do you have to turn over and it's a person with a top hat a person with no hat a person with a banana or i'm sorry a banana and a steak people do just fine at enforcing that silly social rule there is a little bit of a benefit to having seen the the alcohol drinking rule and the fact that i picked 21 is very american of me
I know it's lower in Europe, so there's a little bit of an ease there.
But we humans are hardwired for social skills, right?
Like if this is D&D, what's that Tumblr post?
There's a Tumblr post I always love where humans are social animals.
gsora_ is there a legal age for drinking alcohol in EU? ;) jkjk
We dumped everything into charisma and never looked back.
02:27:11chancedev so can you clarify the answer to the first example then
Is there a legal age for drinking and you yeah I don't know.
...20The answer to the first example chance is to ensure that the rule is followed, you have to turn over J, because it might have an odd number on the other side that would tell you the rule is being violated.
And you have to turn over 19 to make sure it has to have a vowel.
Oh, good.
I got these in the same order.
espartapalma legal alcohol drinking age in MX is 18, that's why Spring Break is so popular in my hometown
chancedev AH I missed that
Yeah.
I've given this quiz once or twice, so I must have remembered.
It's been years.
But you do have to turn over both 19 and J to ensure the rule is being followed.
Yeah, chance.
It's so much harder to think about when it's this abstract vowel verse number thing.
But when it becomes a person, we are good at this.
We are really good at this.
02:28:11gsora_ cool experiment
As for Palmer, yeah, I live in Chicago, which is not terribly far.
Call it an hour or a two hour drive from the border into Wisconsin.
And Wisconsin was the last American state to raise the drinking age from 18 to 21.
So there used to be a lot of car wrecks on the highway up to Wisconsin around my home.
That was a weird one.
Without getting too hard into politics, the US drinking age is actually a national one because of federal highway funding and the federal government said
If you set an age that is under 21, we will stop contributing money to maintain the interstates in your state.
And the major highway system is the federal interstate system.
anshulxyz funny how one can decide fate of the nation (18) before they can decide their own (21)
It's interesting that that one is enforced by dollars rather than a broad law.
It's not a federal law.
criminal law.
It is a federal funding law imposing a state criminal law.
Yeah, Anshul, that is the kind of more complicated political topic I would prefer not to get into.
Look, I am happy to talk about how a rule got enforced because it's kind of an interesting legacy code shaped thing.
Maybe I shouldn't have brought it up at all.
espartapalma which law is not enforced by money happening or not happening?
There is a name for this.
What is it?
02:30:07chamlis_ https://en.wikipedia.org/wiki/W…
I'd like to include the name for this.
pushcx https://en.wikipedia.org/wiki/W…
Ah, the Watson.
chamlis_ oh whoops you just started searching it
I was going to say Watson, so it's good I looked it up.
The Watson selection task.
...25Oh, Shamless, you got there at the exact same time as me.
Thank you.
Good timing.
Or actually you know, given the lag that's into the stream because it's rainy today you got there about 60 seconds before me in any case, thank you.
espartapalma they got that before you
So I think this is.
espartapalma :)
Really interesting and important, I have a minor in sociology, because I think pretty fundamentally.
Humans only make sense in groups.
Yeah, Esper Palma, you also got there before I did, knowing the 60-second lag.
You figured out the 60-second lag before I did, but then you said, from my perspective, you said at the same time as I did.
Relativity.
Let's get Einstein on Twitch chat lag.
02:31:39chamlis_ they got any supermassive blackholes in chicago?
dpk0 whatever your next bug is iβm posting this message so i can claim to have spotted it first
Thank you dpk.
Yes, you can.
I'm actually not writing a lot of code.
Oh, I just well, it started raining again.
So if my connection goes to hell, please tell me and we'll take a break for a minute.
But if it's going to be actively drizzling, and the stream is not going to recover, I'll cut it off for the day because I don't want to just scream into the void and make people watch the archive.
A big fun of streaming is we're actually interacting live and talking about this stuff.
I mean, I have a cat.
I can talk to myself in my home all I want.
So we have voting to figure this out.
The negative part of this is there is an unfortunate incentive to sock puppet
02:32:41right so if i say i'm going to judge your participation the the good vibes of your participation and the honesty and wholesome with wholesomeness with which you are participating in the community of are you serious about this or are you just leaving neat thanks kind of comments by whether or not you get upvoted Well, the malicious person will go. Well, it's still easier and less work for me to create 10 sock puppets and upvote my own stuff. I think this one we're going to bite the bullet on because we have to. The positive effect of filtering out slop and one-liners is really good. And one nice thing here is it still gets to intention, there is no plausible non-evil justification for sock puppeting and voting rings. No one is going to say, oh, I just didn't understand whether it was allowed to create 10 accounts with 10 different names that all happened to upvote my thing. That's, come on. You can't say that with a straight face.
02:34:28This is the kind of yes and that I can't do on Mastodon.
Like one person said adversarial and I wanted to say also it's feedback loops.
dpk0 does the Lobsters codebase have voting ring detection?
And I can't
Yes, and on Mastodon.
I want to encourage people and say, hey, that thing you said reminds me of this other thing.
Check it out.
And I want to also promote that.
Does the Lobster's codebase have voting ring detection?
gsora_ how easy it is for someone to create an army of sockpuppeting?
A little bit, but no is the short answer.
A lot of it just pops out because you read the site and
02:35:29so i would say i have found maybe i want to say seven or eight voting rings on the site over the years yeah so call it about one a year and about half of them were me looking at someone
doing something spammy and realizing there was some real nonsense going on, and half of them are regular users reading the site and going, it doesn't make sense that this corporate blog post has 10 upvotes.
It's just not that good.
We have enough of a culture that people who try to sneak in and abuse the culture in that way
really stand out.
And this is why I did that.
Humans have social skills hardwired.
dpk0 the possibility of voting ring detection false positives with a small community like Lobsters (esp considering the even smaller subcommunities specifically interested in Nix, PLT, osdev, Rust, using Rust to implement Nix PLT in an OS kernel, etc.)
A big chunk of our human hardwiring is... Yeah, let's put that down.
02:36:48dpk0 β¦ seems maybe too high
Is in-group versus out-group wiring.
dpk0 (is how i wanted to end that sentence)
Are you a member of my community?
Do you belong in this village?
Are you family?
Are we friends?
Do you believe in the right God?
Do you believe in the right politician?
Humans are enormously hardwired for this one, and we overweight it so much because if you are outgrouped,
you may not even register as human.
And we don't have to talk about all of the heavy atrocities that have happened because of that idea that people who are not in your group don't count as human.
But that is the logical extension of that.
That is the biggest endpoint of that.
gsora_ lobsters should follow the same rules as a private trackers: invites are rare, have people undergo an interview before joining
it's a dpk the voting rings tend to stand out one big characteristic of voting rings is that they're first they show up to stories too quickly because they want to get that story onto the home page and so where i've seen voting rings trying to upvote stuff i grab a story and i look at who has put the first
20 upvotes on it, and if I see the same five usernames across the couple of stories, it's ridiculously implausible.
And so for niche topics like programming language theory or formal methods, actually those are not particularly niche by our standards, but if you can imagine a niche topic
Yes, they will have the same core users, but those same core users won't show up consistently in the first hour or two.
That is a real standout thing.
And I've switched to JSON logging to make this easier.
02:39:21So Jisora, I do think that improvements to the invite system are a good idea too. I talked about it over in that, was it my last tab? We've jumped around so many tabs. Oh, this one, yes.
...50dpk0 topically, thereβs a blatant spam on the front page right now
So in here, I linked to the code that I pulled out.
And I said I think the false positive rate would
be too high and I want to have approvals.
When I say approvals, I think it would be good for there's blatant spam on the homepage.
gsora_ the zed one?
dpk0 the email for teams one
I am pulling up a personal browser off stream.
TPK, which one feels like spam to you?
The Zed one?
The email for teams.
A simple shared email inbox for teens.
dpk0 itβs a startup launch, looks like
Yeah, that's fucking spam.
I should actually click through before I judge, but yeah, that's just spam.
One moment and it will be gone.
02:40:53All right, so that's spam. And I am going to drop that domain because even if they come back two minutes later and say, oh, we have a blog post about how we implemented a regular expression, I don't want that.
02:41:17That's not great.
gsora_ tech post-driven spam
And so when there is spam, yeah, so this user was created 11 years ago.
and their last post was one year ago.
dpk0 and before that 10 years ago β¦
So this is a pretty good example of, here, I can bring this over to stream.
So here is Lazy Adam's submitted stories.
dpk0 so yeah, almost everything youβve been talking about
So I immediately wonder if a couple of these, especially the book,
yeah it's not even a live link i wonder if that one is authored by this person but also their last post was a year ago and i don't need to put them on blast but like have they even commented no their last comment was 10 years ago so this is a really good example dpk thank you of they are not a new user but they are sure not an active user and we should have
gsora_ is this behavior grounds for account termination?
There is the opportunity to have treated this submission specifically more skeptically.
02:42:48Is it grounds for account termination?
I wouldn't, so...
Yeah, I was meaning to talk about this.
It didn't get onto my to-do list.
So this is really fortuitous that DBK and GSor that you asked these two questions.
Interventions?
Just to pick a word that is a little less freighted.
So things I can do for spammy links are
Delete the link.
Ban the domain.
Ban the domain with a note that it's for one year.
Send the submitter a grumpy message.
Let's just say DM so it's clear what I mean, that it's a private message.
bruxisma not trying to change the subject entirely here, but have you ever considered changing certain banning terminology to get a point across. e.g., "We don't ban domains, we send them to the Shadow Realm"
Ban the submitter.
So we kind of, let's say escalating.
Have I considered changing certain banning terminology?
We don't ban domains, we send them to the shadow realm.
No, because one of the scaling scales, scaling interventions with events.
one of the hassles is we look so much like reddit and hn that people assume we have the same rules and norms and policies as those sites and hacker news is i mean superficially they are much more welcome to that kind of we just launched a product and people are surprised we don't follow that rule
Adding our own terminology only makes it harder to handle.
gsora_ unironically, private trackers are a good fit for the user acculturation discussion
So does it make sense that these are...
This one is up here.
gsora_ one has to learn rules and behaviors before even getting accepted
Private trackers are good for a culturation.
Yeah.
Yeah.
I was previously on, what was it?
gsora_ rip wcd
What dot CD.
bruxisma that makes sense, thanks! :D
And there was another one that came before it.
gsora_ redacted and morpheus
arh68 maybe waffles
bruxisma rip wcd π
That was a, there were two private music trackers that had very strict rules to enforce quality around submissions and good behavior.
And they also leaned on their invite systems waffles.
That sounds familiar.
gsora_ waffels <3
arh68 good waffle recipes ChefFrank
gsora_ they still are
they were very successful communities for a few years where even though the thing they did was copyright infringement, they did a really good job of teaching people what their rules were and enforcing their rules.
gsora_ which is weird, because as you said, it's copyright infringement
And yeah, I genuinely, I'm a big music fan.
So I miss having that stuff because,
arh68 they had a quantitative way to measure in-group, though, thru ratio
I love Bandcamp and I love poking around on Bandcamp and buying albums.
And I, I hate that everything isn't on Bandcamp so that I could have access to it.
What CD was great for the B-sides or the stuff that hasn't had a release in 30 or 40 years?
bruxisma wcd also had very good support. my account was compromised at one point and they had an actual path to recover my account.
Cause you know, I'm an old fart and I want to hear the music from when I was 12, because that's obviously objectively when music was the best.
That's an Onion article, right?
02:46:54No.
02:47:06gsora_ don't forget obscure master of your favorite album, that incidentally sounds better than any commercial release!
Somebody, I wanted to say it was an Onion article, but there was a, I think there was an Onion article that was like, a new study has proved that the coolest music came out when you were 12.
chamlis_ bandcamp's UI has barely changed in a decade and it's great
When you were an adolescent, the very most meaningful and resonant music was written and everything else before or since has been just sludge.
...36Yeah, Bandcamp's UI has barely changed in a decade.
chamlis_ yeah...
However, Bandcamp's ownership has changed in the last year or two.
gsora_ not for the best
I'm very hesitant.
There is also, so this might get a DPK's ears up.
Where do I have it?
It starts with a, here, let's find me on Blue Sky.
So I made a starter pack for worker-owned co-ops.
gsora_ starter packs rocks
Starter packs are a very nice Blue Sky feature where any user can make these lists of other accounts.
So I've just made a list based on this theme.
and you can one-click subscribe to all of them?
pushcx https://mirlo.space/
Murlo.
bruxisma oh I was just about to mention mirlo!
bruxisma learned about them via cohost (RIP cohost)
So these folks, Murlo Space, are a worker-owned co-op that are basically directly competing with Bandcamp?
Hey, Bricsisma, so you're thinking along the same lines.
dpk0 nice!
You know, if you had mentioned it,
You would have gotten there the same time as me with the stream lag.
02:48:59So anyways, I have high hopes for Mirolo.
I hope they have a lot of success and pay artists well.
chamlis_ one to remember
gsora_ being an artist in 2020's is hard
There is nothing satisfying like being able to give 10 bucks to really great mind-blowing music.
Let's if I spent all that time putting it in the chat.
We will throw this in here too.
02:49:40Alright. Where was I?
...59So I go.
chamlis_ it's kinda sad that bandcamp got bought just as it felt like they were attracting more mainstream artists
What are the heavier penalties when links are really off topic and submitter isn't a good participant?
02:50:21Yeah. Bandcamp is one of those, man, if I were a billionaire, I would buy Bandcamp and, well, I guess I would turn it into Merlo, right? Given my ideas around them as a superior business form and my general love for it, that's where I would spend if I were the lottery winner or the, I put all my PayPal shares with backdated documentation in my IRA.
...57with so not just events basically but spammy links so in this case that particular user who posted their email service i stopped at the first one because they have participated normally they submitted a bunch of other links over the years even if it's been years
Also, it's not literally the first thing they did right out the gate.
So if that user had been an account that was exactly 71 days old and had previously attempted to submit it and gotten bounced off of the
This limitation that's already on screen, cannot submit stories from never before seen domains, that gets logged internally when people do, does that.
If you search the code base for the word tattle, or if you just look directly at the mod note class, there are a bunch of things in the code base where if you try to do them, it creates a log that moderators see.
And I review that log constantly.
I send a lot of DMs based on that log, especially to new users.
And I think part of the reason we're seeing more self-promotion this fall is I was swamped in the spring and didn't send as many of those swamped.
Whatever, I don't want to get into that personal stuff.
But in the spring, I wasn't able to send as many of those polite nudges to new users of, hey, I saw you did this thing.
Why don't you review the guidelines and participate normally?
And so because I didn't send those six months ago of, hey, Ahmad is paying attention to you personally, now we are getting more of these submissions as folks exit the new user period.
So some of that is on me.
It's also on me in the sense of if I had done more of this work two or three years ago, we wouldn't have had this.
But I try and act very carefully rather than YOLO a ton of stuff.
gsora_ is there enough manpower to handle the traffic? last thing we want is you getting burnout over lobster (assuming it didn't happen already!)
This one was a fairly strong change, and I had to roll back the biggest part of it, which was if a site is only getting submissions or majority submissions from a single user, we will assume it's self-promo and block that.
And I had to back this rule out.
That did not work.
gsora_ great to hear!
was way too many false positives is there manpower to handle the traffic oh yeah we're fine i'm not getting burned out i find lobsters just enormously rewarding and even when i'm dealing with some of the bad behavior stuff i see it as a way to invest in the site understanding and improving itself so
Even if I'm a little cynical about that user I replied to this morning, and I think they kind of had motivated reasoning, it's an opportunity to improve our guidelines.
It's an opportunity to improve our features.
And let's see, I set it.
The way I think about the site, I set it in the one dozen lobsters, didn't I?
Maybe I did it the year before.
Hold on.
Yeah, I think maybe it's 11.
pushcx https://lobste.rs/s/hhoopi/lobs…
The years, they just fly by.
Ah, here it is, yeah.
So this is the big way I think of the site, Jisora.
You've probably seen this one, but...
gsora_ ahhh yes i remember this comment!
when non-techie folks ask me why i spend so much time on this thing is that it's like i'm hosting a cookyard in my backyard and it's been going 24 7 for years you know now it's seven and a half being the host of a social space i find tremendously rewarding
Even the stuff that is not great, like having to ask people to leave or having to tell people, hey, your behavior is inappropriate.
It's unpleasant.
I don't love having to do it.
But I know I am doing something that is directly improving this endless party.
So it's actually very rewarding to do that kind of thing.
02:55:41gsora_ it was heartwarming seeing that comment
And so this is part of my rubric when I'm handling stuff is, is the person, yeah, Jisora, for heartwarming, if you dug back in my comments from late 2016 and early 2017, I left a
couple of comments in response to JCS because I could see he was getting visibly burned out on running the site and moderating it.
And I don't mean to put him on blast, but it was visible that his actions were declining.
He was submitting less code to the repo.
He was taking fewer moderator actions.
He was saying less on the site.
He was just
obviously getting burned out and unhappy with it.
And I made a bunch of early comments of, hey, if you don't want to run the site, I would be happy to run the site.
And then he eventually posted that story about wanting to pass the torch.
And that's why I was there in, I don't know, 60 minutes or two hours with a bunch of other regular users, because we had all seen it and discussed it in the chat room and other places, other places, just group chats.
saying that we were seeing this and concerned by it so we popped up real promptly to say hey we want to pick this up and keep it running there was a time maybe three or four years ago where my job was pretty stressful and i left some mod notes that were snarkier than they should have been
gsora_ i hear ya, work has the same influence on me as well
gotten back out of that but that was one sign where i was getting a little burned out and it wasn't lobsters doing it it was unrelated work stuff gosh maybe it's been four or five years now yeah i've gotten back out of that but if you ever read the mod notes with popcorn in hand because i was snarky that was bad behavior on my part
02:57:55gsora_ therapy's been helping thankfully
jangomandalorian Hey everyone! ππΌ
yeah so good i'm really glad that's been good for you i think i've seen so many friends and family get a lot of benefit out of therapy and a lot of that is just learning to recognize what you are having emotional reactions to and making sure that they are appropriate to the actual current situation and not the other thing that's going on in your life
There's a, hey Django, there's a abbreviation I really like.
And what is it?
HALT?
And Irene identified it.
I hadn't heard where it was from, but are you hungry, angry, lonely, tired, or sick?
gsora_ exactly, therapy is pattern matching for your emotions
gsora_ oh wow
So this is a, it's from Alcoholics Anonymous, and they tell people, if you are thinking about having another drink, stop and run down the halts list.
Are you hungry, angry, lonely, tired, or sick?
because these are five real common emotions or events or external factors that will prompt you to make real bad decisions.
And I don't remember where I picked it up.
It must have been somebody's memoir or something, because I didn't know this source until just two or three years ago.
I mentioned it on a call with Irene.
And she was like, oh yeah, that's from AA.
02:59:57But before I take these more seriously,
actions like banning domains and banning submitters i stop and i run through this acronym of my in my head of am i hungry angry lonely tired sick like am i allowing some external thing to influence my behavior and i do also try and stop and think like previously am i mad at my boss
gsora_ i'm writing that acronym down
Am I mad at my pull request that won't get accepted because some guy is reviewing it?
Am I frustrated by the way my standing desk is sticking two inches below where I want it to be?
Yeah, I think that is a real valuable one.
And if you have a therapist and you mention it to them, they will be like, oh, I know that one.
They may even have a better tool for you too.
So it's super handy.
slaterusa mornin'
espartapalma HALTS... that's new for me, and yes, it's handy
It has caught me from making a mistake or two, because one of the things about these big irrevocable, I mean, even if they are totally irrevocable, we can and have reverse bans on domains and submitters.
They're a real heavy bat to hit people with.
Hi Slater, welcome.
We are talking about the website lobsters.
You can see the URL up here and how we're handling self promo and need to improve things.
slaterusa i'm a member ;)
Oh, so we got a, let's see.
03:01:35slaterusa thx for all the work you do @pushcx
Oh, great Slater.
Welcome.
Can I ask what your username is on the site?
Cause I don't recognize.
Oh, you're welcome.
slaterusa "slater" :)
well you missed by like five minutes, but if you scroll up and chat like 10 lines, you will see a link where I talked about how I find it very rewarding.
slaterusa not super active in terms of submissions/comments
so you're just slater all right i'm not going to pull up your profile on stream but i will look later how do we better acculturate new users there are yeah there are so many folks with different handles between the site and this site and i have so much trouble remembering them because now that i've been streaming for a couple of months i've heard like
20 or 30, and I can't keep track of everybody, even though humans have good wiring for it.
Ah, that's okay.
jangomandalorian Someone sent me an invite but I never received it :-(
You don't have to be a power user to be very welcome and a very positive part of the community.
03:02:48jangomandalorian Not sure if they actually sent it, though
Someone sent you an invite, but you never received it.
That might have been me.
I know I've occasionally invited people off stream.
jangomandalorian Oh, that might be the case!
Django Mandalorian, if you use iCloud for email, just yesterday or the day before I tried to invite somebody who had email through iCloud and apparently iCloud has just been throwing our emails away.
jangomandalorian I do use iCloud
gsora_ maybe we have some icloud engineer on the site :^)
slaterusa wouldn't surprise me if there apple employees members
so can't do a lot about that because i mean how responsive is apple going to be to some random guy yeah all right so they probably sent it and icloud dropped it on the floor if you want to send me a a whisper here on twitch or an email my email is peter push.cx i can look into that for you and i can send you an invite to a
slaterusa yeah that :D
non-iCloud address, but that probably dropped.
Yeah, I should search and see if Apple is one of those where even if you find somebody who works at the company, it is hard for them because Apple is so dang big to find somebody who works over on the other thing.
Let's see.
03:04:16We'll see if we can. I'll do that. Yeah, so there's a lot of, like, exciting stuff in the mod log, but a huge amount of what I do is below the waterline because it's, I send people DMs or I find and I hassle around technical issues. It's, you know, like, the drama of, oh, he deleted this story is, like, very visible and exciting and... occasionally it spills off of the site and like people post angry tweets about how i'm a dumb jerk who didn't understand their thing but most of the work is just fixing the ansible playbook and reading the mail server logs
03:05:29slaterusa "he doesn't understand my work!!" - "it's just a chatGPT wrapper" - "nuh-uh! ... yeah ok"
so so let's think about he doesn't understand my work yeah the other one what is i don't want a rabbit hole yeah so we've kind of talked a lot about what self promo means for lobsters you know everything is in l1 cache now
I think maybe the big one is replace new user checks with, I mean, I almost want to call it like dot recent well received participation, right?
03:06:30bruxisma I have to bounce, but thanks for doing these office hour streams and thanks for all the work you do on lobsters! π
What would that look like?
so let's say last six to twelve months we should think about what that is hey brooks isma well thanks for dropping in and drop by anytime we do these mondays and thursdays and of course you're welcome to email me anytime one of the reasons i do the office hours is just people find it more approachable than let me email this guy
because it feels like emailing Mount Olympus.
I want to make it real obvious from my typos and bugs and hassling around and managing Windows.
I'm just a guy doing the thing.
I am happy to talk through my thought process on this.
So we'll say this and then...
It's sort of non-history for new users
frici even if you're chill about it, email still feels utterly impersonal plus as you've seen from @jangomandalorian email delivery is .... a whole experience to even start with much less finish
is sort of assumed negative right like i guess that's its own point right that inactivity that's and that one is risky because false positive risk yeah email delivery
In iCloud's defense, Lobster's kind of looks a lot like spam, where it is, here's an email to join our exclusive site.
I can see why they would pattern match that to their spam filter.
And it's also possible that, I don't know, our SPF or our DKIM records could be stricter or have a bug in them or
Maybe there is some new email header showing that we have a pure soul that I haven't yet learned about to add.
Email deliverability is a whole thing.
03:08:50Another option is identify authorship.
It's not just authorship though.
beneficial submissions.
So like either to one's own blog or one's employer.
gsora_ gotta drop, thanks for the office hours pushcx! see you on irc/lobsters :)
And I guess it would be
03:09:24It's good to recognize, I'll see you later, GSara. Yeah, I'm almost certainly not gonna get into code because we're already at three hours, 10 minutes. So probably I'm gonna flesh out more of these options and we will kick them around for another, I don't know, 15 to 30 minutes and then we'll figure out what's actually worth implementing and likely to have a low false positive rate. I should probably talk about goals to be real explicit about that.
03:10:17So we're talking about if you have recent well received participation.
arh68 i still wonder when it's ok to post like a company's blog. as if companies blog like ppl. like aren't company blogs always selfpromo
It's on non self promo stuff that is kind of the key here.
Yeah, company blogs are sort of all self promo.
And if
I mean, we say self promo instead of spam or marketing because we have more stuff where people are just really enthusiastic hobbyists than we do commercial promotion.
But because we say self promo, we have people who feel like the rule doesn't apply to them because they are posting their startup and they didn't write the marketing post on the blog site that they submitted.
You know, some
There can be really good content aimed at developers that is entirely topical that meaningfully enhances the state of the art and is marketing actually.
That post I showed earlier this, this is content marketing and I feel like it's pretty good content marketing it's you know, admitting that i'm biased because I know the guy and he's given me business advice.
it's.
he did specific performance tests as part of his work and he talks through the engineering decision to make this and then he I believe generates interesting new useful stuff that is worth submitting and discussing and meaningfully advances the industry's understanding of this not like you know it's a new theory of relativity that's going to change everything just
It is one more brick in the wall of, do we know how to build this stuff?
And it is also absolutely content marketing because, thank you Kat, because they make a product that they are trying to market to developers.
And so they are writing to developers who are their potential users and customers.
And I think it is okay.
we genuinely, we lobsters and we programmers reading this do get something out of this.
The incentives are aligned where this company is incentivized to create new and useful information that benefits everyone as a way of promoting their startup.
And I think
There are circumstances, there are works, there is content marketing that can be good.
03:13:42So what is positive voting? I really want to be sophisticated here.
...52We have, there are still a few of these in the code base, but we have a few places we have hard coded stuff like it has to have four upvotes. So like if you suggest changes to a story, we implement those changes when there are two suggestions that are identical we could probably stand to increase this but that one is hard to set a number on because it needs to or it it benefits from scaling with traffic but in a very sub-linear way where if we knew the number of daily visitors We could say like you have to have log base 20 or something of our number of daily visitors suggestions before we make one. This is one of those non-obvious places where the invite system pays dividends that are not obvious. because it is a bit of a pain in the butt to get an invite. People are strongly incentivized to be deliberate about having good behavior in other stuff, like the suggestions, as opposed to I mean, we have never seen the situation where someone comes and suggests that a story title should be changed to poop fart. And then they get their friend to make the same suggestion. And then the story on the page changes live. Like that's, it's never happened because people know that they would get the boot for that and it would be a pain in the butt to replace. So the invite system has been so positive for the site.
03:16:03We also haven't seen... I think I have seen it suggested once or twice, but it has never become an edit where someone wanted to editorialize in a story title. So to pick a non-spicy example, like if someone says, check out programming language feature X. Someone who really dislikes it might want to change it to programming language feature X is broken or not as good as programming feature Y. I think I have seen like two suggestions in seven years, but none of them ever became actual edits.
...56So maybe like based on the,
slaterusa all i know is, that one programming language i just so happen to have spent the last 15 years immersed in, just so happens to also be the best programming language ever, and YOUR favorite programming language sucks!
average activity of last i don't know two weeks so are we seeing stories and comments that are themselves well voted where well is a thing that's changing so if you look at
03:17:33Yeah, Slater, it's really funny the way that everyone is entitled to my opinion.
...45arh68 skub / antiskub . gif lol
pushcx https://lobste.rs/stats
So we have, I guess somebody hasn't loaded it in the last hour.
We have a stats page.
It's linked off of about scub, anti-scub.
Oh, yeah.
Yeah, that's a good one.
So new users by month tends to be pretty flat.
Active users by month has been mostly climbing, especially the last couple of years.
And votes cast by month is pretty variable, especially over the last two years or so.
So if you look at these kinds of stats, this is why I don't want to say, even though it's so much less code,
I would love to be able to just say a comment with five upvotes, but it really has to scale based on how many upvotes.
If over a two-year period, the number of votes in the system has gone up by, what is that, 80% at a glance?
We got to be a little bit more sophisticated to deal with that kind of range.
If this were a commercial project, I would say, let's put it on a team's calendar to review every month.
but since realistically I am writing code that's not gonna get touched for years, I want it to be a little more flexible, a little smarter.
This one is real interesting.
I did not expect stories submitted by month to level off, because I saw active users and votes and comments increasing, but stories submitted has stayed flat.
It makes me think that for some folks,
their decision of whether to submit a story is at least in part based on whether they see a bunch of new stuff on the homepage.
And so if they see stuff and they're like, oh, it hasn't changed since I was last here.
Oh, you know, I just read a neat blog post yesterday.
slaterusa maybe stories submitted flatlined cos you kept deleting the self-promos, you big meanie! Kappa
I think that must be driving some of these submissions because otherwise we wouldn't have a negative feedback loop keeping us at the same point, the same neighborhood.
And when I say negative,
It's important with feedback loops.
feedback loop and negative feedback loop positive does not mean good and negative does not mean bad positive means more likely to create changes and negative means tends to dampen out changes or reduce haha because I'm deleting self promo could be although actually I did say that just earlier
This spring is where I got weaker about doing self promo enforcement.
This winter.
God, fuck January.
So.
03:20:56What if we said if we put all this together and we say. Have you written. Comments on others. Stories. Let's say non promo stories. That. Were above average for their time period. Let me write some of these goals.
03:21:48The system has to be predictable and understandable. If we get too clever people can't internalize the rules to know that they are following them. And then also they can't trust it.
03:22:24And that's both. trust that they're well designed and being what's the right word here not judiciously i guess i mean fairly because when a system
...59I talked about scaling and intervention with spammy links. This is also the same kinds of escalating stuff for dealing with other things that are inappropriate for the site, whether they are off topic or brigading or in very rare instances, we've had people submit gross stuff. Like there was one blog post that had an extended metaphor for how Bitcoin was like a hand job. And then other cryptocurrencies were like different sex acts I recall like that's not we're not doing that. and A problem with.
03:23:45A benefit with these kinds of the MOD can take a bunch of different actions is hopefully I am picking. A small appropriate well justified action, but the downside is. Every single time I exercise judgment, maybe I am exercising bad judgment and either I am making a mistake, whether that's because I didn't think through the halt algorithm. Or maybe I am putting my thumb on the scale because my favorite language is X and they love Y. Or, oh, there could be outright abuse of someone says, let's go brigade this company that I got bad customer service from, but my buddy works at that company. Ideally, I would not let that affect my judgment. But if I act, it is very reasonable to question my judgment and action when I have that kind of personal connection. And it is so hard for humans to do that kind of thing dispassionately that it is very fair, I think, to assume that when someone acts on something where they have a conflict of interest that they are probably making a mistake. I mean, that is... That is the whole thing we have been talking about for the last two hours. When someone submits a link that they benefit from, right? There it is in the other direction. We know that they have incentives to do things that are not best for lobsters. So I guess what I'm saying is incentives exist, but I am not blind to the fact that they certainly exist for me as well. And if we make a system that is more predictable, and more code and less the mod picks from a menu, hopefully we get more just and more reliable outcomes. Let's talk about that. If we reduce mod, let's reduce mod judgment calls and improve fairness of outcomes right that's what i'm trying to get at is one of the problems with this mitigating content marketing and the domain ban effort there where when people submitted more than so the way it worked was if After the first four links, I struggled to write this sentence, and it should have been a sign for me that I was failing to make a predictable, clear system. If a majority of the submissions to a domain were just from one person, they were no longer able to submit. and the false positive rate was way too high. And if you are curious, you can dig down because we got into giant lists of domains that were affected by this and folks pointed out that the false positive rate was too high and I reversed that part of that and kept this stuff. So it is not enough to reduce the number of judgment calls. We have to improve the fairness of outcomes and make sure that These results are scaled. So like one thing that's not here is... Because this one's not the mod judgment, but the new user restrictions. These do have a false positive rate. And it's... because these get tattled on, so I said I see them. So my gut instinct without having rigorously made a spreadsheet and coded them all is something like 20%. So if a new user submits a link about 80% of the time, they started with self promo. And a lot of those were real iffy on topicality. And 20% of the time they submitted a great topical link that wasn't self promo. And it is just bad that we lost that link.
03:28:53Well, the North Star is... So for me, the North Star is always, are we having good, interesting, quality discussions? And everything is pointing that direction. The point of all of this is we often don't have good discussions on self-promo because people are incentivized sometimes with dollars from their boss, to post stuff that's not really topical or not going to generate discussion, that is just an ad, that is just, hey, I launched my startup. And there's a big feedback loop there of if you come to Lobster's and you see spam on the homepage, like DPK pointed out an hour or so ago, you are less likely to come back to Lobster's tomorrow." Because why would you want to go to a website and just see ads? Ads suck. He said, someone who has deliberately opted out of becoming a twitch affiliate yeah actually if you're new to the channel god early on i hit the threshold for being a twitch affiliate and i've passed on it because then the stream has mandatory video ads and those suck all right
03:30:29arh68 i'd rather pay to lurk lobsters than have ads lol
I feel like...
I feel like this one of, have you written comments on non-promo stories that were contemporaneously above average, is really promising.
slaterusa yeah, don't make it invite-only, make it one-time $5 (or whatever) per user account. the "f.u., pay me" model :D
And I guess another option for changing the code would be, if a restriction fires, put it in a queue for mods slash more trusted users to consider.
This came up at the end of the origin code stream.
David Price- Oh Slater USA you're proposing the.
David Price- Oh God i'm blanking on the name that's the something awful model it costs 10 bucks to make an account on something awful and it's pretty easy to earn a band there, and so the punishment for bad behavior is 10 bucks basically.
David Price- It that has a bunch of incentives and in the wrong directions.
David Price- Aside from.
We also would need to be attached to the, what is it, the Big Mac Index?
Isn't that what it's called?
pushcx https://en.wikipedia.org/wiki/B…
The fuck would I want Google to access my location?
Yeah.
So because there is a big difference in world currencies, let's make this bigger.
You know, okay, so a Big Mac is 535 in the United States.
slaterusa brb moving to indonesia
But then, here we go.
In Colombia, 377.
So it's getting it.
There's a big difference in the exchange rate.
jangomandalorian 6.65 in Uruguay? wow
Moving to Indonesia.
Yeah, there's also, people do this on Steam.
What is it called?
There's a cute name for it.
arh68 i think twitch subs were like way cheaper in turkey for a while
Steam for taking advantage of
jangomandalorian I knew where we an expensive country but not THAT expensive
Yeah, Uruguay, I think that one is import tariffs and the cost of shipping.
Uruguay, it could be like they have one big port and the port got damaged.
Oh, are you actually in Uruguay?
jangomandalorian Yep, british uruguayan
Bigger.
03:33:28slaterusa netherlands with the devil's number
jangomandalorian Next to argentina
jangomandalorian on the right
must be reading the the web page i don't see it on the map here or i'm just missing uruguay yeah so some of it is labor costs some of it is shipping costs because beef is a fairly expensive product i'm almost it's india is funny because not only is it generally a poor country there are enormous cultural norms against eating beef i'm genuinely surprised
by the implication that McDonald's would sell a beef hamburger in India.
As a big brand, I would think they wouldn't touch that.
Next to Argentina on the right.
Am I missing it?
Oh, it's down here.
dpk0 there are a lot of Christians and Muslims in India who are fine eating beef
jangomandalorian Suriname
For some reason, I was getting it confused with Guyana, French Guyana, and then there's one more little one tucked up here along the top of Brazil.
dpk0 (and non-Hindus in general)
So right continent, wrong end.
You know, DPK, the last time, yeah, there are Christians and Muslims in India who are fine eating beef.
As a visitor and guest there, I don't eat beef in India.
jangomandalorian @dpk0 but percentage wise is quite low, right?
And the last time I went there, I saw ads for this chain where they were very explicitly selling beef hamburgers in a, this ad is being presented as slightly transgressive and
It was really weird for me to see a like, hey, come break cultural norms.
And as a tourist with a bunch of, I stick out like a sore thumb in India.
Because aside from being six or eight inches taller than average, I'm super white.
jangomandalorian π
So I, I don't know.
That one is weird and iffy.
arh68 i would wonder if their beef tastes better
In any case, it's very uncommon to see beef for, in my experience, it's been very uncommon to see beef for sale in India.
arh68 but otherwise who would go overseas and get a big mac cmon
frici it's also very possible that the big mac in not beef in india, mcd tends to have a style but they also tend to adapt to the place
And it also may just be it's an advertising norm of it's allowed but not talked about much because of the general cultural prohibition.
I don't know.
Who'd go overseas and get a Big Mac?
So there's two things.
jangomandalorian @arh68 you would be surprised the amount of people visiting italy and eating in McDonald
Number one, you're forgetting that people live in these countries and have a Big Mac because for them it is exotic foreign food.
But then also when I've been traveling for like six weeks or so, I start missing American junk food.
So I have gone to like a KFC in India.
03:36:25dpk0 i want to know whether the price for Israel is the kosher or regular McDonalds
Anyway, Big Macs aside, clearly if we're going to have a big discussion, I should stick that Big Mac index in the... Oh, I lost the tab.
Come here.
...42slaterusa they also have regional stuff you can't get in US Mcdonalds
arh68 @jangomandalorian i guess so. i'm just thinking "royale w/ chees" now LUL
dpk0 (i donβt actually know if thereβs a kosher Big Mac)
So one reason not to... One reason not to say that Lobster's costs $5 or $10 an account is...
I don't want to be accidentally discriminatory to countries with a much lower purchasing power.
And I, I also touched on this earlier before you connected.
I talked about a online book I liked, cuz I was like, oh yeah, if you have the budget for it, this is a great guide for rails.
And I was thinking it was 30 bucks and it's actually 40 bucks.
And on top of that, it's 40 bucks a month because they've made it into some kind of subscription course.
So I have to find a new resource cuz now it's expensive.
03:37:35slaterusa make it $5 but you get one free invite :D
Make it five, but you get one free invite.
Yeah, every year you're on the site, you get one more free invite.
...47So one thing we talked about with the origin code was sticking it in a queue.
And I would really like to reduce the false positive rate because that 20-ish percent on
the restriction of unseen domains from new users, that's pretty high, especially given that I mentioned it's common for people to sign up for a site and not become active.
So if people sign up for lobsters and something like 50% of them don't use their account, all right, so in that remaining half,
Somebody is in the 10% that decided to contribute to the site, because it is roughly that of people who contribute more than voting.
And then they had this negative experience.
That's really unfortunate.
I think Wikipedia has a 99.
Here we go.
It's shown up.
Cat, stop pushing escape.
pushcx https://en.wikipedia.org/wiki/1…
He pushed escape while I was trying to type this.
arh68 ur pair programmer HahaGingercat
slaterusa what's the cat's name? :D
So Wikipedia calls it the 1% rule.
anshulxyz cat is a vim user
I've always heard it called the 99-1 rule.
Yeah, he's my per-programmer.
He's Raz, R-A-Z.
He's shown up on stream.
You'd have to dig back in the archives.
but he's laying on the desk and when he lays on the desk, he sticks his paws out to the side and then he's like, oh, your fingers are dancing near my paws.
We're playing.
And he's doing that thing where he's half asleep, so he's half-heartedly trying to grab my hand, but then also he's nodding off and his eyes are asleep until I take my fingers away.
I guess what I'm saying is I'm an enormous sucker for cats and I have the cutest...
anshulxyz pressing Esc to go to Normal mode
Best cat who is the most cuddly and lovable.
03:40:04So to put it in the other order, what I'm saying about why I hate false positives so much is contributors to a site are something like 9%. So if we're also losing half of new users to the fact that people kind of bounce off of sites, well, then this graph is half as wide. And if creators are only 1% of site users, I really care a lot about not having false positives and not driving off the positive ones who would be beneficial to our community. I don't think I can off the top of my head, three hours and 40 minutes into a stream, do a good job of getting the right names off the top of my head. So I'm not going to try, but there are many regular commenters on the site who are creators who make stuff, who write newsletters about programming, who release lots of libraries, who contribute to public projects, and they are some of the best users on the site in terms of they are not just there to promote their thing they are showing up in other people's comments to say hey check out this other thing hey here's a neat blog post or what did you mean by that like they are wholesome members of the community i don't want to drive them away especially knowing that they are so rare and precious so that's why i keep coming back to let's grab this url for the notes That's why I keep coming back to false positive rates. Actually, let me put it up here by the word false positive.
03:41:59Put it in this more note-shaped thing. Whoa. Brass. Let's grab that again. There we go. Look at me clipboard. You know, as far as recurring stream things go, we have my microphone issues when the volume slider isn't open. We have rain fucking up the stream. We have the cat putting his fingers on the keyboard. And then we have me struggling with Linux clipboards. And I think those are the four things that come up like every other stream.
03:42:46So one nice thing about this idea of detecting recent, you know, recent well-received participation. It's such a bad name. I had to do the hyphen versus underscore. It looks so ugly. Is I don't have to put this in a rule. We can just start detecting this now and tune it as a metric before making it part of any rule.
03:43:36dpk0 stream broken
arh68 droppin frames like Yankees outfield :(
espartapalma buffering?
So I think that's the place to start.
If a restriction... Oh, cat, you have to let me have my hand back.
He's in a fighty mode again.
Rockman frames.
We're coming up on the end here, I think.
Buffering.
I'm sorry.
pushcx It drizzled a half-hour ago soooooo
It was raining a half an hour ago, so...
03:44:19frici oh its not me downloading things
pushcx I think we're at the end here.
So I'm going to hope that the stream has recovered enough.
Oh, and I can see the little spinny on the stream manager.
So Twitch is sad at me.
Maybe it's all gone to hell.
Yeah.
So I'll say it in the chat too.
These two options metric around
dpk0 nearly 4 hours must be a new record, even considering breaks for rain
pushcx These two options: the metric around detecting good activity, and a story submiassion queue, are the two next steps.
Detecting good activity and a story submission queue are the two next steps.
Nearly four hours.
Even considering .
Yeah, actually, I think one of them I went over four hours, but I would have to dig back through the archives.
Yeah.
03:45:26pushcx Thanks for talking through this all with me, it's been a lot of fun.
So I'll just say thank you all for talking through this with me.
It's been a lot of fun.
arh68 would you reify good activity into like a Self-promo Token that goes on cooldown, I wonder
I really appreciated the comments because they have forced me to get explicit about why do I care about false positives?
Why do I care about feedback loops and incentives?
Why do I talk about this stuff at all?
And what are the risks worth taking here when we automate this stuff?
...57self promo token that goes on cooldown. Yeah, that that really gets at the problem with where is it? I think that's an important thing is we want it to be externally visible to other site visitors, readers, without being a public shaming. Maybe it can be a mild public shaming. So when we talk about like a token on cooldown, I would really like to be able to look at something on a user's profile, even as a non-moderator, people to be able to look at each other and go hey how is this person doing on this and the purpose is not shame although that is a pretty good way of enforcing rules sometimes but it contributes a lot to whether the system feels fair because if there is like an internal counter that only the submitter can see then the other users have to wonder things like, well, is it possible that a mod went in the database and reset the counter for them? Because if they can't see all of the inputs to the system, they can't trust the output. And it's not they can't, it's just they have questions about it. And I would like to minimize those. I can't totally eliminate them. But the more we can minimize them to build a system that people trust, the healthier the community will be. Yeah. I deleted the word externally because I don't mean that this needs to be public to non-readers. So one thing is, one example of that is, if you look at the stories controller, Oh, jump tabs.
03:48:40When we display a story, if you are logged in,
So if the story is gone, that means it was removed by the submitter or removed by a moderator.
We go and locate that moderation event.
But then we render two different templates.
If the user, so it says user in this context, but it could be a random visitor who is not logged into the site.
They just get a 404 page.
If the person is logged in, you see the moderation message.
And that is to avoid making public tombstones for stories.
So that one was very specifically motivated by the Bitcoin is like a handjob post.
If you submit something really gross and awful, you will get the boot.
The story will get the boot.
I want users
actual people who are in the community to be able to see the moderation message, so they understand what happened.
but I don't want to create a public tombstone for the story because then we are immortalizing the Bitcoin handjob guy and saying forever that we are hosting this page publicly for other people to point and laugh at.
And it becomes a way of abusing the site where if you submit the worst possible thing that is not even topical and is super gross and it gets removed,
then it still would become kind of a public black mark.
So I've removed the word externally there, because what I mean is users should see this and the community should build trust.
I don't know that it needs to be visible to people who are not logged in users.
The discussion around self-promote
slaterusa thx for stream :)
don't see it spill out into mastodon and blue sky in the way that other questions about topicality or site abuse do spill out i don't think it's just that interesting unless you're in the community all right yeah three hours 51 minutes i'm gonna call it i will have this archive post up in a few minutes
And I really appreciate if anybody wants to direct message me or drop by the chat room anytime.
I'm not always in the chat room, but I do typically read the scroll back.
You can email me.
You can message me on the site.
arh68 next stream when ? monday i assume PopGhost
You can send me a message on Blue Sky or on Mastodon.
Not on X. I haven't been there for two years.
So many ways to talk to me.
I appreciate it.
Next stream is Monday.
Yes, as scheduled.
Monday is not a holiday or anything.
arh68 cool beans VoHiYo
So it will be my afternoon.
And who knows what time of day it will be for you.
But if you are viewing through the Twitch website, there is a schedule tab just below the menu.
And on my stream page, you can get the ICS calendar feed if you really want to get alerting around these kinds of things.
But the next stream will be as scheduled.
I hope to see you all again.
And we will, unless something comes up, I mean, hopefully I have pull requests to review, I will probably end up starting with this analytics of heavy written comments on non-promo stories that were contemporaneously above average.
frici take care π
Because I think building that, like, I can almost write the SQL query off the top of my head, and then we can start tuning it based on
arh68 just unit-test so my account passes it lol
comparing against history and mod actions, and then decide, do we want to hang a feature on that and a code rule?
All right.
Hey, Ray, Freachy, real good to see you all.
Unit test on your account so it passes?
Yeah.
All right.
Take care, everybody.
Hope to see you next stream.