Also We Told Your Mom
Streamed
The open feature request #1299 for self-service data export, even for banned users. Closed PR #1916 for not meeting “widely available”. PR #1914 adding restrict_with_exception. PR #1912 to filter more secerts. The implausible PR #1907. The “continvoucly morging” Git branching diagram is obvious plagiarism; can LLM generated code be copyrighted. Event sourcing as a natural fit for LLM-driven development. Removing the story submission form on acculturation-related validation failures instead of re-rendering. dzwdz’s got issues. The Net (1995), The Conversation, punch cards, netiquette, and ordering pizza online in 1994.
scratch
topics
sqlite
story submission: for new user fails, don't redisplay form
modmail feature for tattle; if new_user, include their inviter
PRs
popover https://github.com/lobsters/lobsters/pull/1916
restrict_with_exception https://github.com/lobsters/lobsters/pull/1914
filter settings https://github.com/lobsters/lobsters/pull/1912
issues
title
post-stream
migration for Messages to use new System user: prohibit Messages to System and inactive-user
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
01:19lolcatSwag meow
Let's get started.
Let's see.
Probably help if I turned on the screen.
There we go.
Hi, Lolcott.
...35So this is Lobster's Office Hours.
I'm Peter, or BushCX on the site.
We're on Lobster's, which is this site where we chat about programming.
And
RuggMatt Heya
pushcx Howdy, ask questions anytime during office hours!
Office hours is a time to chat about it.
Or to do maintenance, where I try to keep lobsters from taking over my whole life, because there is plenty of open issues, plenty of stuff to do.
And my general plan for today was to do a quick pass through some of this stuff, but mostly to look at the
SQLite migration that Thomas has been working on for some time.
Because in between the last stream and this one, I sorted out the last of the issues with running Thomas's migration script in prod.
So
In my local dev, that has, oh, hey, rugmat.
It's funny, your name is a synonym, like a rug is a mat and vice versa.
03:03So yeah, I would like to...
Just trying to build confidence in that PR.
And we'll see if Thomas drops in.
So I'm going to spend a few minutes on other stuff before testing SQLite.
But that's the big valuable thing I want to get done today.
But then otherwise, feel free to ask any kind of questions about the site or the code base, and we'll work through stuff.
pushcx https://lobste.rs/about#queries
Yeah, just this morning, actually, I got a DM from a user who said, hey, can I have an export of all of my comments and their scores and such?
And there's a note on the About page that I will run queries in prod for people.
So I did.
I ran this for this user also once in, sometime in 25.
pushcx https://github.com/lobsters/lob…
and then there is also speaking of open issue, if somebody would really like to be awesome, there is an open feature request for exactly this.
where I would like for users to be able to export their own data.
I think it would just be a nice convenience, especially for folks who are deactivating, whether that's temporary or permanent.
And there's a couple of comments down here.
I won't read all of them on stream or anything, but I would also like it to
work for banned users because even if we had to show somebody the door i think it would still be good to give them you know a zip file with all of their upvoted comments and stories save stories written comments like we not may not be happiest with them but like they should be able to export their data so we'll see if somebody takes that up
It is not on my personal mental to-do list because I try to make...
I try and spend my development time on things only I can do.
So that's things like merging to main, but also building out mod features or...
fixing performance issues in prod, anything that requires prod access, or is about setting community norms.
I don't know that I've ever written this down somewhere, and I don't know where I would write this down, but this is part of my development philosophy, especially the last, whatever it's been, year and a half that I've been streaming, because
We've gotten so many more contributions.
The more I do the stuff only I can do, we get just more stuff through because there's all these other features that other people can contribute to.
Yeah, that's not...
I clearly have never tried to say this out loud before.
That came out a little confused, but I should put that somewhere.
Maybe in a contributing doc.
07:00Oh, there's a pull request to show off on stream, actually. That one was a little sad. There was this pull request, 1916, that someone opened last night. And I had to, why are we not? There we go had to close this one, so we have a couple of bugs open about the caches links. there's this one and there's one more also from the same author. and We've already had one swing at this with the pop over API but.
...56the popover API doesn't meet the widely available baseline standard.
So I apologize to this contributor that I was going to close their PR, because I hate to waste somebody's work.
But even though I noted it at the top of application CSS, I didn't think to note it in the README, where in the README I have
Especially this last couple months, I have been expanding a little bullet list of, hey, here's some really odd things about the code base that are not like other Rails apps.
Oh, big sir, hello.
Do you want to join the stream?
You want to go up in your spot?
It's warm today.
I don't know if you guys heard that ow-mow, but that was the boss of the stream.
No, he wants to play fetch, and I cannot play fetch.
graefchen MYAA limesD
Oh, big sir, you have such a hard life that you can't play fetch on demand all of the time at your convenience.
That's basically cat abuse.
I'm a terrible person.
Yeah.
I'm glad the mic is picking it up so I don't just sound like a goof talking to a
voice in my head i'm at least a goof to talking to my cat you know that's totally respectable so i added a note to the readme about the widely available standard and then farther down in here we're chatting about well look if that caches pop-up menu thing is just never going to behave like a pop-up menu given the technical constraints we have
Maybe they should work differently so maybe they should just be like a second line i've been thinking about adding a second line of.
By line anyways to move moderator stuff out because.
there's this and this is just the the fake data so there's not as many flags but there's also like flagging info that gets squeezed up here for us or maybe that's only on the single story view I you know now that I'm not actively looking at it I just can't say it but yeah squeezing this in might be
A real neat thing.
And hopefully, like, the fact that this new contributor is still chatting is optimistic because, you know, if you put the time into making a PR and writing it up nicely like they did, getting it closed is pretty discouraging.
10:47Okay. Yeah, so this is... This is a really wonderful proactive PR, it sounds like.
11:06Rails has a feature that I kind of think of as real risky.
...23where when you delete an object, you can delete associated records. And this is part of Rails' weird approach to foreign keys. And...
12:00And the database consistency gem that we use pushes to set up these dependency relationships. The Rails database is very oriented around soft deletes, or the lobsters database. And so we don't delete many records. And if we deleted stuff, That's probably a terrible bug. And so it would be better if we used this restrict with exception to hopefully kill the transaction right away, rather than take one bad bug and cascade it through the database, deleting as we go.
13:12Oh, OK. It's kind of a painful view for a giant paste.
...33So what is this one about? Oh, yeah, I mean, I already, if I didn't see this exact stack overflow answer, I got this out of the docs.
...51So then the last thing is.
14:05mail github spec i wonder if this is some kind of cleaning up test data yeah the after context hook so this is where it is that code
...37the end of search spec, but these failures are not on the search spec.
...54Does the story spec have any kind of cleanup? Yeah, there's no after hook at all. And there's, yeah, Rails helper. We have the database cleaner. I wonder if this is a result of using the truncation strategy instead of the transaction strategy.
15:40In any case.
16:33What was that? Was that the ?
17:53Two commits? What's the second one?
18:17Yeah, I'm going to just go ahead and squash that down.
...38So this one stream regular jam list who might or might not be present.
I noticed on a stream that because of a combination of bugs, I managed to print a token to the screen and I rolled it while the stream was going.
And then to protect me from foot gunning myself again in this way or related ways,
She opened a PR to try to use the filter logging and then we kind of talked through how those and related features work.
marcoroth_ Happy Thursday!
And I think that's going to turn into a slightly different PR whether she opens another or.
hey Marco.
20:04I don't know if you followed the 1871 PR about migrating, but it's almost ready to go. I remember you were paying attention to that one. Oh, I didn't see where this one went.
...27Was this a separate thing?
jmstevers hello
Why is this failing?
marcoroth_ Also not sure if it's just me, but you seem oddly quiet. Maybe it's always been like that.
I thought I must have copied and pasted that into a commit.
Howdy, Jam.
...52No, I'm, oh yeah, you know, I look at the mic and I'm peaking a little bit lower than usual. Maybe I bumped something. Let me grab, Now that one's all the way up. Test, test. How do I sound now? A little better? I'm trying not to raise my voice, you know, but hopefully that'll be okay. I do have a compressor on, so I shouldn't actually be able to peak. Yeah, not sure what would have changed in the setup. Just make sure the mic is pointed at me properly. It's a... If I remember the jargon, it's a cardioid mic, so it has a fairly small hotspot.
22:26pushcx https://github.com/lobsters/lob…
I still don't know what to do with this PR.
marcoroth_ Nice, great to see the progress on the SQLite PR
This one's, if anybody hasn't seen it, it came up on the last stream, yeah, where a username I didn't recognize whose GitHub profile has no Ruby repos or web dev stuff opened a 1,200 line PR to add a complicated feature.
Which felt a lot like five coding which we don't accept because of copyright issues which there is a story on the homepage about this right now.
I don't know old heads will remember the.
marcoroth_ I love how blunt your first comment is in that PR LUL
In here yeah so ages ago 15 years this guy invented a get branching and merging model for released software where.
the master branch would have...
I was trying... not to be mean about it, but like a, hey, let's talk about what's actually happening here.
Especially not recognizing it.
I had no idea if the person had seen the rule, and...
we got three drive-by PRs in the couple of days beforehand from people that were just very conspicuously vibe-coded.
marcoroth_ well, you can all just delete that file with the instructions
And so it's like, okay, there is some kind of tool that these people are using that's ignoring the agents.md because it is implausible that all three people... Why don't...
Yeah, it just, it feels implausible that all three people independently were like, I'm going to delete the agents.md and then run one of the common tools that would respect it.
Yeah, it's just, it's an extra step and it has worked for four months to prevent obvious vibe coded PRs from showing up.
And then all of a sudden over the weekend, it looked like it stopped.
And so it's like, okay, is this,
There are so many orchestration frameworks because so many people have rolled their own.
Like, is it one of these?
Is there something else we can do?
Is it a new IDE tool?
I don't know.
Anyways, so this diagram very conspicuously was...
Does he have the... Oh, he doesn't link to the full diagram.
25:14Does someone link to it here in the comments? I saw it go by on Blue Sky, so I didn't click into the comments.
...32marcoroth_ the best way to tell if it's LLM generated code is to look at the inline comments
Oh, here's someone asking for it.
26:00marcoroth_ and this PR does have a lot
So there's the original.
Yeah, this is exactly the comparison I wanted.
So this is the one that just, you know, it's obviously AI because the various arrows make no sense.
It talks about major feet down for next release.
Time goes the wrong way.
There's lots of spelling errors.
There's this very funny one, this excerpt that got used a lot.
bug fixes from the rail branch may be continuously morgue back into develop.
...55responding to that comment that was looking to for a copy of the full diagram just to link this so aside from how incredibly dumb this is it's also obviously plagiarism like this is like here's the original which got reproduced far and wide this is unambiguously plagiarized. This is also the copyright concern of vibe coding tools. Like it's possible now with the models that came out in November and the harnesses that people are building around these vibe coding tools to get, you don't get this kind of quality out of them. That was true early in the year. Yeah, Marco, the fact that it was so much in one commit from someone with no... I mean, it uses a whole bunch of Rails features in a way where I was like, would someone really notice? The Rails API is huge and has some complexity to it. Would someone really nail that on their very first Rails PR? And I say presumably because this guy could have, you know, 500 private Rails repos they contribute to, and I wouldn't know it.
28:44marcoroth_ no yeah, this is 100% LLM generated code
ChaelCodes Ah, continvously morging.
So anyways, to finish my thought, even if you don't, even if your vibe coding tool
creates a good quality version.
29:03twitchtd Hi pushcx
And even if you ignore the moral dimension of plagiarism, you have the legal problem of copyright.
Where Microsoft could not copyright this diagram because it is so obviously knocked off.
pushcx https://www.congress.gov/crs_ex…
the other one it is the the legal term is derivative work aside from the legal concern that i think i've shared this link on stream before but the congressional research service which is a non-partisan part of the us government we're going to skip some politics
But an actual write-up by actual lawyers on the state of law for the output for LLMs, I am not going to try and summarize.
a multi-page article with a bunch of conditionals written by actual lawyers.
But the short version is there are serious limitations to your ability to copyright and license the outputs from LLMs and other similar programs.
So that's, that's why I don't want LLM contributions in lobsters is I just don't want to, it feels like playing Russian roulette with the licensing and the copyright.
Just that's not, it's not worth it.
Although I am aware that we have 178 open issues, which are bugs and feature requests.
And I am aware that if I wired up a Ralph loop on Claude code, it could probably turn through 80% of these and get some reasonable version of all of them in, I don't know, a day or so.
Which is wild.
31:36marcoroth_ an you would leak all the private user data in teh process
ChaelCodes That feels like it might overestimate Claude's capability.
marcoroth_ if you would setup a ralph loop
so aside from morging yeah these things are all done leak private user data marco i'm confused chael no i've been playing with stuff like it's
32:04graefchen Every time someone mentions plagiarism, I need to think of that one HBomberGuy video and the trouble the game developer of "Marathon" got into. limesO
Mark Grove, I am not going to do it, but if I would, I would flush the database and run the fake data task.
...18pushcx https://github.com/minicodemonk…
ChaelCodes I use Claude at work. It needs supervision.
Where is this?
Ah, here you go.
So Chail, here's a project.
I know the developer of this one.
It needs supervision, and people have built supervisory loops around it.
So chief is one of them.
the basic gist of it is it fires up a cloud session to prompt you to write a to-do list and it helps you expand on that to-do list.
And then the main interface is this, where it takes the to-do list and
Having written a prompt, it starts Claude off on the first item on the to-do list or the highest priority looking item on the to-do list.
marcoroth_ Congrats: now you are a PM, fun! Kappa
And if Claude like blows out its context window, it kills that iteration and tries again with the progress it made so far.
And then you can build a whole like review workflow around it.
Yes, that's feeling like a non-technical product manager is very weird.
I was chatting with some folks and I was like, I'm very bad at vibe coding because I watch Claude and I watch the design it spits out.
And then I like have to immediately hit escape and be like, no, no, no, you can't, you can't do that.
You have to have a hash for that.
No, you're duplicating this.
You have to have a constant, you know, I'm very bad at vibe coding because I can't watch it write bad code.
theGeekPirate The ponylang creator had a fantastic post about that
But a huge lesson I learned in my career like 20 years ago was the users don't care how bad the code is if it runs in reasonable speed and it accomplishes something and it doesn't have bugs.
theGeekPirate https://www.ponylang.io/blog/20…
They don't care if it has a... Geek Pirate, if you want to share a link, that'd be great.
Users don't care if I used an array properly or did I ship my data around in a class with nice attributes or a hash or an array with positional stuff.
marcoroth_ "Vibe It Work, Vibe It Right, Vibe It Fast" or something
And I have strong code design opinions on those that are not particularly controversial, but it's well below the level of a user caring.
ChaelCodes The point of clean, readable code is making modifications without introducing bugs.
issue we've had with so many bad code design decisions is that they slow down the speed of iteration and they make the program unreliable and that is less of a concern with vibe code because throwing claude at the bug or the design issue or the tests is still way faster than
having a human fix it.
I don't know.
Oh, Chael, since you dropped by, there was... Actually, let me skim this before I jump on.
It's already on my topics list to talk about the direction I was going.
35:45Oh, yeah, this feeling was like a junior developer with no memory.
I have said something like this in early last year when I started playing with the tools in seriousness.
I also added that they were weirdly good at remembering very specific things out of the manual, because even with hallucinations, occasionally it'll spit up some random config setting that appears 3,000 words into the Rails docs.
theGeekPirate :D
theGeekPirate Yeah, I only started after the Opus 4.6 announcement, has been an incredible couple of weeks
then the models in november feel like a developer with like three years or four years of experience under their belt which is a huge jump and then claude code and codex adding skills of well now it can look stuff up now it can run commands is another big increase in capability and then these orchestration
brow floop frameworks are again another step up.
37:03Ah, yeah, yeah, if you jumped from, like, not interacting with the chatbot version to Using one of these furnaces, I could see that being kind of mind blowing to jump from.
...25Yeah, this has been one of the real interesting thing about Claude is throwing it at its own config file and its own skills. There is a meta skill there that I am still learning.
38:12theGeekPirate Have finished multiple projects which I've wanted to do over the last twenty years, but could never find motivation for. Some in a ten minutes MingLee
marcoroth_ it's really good at doing things if you tell it exactly what to do. It's really bad at coming up with complex architecture and ideas that aren't really a thing yet
Yeah, my Geek Pirate, along those lines, I was using Chief earlier this week and it literally ran overnight on a project that's hung out on my to-do list for a year or so that I would want, that nobody else in the world wants, but it was never worth, like, realistically, 500 hours of development time for me, a senior developer.
And getting a version of that in, I had to stop it after like 12 hours or so because I was doing some other stuff.
I think it's going to finish in something like 15 hours of Claude time, which is bizarre.
I don't know if the version that comes out is going to be especially good.
I'm really curious about that to evaluate.
Yeah, Marco, part of this was an architecture thing of I want it to store data like this and be.
I think there is a really big opportunity for event sourced data models.
danthe2 it cant do abstraction
Both because they address a lot of issues I've had on lobsters where a lot of the stuff I fixed over the years has been.
marcoroth_ ^
Well, I wish we had decided this differently 10 years ago and the data is gone, but we have it now, and if we had something or you know the moderation log is a.
theGeekPirate I haven't dived into the orchestration stuff yet, but I'll get there. Have heard it's a gigantic leap from solely using Claude/Open Code itself
An audit log of sorts.
40:03And if we were serious about flipping the script and doing an event model everything, a whole bunch of the issues we've had over time would have disappeared. And that's stuff like backfilling all of the username changes so we can render comments properly. That chewed up a bunch of time. But event sourcing is also interesting for vibe-coded stuff. Because I don't have to care as much if its data model is wrong, because I have all of the events and I can change the data model and then I can regenerate all the aggregates. And now I have turned back the clock and fixed the data model, even if I didn't notice it for weeks.
...56marcoroth_ there was actually a talk at RubyConf TH about exactly that. How event sourcing is perfect for LLMs-driven development
ChaelCodes Still here
So, Chael, the thing I was going to mention, if you're still here, is you coded up the Mod Mail feature.
It has been into limited use, but on the last stream... Oh, neat.
Marco, is there a link up yet?
In any case, I'll have to watch that when it is up.
Glad to see that someone else is thinking along the same lines.
Last stream, I was working on a bunch of new user acculturation stuff.
So when new users submit stories, I didn't mean to lose the scratch.
Let's jump over here.
They get warnings like, hey, you are submitting your onsite.com.
That's an unseen domain from a new user.
We restruct this.
restrict this to discourage self-promotion and give you time to learn about topicality.
Skirting this with a URL shortener or a tweet or something will probably earn a ban.
Like it explicitly says, if you break this rule, you're going to get banned.
And then also, there is this tattle function that logs to the mod notes so we know someone saw this error message.
We can't prove that they properly read it and they comprehended it, but it was there.
There's another one on tags.
So tags like, off the top of my head, culture practices and vibe coding are restricted from new users because, as the error message says, they're prone to off-topic submissions.
well with five coding, cuz there's just so much generic, I vibe coded something and it's like this repo that's 10,000 lines of code that they spit out with Claude and there's nothing to do with that.
Like there's no discussion to be had about like, yeah, I mean, I think at this point we all know that these models can kick out little code bases.
So.
This is a kind of harsh message of like, hey, if you try to end run this rule in the very obvious way of just don't add that tag, I'm going to ban you.
And I don't know how to say it like simpler than that.
But when someone with no contribution history is like, I see a bright line rule, I'm going to break it.
I don't know what to do there, right?
And it's especially frustrating when someone does it around like a topical story.
Cause then it's like, well, I'm going to boot the user and not the story.
I've gotten apologies and, and it's a whole thing.
I'm not going to rehash the whole thing.
marcoroth_ https://www.rubyevents.org/talk…
The writing this message is hard to convey the seriousness of it without coming off as cruel and threatening.
44:08Ah, thanks Marco.
ChaelCodes We can't see it...
oh it's this guy andre i think i read a book by him right i'm trying to click through to his website yeah so he's the arkansas ceo i thought he had a book or something
In any case, yeah, I'll have to watch this talk.
Thank you.
Yeah, no, I pulled it up off stream.
I try and open links off stream and it's right there in the chat.
All I did was click through to his homepage and scroll down a second.
So in any case, the point of these rules is
People join lobsters with a lot of assumptions that we work like the sites that we look like and i'm specifically thinking here of hacker news and reddit and we have different rules we have different topicality we have different Community norms.
If.
We don't acculturate those people.
We would just turn into those sites, because all of them are you know enormously larger.
And I was thinking about where to take this and one of the ideas I had last stream was.
You know this gives you.
An error message but it's like a form validation error message and.
We have all been trained by at this point 30 years of the web that.
forms are just generally flaky and so it is a very common thing that you know you fill in a form and you click submit and a red box with a dumb mistake appears at the top and it's like you have to delete the dashes from your credit card number it's like really are you are you kidding me you can't handle that one yourself and we all deal with like you see one of these every single day so when you join a new website that you don't yet
know in a meaningful way, like it hasn't built up any trust with you.
And you try to submit something and it immediately gives you a red error message.
We have been all trained to go like, okay, what's the fastest way that I can jump through whatever dumb hoop your error message is about and resubmit this so I can get on with my task and complete my goal.
People become very goal focused.
And so, you know, the entire web, the entire experience of using every website, including lobsters, we've had these kinds of bugs, trains you to skim these error messages and ignore what they're telling you and not take them seriously.
So I was thinking, at the minimum, hey, you know, when you hit this error message,
We shouldn't re-render the form because this is actually not a fixable error.
We should just stop.
You should get a page with the error message and no form.
And we kind of kicked that around in part of the discussion.
And I still want to do that.
But the other one was we were talking about how this tattle function worked, that it goes to the mod notes and we kicked around language for
what if i wrote in here i bet if i hit you no i lost the history like i i tried various versions of like this was logged and mods no you saw it but like every version of this was just just ominous and like serial killer-ish of like the mod is behind you right now and they have a knife like
There's no good version of this.
And there is also a problem with, like, we're trying to prevent some bad behavior by bad users, but this thing has a false positive rate where very conscientious users see this.
ChaelCodes The mod _is_ behind you. They're a secret assassin.
And then, like, I've gotten apologies from people who are so conscientious.
They're like, oh, I fucked up.
let me go apologize.
And I'm like, no, this is totally fine.
You followed the rule.
Everything is fine.
You're not in trouble.
And so someone in the chat joked, yeah, someone in the chat joked like, well, what if you, instead of noting it to the mod, what if you noted it to their inviter?
And you told the person who invited them like, Hey, you teach them about site norms.
ChaelCodes 😬😬😬
And I thought, Hey, that's a great idea.
Like that's very explicit.
Yeah.
The goal of this thing is to acculturate people.
So they understand site norms, right?
There's like, there's, there's two goals and they're sort of the same thing.
Like one is prevent the negative thing of improper self promo or
otherwise inappropriate posts from new users, right?
That's stop a bad behavior.
But then there is also promote a good behavior of people learn the community norms
and participate in a healthy way, right?
So I don't just want to prevent a bad, I want to promote a good.
And if we use the Modmail feature, we can do both.
So this could create a new Modmail conversation
dzwdz does the form still appear after the warning?
between this person and their inviter and say, hey, so like number one, gonna stop you right there.
DZ currently, yes, that is, I should put it on the to-do list.
50:55It was on my last week to-do list and I didn't do it.
But and the reason I'm I keep mentioning chill code for anybody who hasn't connected the dots is she wrote the model feature.
dzwdz also i still think this is absolutely going to make the "people frantically apologising for something that wasn't bad" problem even worse
And so I was suddenly even more thankful of it because.
I remembered that she wrote this so it can have multiple recipients.
51:28DZ maybe.
ChaelCodes I listen to requirements. :)
dzwdz you tried to post something with a bad tag. this is fine, but we also told your mom
I think that's going to depend a lot on the prompt because if the form submission just stops, I think it will break the habit of, well, all I have to do is tweak the form until it goes.
I hope.
And hopefully that means the message can become a little bit less threatening.
Also, we told your mom.
I mean, a little bit.
It's going to depend on this intro message that we write here, but it's going to be a, like, hey.
let's have a chat about this right here.
The best person for you to ask is the person that just invited you.
This also has the nice side benefit once people have seen it once or twice of slightly increasing the responsibility people feel about those they invite because it's
ChaelCodes Will it run if I find a cool story, try to post it, and find out someone else already posted?
dzwdz my point being that maybe this isn't worthy of a chat
You know, oh, that annoying guy at work realized I was on there and he asked me for an invite and I don't want to have a fight in the break room, so I'm just going to send him an invite.
dzwdz this feels like a negative experience for new users
But if you go, oh, you know, there is this way I'm going to become responsible for him.
Maybe you don't send him the invite in the first place, right?
DZ, I think it is.
Daniel Katz- A chill if you try to post it, there is a flow in the submission form, where, if you try to post a story that has been submitted in the last I think week or maybe it's 30 days.
Daniel Katz- You just get redirected to that discussion and there's a little blue message at the top that says hey somebody submitted this link recently here it is.
ekaitZZa hey! I just tried RSS with filters in lobste.rs and I love it! just wanted to thank you for the work
If it was submitted more than 30 days ago, you get a second version of the form that says, hey, this was submitted a while ago, but you can resubmit it.
To promote a discussion, please write a first comment for the thread.
And that has worked out really well.
graefchen But shouldn't have users that actively break the rules have a little negative experince? limesHmm
DZ, it is much more negative if somebody treats this as a form and they get yeeted over a thing they didn't know to take seriously.
theGeekPirate Having them submit a comment first sounds great
You try to RSS with filters and love it.
Oh, great.
You're welcome.
ekaitZZa :)
I don't know how to pronounce that one, but welcome and I'm glad you like it.
But Grave, we caught the person before they broke the sight rule, and so we are trying to gently nudge them on the path of righteousness.
And... Oh, you're responding to DZ, I get it.
Yeah, Geek Pirate, that's... Let's see, spear...
55:05dzwdz yeah, but we can just handle this by hiding the form and a small message saying "hi, don't do this. this has been logged to let mods catch users acting in bad faith, but this is not something you have to worry about"
dzwdz or something like that
ChaelCodes I think they're accidentally breaking the rules though.
Maybe it's similar.
dzwdz i don't think knowing that someone i invited wanted to post a culture story is useful in the first place
Here we go.
It's this flow.
...46Dizzy, could you elaborate on what you mean by useful?
I can see a couple of ways to take that.
dzwdz such as?
I can't even find my own code.
56:34dzwdz for me that's just "hey, they're a new user, and they learnt that they're not supposed to post that story yet. whatever"
Don't remember where this is.
Let's go.
dzwdz a much more useful signal is what they *do* post
I don't have a test account set up right now, do I?
...53dzwdz rather than what they didn't post because they honestly tagged the story
Yeah, but DZ, the actual experience tends to be that the new user clicks the little X on the culture tag and then they submit it anyways.
57:23dzwdz that's because the form reappears
dzwdz hiding the form fixes this
I mean, we can do multiple fixes.
...33ChaelCodes I've had a few of these "Don't post this story" messages. I just learn and drop it. It might be embarrassing for me if pushcx gets a message every time I find out I'm not supposed to post a story. 😅
dzwdz if you want people to feel responsible for invitees - how about stories/comments from recent invitees are highlighted for a month or so?
So how do we want to do this?
...42It's gotta be... This is one of those times where I get really annoyed that the Rails validation is on the model and not the edit because it is the circumstance of the edit action where it is the fact that the user is new and the story that leads to the... Oh, chill. Like 90, 95% of them result in nothing. It's totally fine. It doesn't matter. It's just a thing that scrolled by on the mod dashboard.
58:34dzwdz when do they result in something?
Oh, DZ.
That's a great idea.
So if Alice invites Bob, when Alice looks at the home page, Bob's story is indicated in some way to Alice.
I think that's great.
Is that something you want to code or do you want to file a feature request for that?
59:17dzwdz have i ever actually wrote something instead of backseating
dzwdz i can make an issue
Wouldn't you like to come whitewash this fence?
...35Well, thanks. I appreciate it. We'll have to figure out what the UI for that should look like. It would be real nice if it was somewhat consistent between stories and comments, but that's harder.
...53Yeah, so there's this whole kludge of putting the editor or the user
dzwdz wait, wait
dzwdz editor?
dzwdz does that mean new users can't suggest the culture tag etc?
dzwdz no, i'm looking at the code, sorry
the story model so that it's in context because that's part of the validation and i'm aware that rails has grown a like sort of context thing for this did i say the word editor i'm kind of juggling the task of thinking about this code and responding to you so maybe the wrong word came out of my mouth
New users can't use the suggest link.
01:00:41At all, actually.
...49All right.
...54Well, there's permit by new user.
dzwdz i was referring to the u = editor || user line, to be clear
I thought there was also, you can't be a new user.
Was it list detail?
Yeah, story can have suggestions from.
Editor or user is an artifact of the way that it interacts with mods.
because we have to use the same model for a user editing their own submission as a moderator editing someone else's submission.
01:02:13I think I'm just going to flag it on the model and then make the controller deal with it, even if that violates teledot-dask a little bit. Yeah.
...55dzwdz ah, so we're preventing freshly invited moderators from using the culture tag, got it :p
Isn't there a header accessor is what I want.
01:03:17It's a reasonable description of what we're doing.
...30Let's drop down to these tattles. Let's say this one.
...49I'm in the wrong place. I'm on the wrong branch, because I was working on SQLite stuff. Let's use split.
01:04:08So this is going to stay put.
...16Well, that too, that shouldn't even be here. I thought I deleted that.
...30And then this is going to go over to a new commit about... Yeah, there's... That's part of why I've slowly pulled out the mod controller stuff is... But it's echoed down to the model layer because... Rails really pushes you to the idea that one model maps to one table, and so then the model has to be usable in every context, even if it would be a different domain model.
01:05:36Let's rebase np after main.
...53Okay, so that's where that wants to be. What's my current status? That's fine. It's just ignoring dump yaml, which... Let's just move this out of... Actually, I don't need this anymore. Because, you know, I can actually dump and restore just fine. All right, so that's fine. Yeah, let's pick up from here. So everybody's happy. Everybody's happy. Okay. So we're going to grab this. That one's a security validation. That one's no big deal. That one's fine for just mods. This one we'll grab. Do I want that to be a... Yeah. I can do a draft and then come back. So we'll say this one, even though that's a dead code path right now. Don't need that one or that one. This one doesn't show up often. That should stop the process.
01:07:45Okay. And then up in the controller. So the story won't be valid. Which drops us down here. And we will say if Story.newUserAcculturationError.
01:08:19Can you tell this is our got object with this kind of complexity in the create? So we will render a new action named just same thing, right?
...39so let's what did you just change on me oh okay it's fine yeah that does flatten it out that's valid all right so we will say stories new and we will save this as app view stories new user alteration error dot html
dzwdz any reason why we don't have an rss feed link in the footer, btw?
dzwdz it's not that discoverable
and instead of re-rendering the form with a preview dz no not really i did just add some rss links to the site but there could be more yeah we just recently had an issue around
finding the RSS link that includes your filtering token?
01:09:55ChaelCodes Contributions welcome, @dzwdz . :)
That one would be an especially easy first contribution.
01:10:08So what do we want to say here?
I think we want to say it's going to differ based on different things.
dzwdz i was thinking that it could maybe also pop up a menu asking if you want any filters (for users without an account)?
Actually, maybe we just want to redirect over to ModMail.
Yeah, we've made the ModMail.
...45dzwdz for example, you can filter out vibecoding
That would certainly be a nicer view.
01:11:05Just to pick an arbitrary tag, huh?
...36dzwdz look why do you think i brought up filters
ChaelCodes The RSS feed link in the footer could reflect currently applied filters.
dzwdz it's the most filtered tag, and i know someone who removed lobste.rs from their rss reader because of vibecoding
i think that's a pretty good reason i'm i'm not being smart you know just smart oh my god thanks grandma that was it's funny like sometimes that kind of thing comes out of your mouth and you're like ah i feel like i'm nine again she used to say like don't get smart with me such old-timey
01:12:12dzwdz i think it would be nice to make this as discoverable as possible
yeah chair, I think they're I think DC is talking about.
...20wanting to improve the discover ability of filters to yeah.
...33So.
...41Where's the initial? We're going to do the, let's just make everything null pattern. It's a Ruby special. So here, we're going to say, what do I want? Inviter discussion. Create inviter discussion with this user and a message. We'll think about that. Are there any other attributes? I don't think so. So then this guy is going to say create an inviter discussion, takes a user, takes a message.
01:14:11If. The user doesn't have an inviter. What do we want to do? So on lobsters, that's just JCS. But on any sister site that has had open signups for a while, it is possible to just sign up and not have someone who invited you. I want to be able to just write these messages, assuming they have one. So I'm just going to say no.
...48What is it, invited by?
...55Invited by user.
01:15:21dzwdz hm, right now the "authored by" nick color takes priority over the "new user" color
dzwdz feels like that should be the other way around
I don't know about that.
Could you say why you think the priority should be the other way?
...53isn't going to be a story reference is there because we didn't persist the story that's okay though because it's not strictly required to have a story or a comment reference okay good data model
dzwdz i take that back, i was just too much in the "taking accountability for new users" mindset
So we'll do that.
So then the recipient, right?
Where's the user reference is?
No, it's called mod mail recipients or it's called recipients.
It's called recipients is what I want.
And I want to say the user and the user.invitedByUser.
01:17:09That looks good. And then main messages.
...19In a nutshell, it's funny.
People don't usually take on
big PRs like you did with adding models.
And so it's very strange to me to be like, I have this model and I don't immediately have all the attributes in my head.
I don't know the API right off the top of my head.
ChaelCodes Le Gasp
It's kind of nice.
Reminds me of the last job I had where there was a big code base.
Because it was millions of lines of code, and I was constantly running into code I don't know.
It's funny to do that in lobsters, which I know like the back of my hand at this point.
01:18:03That's redundant.
ChaelCodes I'm glad you like it! ✨
And then we'll return the mail.
I guess we want to create bang both of these, because all this stuff should crash if it fails.
...23Yeah, I do like it, actually. This has been nice, and it's made it easier for us to collaborate a little.
...41I think that's all I want. It's just that kind of helper. So let's think about these messages.
01:19:13What do we want to tell people? We want to say... Where are you? Alright. Why are you way over there?
...42Okay, winter is happy. So let's say, can we know in this context, we can't assume the invited by a user exists. I'll just have to nil check it. I don't want to. My kingdom for lazy evaluation. Oh, that'd be funny to add to Ruby.
01:20:52grab this message because it's reasonable, right?
01:21:04So what's the the nudge here is kind of the thing we want is this is an opportunity to talk about site norms.
...36How do we want to say that?
...43I guess I could just say it like that.
dzwdz twitch chat is so jank for me today
This is a good opportunity to talk about
...58Gotta include the story info somewhere.
01:22:15People don't know the word norms. Sociology jargon? What's the better way? What's the non...
...31dzwdz no way people don't know "norms"
I guess I could say site culture.
twitchtd etiquette?
I feel like, you know, etiquette.
...50This one's not an etiquette question, but that is a really good choice for some of the others, I think.
01:23:12theGeekPirate netiquette
theGeekPirate ;)
dzwdz how do you know "etiquette" but not "norms"
netiquette oh man deep cut i just recently re-watched the net with sandra bullock which speaking of teaching people the basics of computers they don't quite have to introduce like how do you click on things with a mouse but it's not so far off
...51theGeekPirate I'm not sure I've seen The Net
So what if we said, like this?
And then we said, because we expect different things with them.
01:24:10It's a cheesy classic.
...19It's...
...25theGeekPirate As one reviewer puts it, 'The Fugitive' Meets AOL
it's not it's not like a super tightly written movie but it does get at a lot of what would become later anxiety or reality depending on your your perspective about
who has power over things and how much power computer databases have over our lives.
theGeekPirate Neat
There was a lot of this in the late 60s and early 70s.
So I don't have to introduce punch cards, right?
theGeekPirate nods
Folks remember what punch cards were like, even if you haven't seen one, you know what a punch card was.
When
big companies were starting to computerize, they would send you a bill
And the bill, let's say like your electric bill, and it would include a punch card that you were supposed to send back because that punch card was your individual customer identifier.
And then they could have their mailroom open it, grab your check, note that the check was for the correct amount.
And then the person who opened it would punch a card with the amount that you were paying and put it together with the card that had
your customer ID, and then all of that could go in a stack and then the nightly batch job could handle it.
boarush I learnt about norms first time in my sociology class, pretty eye opening
And these cards would say, do not fold, spindle, or mutilate, right?
01:26:17So that's an old timey meme. Yeah, there was even a movie using that name. Yeah, it's exactly the thing we're trying to do is teach people how the community works.
...40So that was a lot of people's introduction to, hey, this computer knows a bunch of stuff about you, like how much electricity you used.
And it led into early techno thrillers of the early 70s.
And then the net is...
I think it's worth watching because it's kind of the nineties version of that, of the culture making sense out of, Hey, by the way, computers are mediating everything in your life.
You should understand that a little.
And what if somebody nefarious was doing something bad with it?
And there were some of these in the seventies, but the fact that like, the classic is the conversation with Gene Hackman.
theGeekPirate That was a good one
where there's another movie about the cultural anxiety of understanding what it means that there can be electronics that record even your intimate conversations.
How do you understand, though?
And The Net is like the modern version of it, and I recommend it because we're still using the web and, you know,
The monitors are big clunky CRTs instead of flat LCDs, but everything is recognizable.
And so it's an interesting cultural artifact because it's just old enough that it's like, oh yeah, everybody had to figure these things out.
And we had to explain what a database was, but it's, it's new enough that you look at it and you know what you're looking at.
Where some of the seventies stuff, like I've had to explain what a reel to reel recording tape is to the nibblings.
theGeekPirate Watching it now ^_^
or, you know, what a punch card was.
01:28:31Watching it now?
Well, it's certainly more entertaining than this stream.
graefchen Old Technology. limesPanics
I don't have a nice haircut like Sandra Bullock in the 90s.
01:29:22theGeekPirate haha
theGeekPirate I watch everything at 3x speed anyways, so it's only 35 minutes worth =b
twitchtd hackers came out 2 months after the net :) another 90s classic
man i you know i listen to podcasts at like two and a half three speed depending on accents but i never do that to well i do that to some really old tv shows because some of those are kind of roughly paced from the modern times and i don't really care about it but otherwise i enjoy the actual performances and everything so
I want to see all the details.
theGeekPirate Anime was the worst for it personally, I'm hitting 8x speed and simply reading subtitles
I want to see it at 1x.
It feels a little bit... Yeah, hackers is another one about...
understanding youth culture and computers and their effect on society I mean the idea of hackers where it's like oh yeah your corporate Insider could do incredible things with their access is the whole plot get tired at that point if you're watching it at 8x just just read a
theGeekPirate I could, but it would probably be faster to watch the episode itself :D
a really detailed review or read the the fandom wiki plot summary a lot of animation gets padded for runtime though lots of like slow reaction shots that are very cheap to animate yeah
01:31:29chamlis_ I do not think I would've made it through some TNG episodes without speedup
theGeekPirate Once I realized how much time I was saving, it's hard to go back. NewPipe on mobile is another one, since it cuts out any dead air
theGeekPirate on top of the speedup
Yeah, you know, I understand time saving, but you know, for the same reason I don't sprint through the Art Institute, I'm not there to see the most paintings per minute.
I'm there to appreciate the art.
theGeekPirate Yeah fair enough, my memory doesn't work well enough to remember things (at any speed), so I watch just to get through it =b
yeah you know channels it's funny you mention it because i was gonna say i've never watched a movie or a tv show at a multiple speed but deep space nine i think i watched it like 1.5 x in god back in the early 2000s i think i had a i borrowed a friend's box set and
dzwdz i used claude to read neuromancer and it's amazing how quickly i was able to do that
the DVD player would play it at a high speed because they hadn't quite gotten the seeking totally worked out.
So we're going to put a...
01:32:54How many can say? Yeah, we'll put an if around this.
01:33:09It's a field called description, right?
...38theGeekPirate Sheesh, ordering pizza in 1995, that's one hell of a luxury (RE: The Net)
How does the bot node handle it?
...57I should have just, all this stuff is right here. Yeah, let's just do it like this.
01:34:24yeah i think at the time i don't remember when dominoes introduced online ordering they did it i want to say they were the first one to do it they were a very dominant national chain at the time and it's certainly possible that you know some local shop did it but
01:35:09chamlis_ ...and as if by design, the Hackers OST is now syncing to my player
theGeekPirate > In 1994 Pizza Hut introduced PizzaNet, the first website that would allow customers to place food delivery orders online.
All right, so this really isn't an error anymore.
It sort of is.
theGeekPirate Pizza Hut had some great unlimited buffet
Ah, I didn't remember if it was before or after the movie.
Thank you.
...42theGeekPirate Probably costs $50 now
We're having some deep culture cuts.
01:36:02theGeekPirate Kids eat free!
Do I even need the mod note anymore?
...14I don't know that I do, because it'll show up in the activity.
And it would just be all the same info again.
The only thing different is when the user joined.
heypushwhyisthesitebroke i have audio muted so i can't actually hear anything that will be said but the front page of lobsters is better than normal today so i just wanted to say "good job"
And I have cared a little bit, because sometimes I look at that and it's like five minutes.
...43heypushwhyisthesitebroke okay, off to enjoy the morning; goodbye all; happy hacking
chamlis_ thanks to users like you
don't think i get to take credit for that one the front page today that's that's just the submitters maybe rolling up some of the discord and cryptography stuff because i've done a bunch of merges lately but otherwise i'm not submitting all the links anymore
01:37:15Yeah.
...21I can do a PBF source, and thanks to the support of viewers like you.
This just becomes a mod activity.
Yeah, this is totally redundant.
I get to delete code.
dzwdz tag suggestion: discord
Did I want the timing for the user join?
dzwdz for everything related to Eris, discordianism, or lack of order
You know, it's not really this positive tag suggestion Discord.
Actually, I did just roll up like three or four stories into the whole, hey, what are we going to use if not Discord?
I've been tempted to, oh, actual Discordism.
Naming it just Discord would be...
very meta i was gonna say i've i've thought about deleting all the discord threads because they are about like hey this software we use rather than making software but enough of the discussion has been around the actual design of chat software and what goes into it and why does this stuff matter that as long as we're getting topical discussions out of it
dzwdz "List of Discord replacements" and it's just a list of religions
I felt pretty good about it.
dzwdz tagged culture
A lot of those, you know, so when I remove customer service posts, like someone's mad at Gmail, there's nothing to be said about development.
Like there's, there's a flimsy one of like, well, everybody should see that you can't treat your users like this.
And it's like, yeah, but that's not really what's happening in this article.
And we're not going to have that conversation.
We've learned that one over time.
Yeah.
All right.
So we'll say that.
And then we can delete that.
Nice.
Yeah.
Monmail can just replace that.
So let's grab this whole thing and go find the next one.
01:39:47let's get back up to the story controller before i forget about it so this is going to the flash will already be full so we will redirect to Actually, I think I could just give the object, right? Story, and Rails will introspect the, well, we'll test this, but might even write a test. I think Rails will redirect to, probably not. Controller, no, let's say, let's give the path. I'm uncertain enough that I don't want to lose time to that. It's going to be the modmail. Yeah, just the modmail path.
01:40:55And I lost my clipboard.
01:41:09I'm actually going from the top part. That's the first one. This is in here. All right. So this one, let's put this in. You know, discussion is kind of the wrong word. Maybe it's conversation.
...35Let's see how this goes. So this one is about brigading.
01:42:03Do we have an anchor tag for it? I don't have to look.
...13Do not, but we do now.
...39Can I do relative links?
...56I know an absolute link will work. OK, now this one has a lot of duplication. So let's go over to the mod mail.
01:43:28Mod, mod, mail. All right. I'd rather extract a helper than move it over.
01:44:28All right, so this goes around here.
...36You are all way out of order, aren't you?
...47dzwdz filed #1919 Highlight recent invitees. i also added a second section in there talking shit about including the inviter in the mod mail
I see the ridiculous name.
I'll fix it.
01:45:20dzwdz which is a slightly more well-formed version of the argument i made here
Talking about including the inviter.
Okay, I'll buy it.
...40Ooh, in lobsters red.
...53A peeling emoji? OK.
01:46:00theGeekPirate The chick one is cute
So I'm going to add an idea for conveying this responsibility.
If a user tried to submit a story and failed, it's a signal they've honestly tagged.
Doesn't convey much.
01:47:00theGeekPirate 🐣
dzwdz at least just hold out for a bit with including the inviter in the modmail, let's see how the other fixes go
Thank you.
01:48:10theGeekPirate Day 1: 🥚 Day 2-5: 🐣Day 6, 7: 🐥
dzwdz oh, on that note, i think last stream chamlis brought up forbidding the user from submitting the story at all, even under different tags
dzwdz i don't remember if you responded to that
Yeah, DZ, there's an item in the story merging UI about having the idea of draft stories.
And when we have that, it would be possible to save the attempted submission as a draft and then have everything be smarter about it, like
have the story form, recognize that there is a draft, have a queue for users in good standing to review and start their own conversations, all those kinds of things.
But yeah, that's how I plan to accommodate it in the data model because it's a bunch of features in one.
01:49:35dzwdz i'm wondering what the rss filter menu could look like
To.
01:50:49DZ, I'm pretty bad at coming up with UI, so I don't have brilliant ideas for you there.
...59Nogweii isn't it only 2 greater thans?
So now, if we've got this, why are you mad?
It's two, not three.
I can never remember here doc syntax.
Yeah.
Ah, Nagwe, nice to see you again.
You got it the moment I did, though.
Of course, that means you got it before me because the stream's on a little bit of a delay.
So let's grab this and clean up the duplication.
01:51:59dzwdz maybe we could just have an "RSS" link to a page that explains what you can have RSS feeds for, with an inline form for filtering things out
And then this is the one I'm adding to introduce.
Oh yeah.
Using the username.
dzwdz keeping it simple
I liked that rather than the generic for you to introduce name to what's going on in the community.
You could have an RSS link to a page that explains that you can have RSS feed for.
Daisy, that actually sounds pretty great.
Nogweii @dzwdz still catching up, what's this UI you're contemplating?
And we have, you know, the other thing it could do that such a page could do is list all of the available RSS feeds because there's stories, comments,
Think one for replies.
There's RSS feeds by tag and by category.
There's multiple tag RSS feeds.
dzwdz such as /top/1w/page/2.rss
I think this all would be really nice to put together, yeah.
I don't think even I know off the top of my head, obviously, what all of the RSS feeds are.
And if we had one page, it would immediately point to, hey, it could be useful for people to give them an RSS feed for their DMs.
Oh yeah, there's the top, the newest.
DZ basically wants to make it easier to find the RSS feeds and especially the fact that you can filter RSS feeds, whether that's you're a logged in user or you're not.
01:54:02dzwdz i mean the only two useful feeds are front page stories and all stories
All right, so this one is done.
There's the one I just added here.
Nogweii topical link is missing the closing parenthesis in the markdown
So this one is about brigading, and it's not
Oh, this one is not just about new users.
If they are a new user, we want to do this.
Otherwise we just want to log in.
Yeah.
So.
01:55:16Nogweii in the about topicality mod message
dzwdz can't help but notice the regex checks for https
all of those sites okay yeah that's fair i was gonna say they all like 301 to hdps but you're correct thanks because if they 301
...54So this is going to get a little repetitive for new users. So let's put this down here for regular. Up here, we'll say just the first part.
01:56:14Yeah.
...33What's going to render these errors? Because it's not going to go into the flash unless I force it in.
01:58:31It's fine. It's a little redundant, but I could move this part down.
...54I think I would make a Vim abbreviation for that one of these decades.
01:59:10I'm already at two hours. Time flies when I am achingly slow at writing messages. So now there's these two left.
...42Yeah.
This one, what is this one about?
A new domain from a new user, which this is a rule that does not work well or well
enough it catches new users doing self promo all the time like almost every day we also need an idea the code base i think it's time to take another run at the idea of what the guideline about self promo is because
Basically, we see issues where folks aren't new users, but they are not participating in the community.
And either they are coming back to an account that sat dormant for six years, or they have maybe upvoted some things, but they're not actually talking in conversations for months or years.
But then when they have something to promote, they show up and it's like,
Nogweii is it time to codify the self-promo ratio?
we want to reward that the point of the rule is that it's about participation in the community and we want to celebrate the excellent things that our community members are doing but someone isn't really participating just because they have a user account they may just be using us for traffic so speaking of stuff only i can do i've got to get at that sometime here but
02:01:30So this one is not dot new user underscore question mark. It's is new. So here, this one's going to go away.
02:02:01dzwdz just noticed you can't filter out lobste.rs interviews
Because we don't need it anymore.
I'm searching for the wrong thing.
dzwdz reading them is party-mandated
You can't?
Because it's a media tag?
That feels like a bug.
02:04:00dzwdz i assume you can't filter them out for the same reason you can't filter out announcements
dzwdz they're both red
graefchen Why would you even filter them out? limesHmm
This is this doom thing I like where I don't like where it's just talking about the negative instead of talking about the positive thing it wants to see, which is how I try and write the guidelines.
ChaelCodes I was on mute because of a meeting, but instead of 🥚🐣🐥, it should be 🦐🦀🦞
The red is privileged, which I think is just intended to mean that you have to be a moderator to use that tag.
But
dzwdz @ChaelCodes lmao
Nogweii @ChaelCodes hah, that's great
not being able to filter it out sounds like a bug we do use the lobster emoji in the mod dashboard and i mean we did sponsor the lobster emoji back in the day what is that almost eight years to the week actually
02:05:00Eight years?
Seven years?
No, eight years.
Yeah, it was early 2018 that we sponsored the Lobster's Emoji.
dzwdz we need that lenovo brand deal too
It's down in the trivia on the About page for anybody who didn't know that one.
I had hoped we would be the sole gold sponsor because the way Unicode did it, they said we will let one person be the gold sponsor and then up to five will be silver.
Nogweii @pushcx 8 years.... oh god has it been that long?
And we made it to silver.
I have the...
So we ran a GoFundMe and I have a little certificate that they sent me framed up on my office wall.
Yeah, Nagwe, time flies.
And I think we're like a week out from that, maybe two.
I think the fundraiser ran for 30 days and it either started or ended in February.
02:06:39dzwdz discourge
appropriate, exploitative, immediate self-promotion.
02:07:12dzwdz :set spell
dzwdz tag suggestion: discourge
phy1729 Boo Red Lobster is the gold sponsor, so can't get it anymore.
You know, DZ, if there's a discord, it's this bridge.
I don't know why it's not highlighting inside the string.
thissumsup Is this your site lobst.rs?
if there's any of them, I delete, it'll be this one.
Yeah.
PHY.
Yeah.
Nogweii @thissumsup lobste.rs with an e but yep
welcome this sum this sums up yeah all right yes i run lobsters so if you have any questions about the code base or the site we can chat about it otherwise i'm working on some new features
And DZ, what I was trying to say was, to your criticism, if there's any of them that get deleted, it's going to be this one first, I think.
Because this has a fairly high false positive rate, and I'm not sure there's much for the inviter to say.
theGeekPirate @ChaelCodes :D
So this I'm going to just delete.
yeah and this one this one isn't live and it has never been live but i wrote it out on office hours and i kind of kicked it around and realized it was going to have a high false positive rate because all the time
People link to other people's, I don't know, dev.to or medium posts or to GitHub repos.
It's the self promo that's really a problem.
Because honestly, if a site has an origin, it's probably fine.
I think I'm just going to delete this.
It's never been live.
And I would rather address inactive users deliberately.
Yeah.
Inactive in the sense of not participating, not inactive in the sense of deleted one's own account.
I think that's all of these.
Yeah.
All right.
So now let's save that.
Let's go back up to the story controller.
Let's say the Flash.
dzwdz should we have official buttons
Error is the, what is it called?
dzwdz 88x31, 88x15
No, not erb.
S equals story dot new.
S dot full messages?
Full errors?
What's it called?
S dot errors?
Yeah, of course we should.
02:10:39dzwdz an animated one with claws clapping
Where is there a null?
It's a very literal null.
I must have typed null instead of nil somewhere.
dzwdz would you add them to /about
So I think this is story.errors.
messages, because I do want to include that.
An anime Oh, adding an animated GIF.
I mean, DZ, if we're gonna add one, it has to be awfully cute, not just like a little cute, but nauseatingly cute.
02:11:41twitchtd I'm going to head out, thanks for the stream. Did you get the saturday morning google meet invite I sent over to do the sqlite migration by any chance?
All right, so this one, let's move all this stuff into these.
So then this becomes a very specific thing.
And then there is a longer explanation.
I like that.
02:12:13Oh, Thomas, I'm sorry I didn't get to your SQLite while you were here. Did you have any bright ideas about how to make sure that MariaDB and SQLite are in sync?
...31Because, yeah, the load DB did work, which was a wonderful feeling. It took 10 minutes to run, but that's fine. 11 minutes? Yeah.
02:13:04dzwdz scrolling text "LOBSTE.RS - THE UBER MEGA CRINGE GHOST TOWN - THE TOP PLACE TO INFIGHT ABOUT THE VIBECODING TAG"
dzwdz with sparkles
twitchtd dump mariadb, dump sqlite + load into mariadb + dump again and compare the 2 dumps of mariadb
twitchtd that's all I could think of
Thought I got the email.
My index has been a little rough this week.
...52twitchtd or write a seperate script to pull data from both and compare in ruby
It's a shame the marquee tag has gone away.
Dump MariaDB, dump SQLite.
dzwdz it's not, it still works
Load into MariaDB.
Oh, that's smart.
Yeah.
02:14:22Yeah, so if we took a dump from MariaDB and a dump from SQLite, they should be identical.
twitchtd for that first option to work, you would need to sort the descendants and the columns before dumping
And if I load either of them into MariaDB and dump again, that should also be identical.
Yeah, we could just use the round trip property.
Yeah, that's excellent.
That's a lot better than having to write a script.
Yeah, that's totally it.
Thank you.
Need to sort the descendants and the columns.
02:15:04Yeah. I'm not sure we'll need to sort the columns because I expect the YAML serializer to do them in the same order because it's working on the Ruby object, right? No, it's working on a hash of the... Let me just look at this dank thing.
...29Oh, Alice Kong opened a new one.
...44Okay. I can squeeze a sword or two into that pretty easily.
...54I'll see how it goes.
Honestly, it might just be stable already.
dzwdz hope you'll feed the bird after the stream
Oh, you can hear the bird?
Yeah.
twitchtd yup you got it, basically make the dumps stable enough so that we can do a diff and see if there's any issues that way
They're somewhere here.
We're having a...
a fall spring here in Chicago.
It's about 60 degrees.
And I'm sure it'll be four degrees tomorrow or today.
It's quite nice.
I'll let that get started and come back to it.
02:17:02twitchtd I'll see you on google meet on saturday for the sqlite migration then :)
twitchtd byte
twitchtd bye
Yep.
I'll see you then, Thomas.
Very exciting.
dzwdz there were so many crows on campus yesterday, i went through like half my peanut bag
So what was this one about null?
Oh, it's not null, of course.
The database stuff, it's nil.
...24dzwdz and ran out NotLikeThis
DC, I've heard stories of people training crows to bring them money.
You know, you give them a peanut every time they bring you a bill.
...52dzwdz i can one up that, one sec
Nogweii @dzwdz NotLikeThis
Here we go.
02:18:08I really want to have Mark up here. Let's just make it a space for now.
...28So DZ, were you throwing your hands up like that to Be frustrated or to protect yourself from crows pecking you to get peanuts.
...57dzwdz https://old.reddit.com/r/crowbr…
I didn't need this.
02:19:04dzwdz HERE'S a crow gift
First crow gift.
...18Well, that's quite a gift. Maybe not as fun as getting, you know, some shiny coins or wrinkly bills, but...
...50So this PR is kind of doing a bunch, but let's see if it runs.
02:20:04theGeekPirate >HELLOOOOO They want a REFILL!!!
Why am I getting an error about migrations?
...21chamlis_ what's the font for the lobsters L, by the way?
Why do I have 157 pending migrations?
I think I'm over on the...
I think...
It's called like copper or copper plate, something like that.
I figured it out once, but it's been years.
If you want to like an SVG of a logo or something, I can send that to you.
Just throw me an email asking and I'll attach it.
02:21:12dzwdz the svg is in the repo
phy1729 Copperplate Gothic Bold?
dzwdz uhh the font is different in the favicon and the logo on site
dzwdz i've just noticed that
chamlis_ cheers, I'm toying with an 88x31
Let's put this one to SQLite and this one to primary.
Let's see where that gets me.
Font is different in the favicon and the logo on the site.
Oh, DZ, that's news to me.
That's a bug worth figuring out.
Or I should say reporting.
Because, you know, you don't solve bugs.
You just find them, right?
dzwdz i filed two issues today i'll chill
You must be a manager.
...55Where does the logo appear on the site besides the FAB icon? Oh, you're saying the one in the upper left of the site? They look the same to me. What browser are you in? Because Safari requests its own like Apple touch icon, 200 by 200.svg or something.
02:22:27What is this error?
...34Why would you, why do you think all of the migrations need to run again? That doesn't make any sense.
...48Why is my MariaDB hoopty? Oh, it's not schema validations. It's schema migrations. Okay, all of these things are in there. So why are you giving me errors about... wanting to run migrations.
02:23:29And you want to run a migration that's in there. Dev and test are in a weird space. I'm running the tests. That's what it is. You want to be like that. It's a separate database. This gets me all the time, especially if I touch the database for anything.
02:24:10Nogweii you can improve your mysql prompt to include dev/test/prod
Nogweii might be helpful
Oh, got some bugs.
...17Nagwe, if you look at pull request 1871, what Thomas and I were just talking about is... migrating from MariaDB to SQLite. So this won't be a problem soon.
...55I forgot that was a generic one.
02:25:19dzwdz why are we migrating again?
dzwdz https://i.imgur.com/VzweL0k.png
And I think despite the file name config.yaml allows you to use ERB.
And so I could simplify this with like the name.
It's in issue 539.
...47Nogweii @dzwdz the SVG is a <path> rather than a font specifically
Is the top one Chrome or Safari?
02:26:06dzwdz also something funky is going on. when i open /favicon.ico in my browser, the favicon switches to be the same as the logo on the site
dzwdz then it changes back after a while?
dzwdz both are firefox
Meta discussion or prone to.
Oh, I tweaked the wording.
...26Nogweii macos?
So this actually becomes...
dzwdz linux, X11
It wants to become a redirect.
Both are Firefox?
...46DZ, you've got to report this one. And maybe we should just make it a build pipeline so there is one source image that gets compiled into the other, as if there is an asset.
02:27:13This changes.
...58This actually should be on the resulting page.
02:28:28Okay, so this one is a local variable that should just be user, not you.
02:29:18Nogweii @pushcx did you catch the missing parenthesis in the markdown of the topicality message?
No, I didn't see it in the topicality message.
...37Nogweii topicality link, er, different message
In a different link.
Oh, I see it.
Thanks for catching that.
...57Nogweii yep, no worries
Got another you online.
Did I not save?
I fixed that.
02:30:41Nogweii above, `user: u`
Ah, good eye.
Thank you.
All right, there's those two fixed.
And then we should be down to just the one error.
Well, maybe new domain for new user has its own, but yeah.
Yeah, that's the same basic structure of error.
So I never remember what these feature are specs.
How do we follow the redirect?
02:31:37Say visit. And then, oh, OK, because it does automatically change it. OK, so then if we say expect current URL to start with modmail, I think. Yeah.
02:32:37Did not get redirected. Why not?
...54New user acculturation error.
02:33:06New user acculturation error. This is in check tags.
02:34:02I'm not seeing it.
...29Oh, God, why are you screaming at me with every single keystroke?
...47That's not great.
...54How is that new?
02:35:10dzwdz filed #1921
Thank you.
...17New users.
Okay.
So it did go into this code path.
Cause that's the new shortened message, right?
With the tags drama.
dzwdz "drama"?
And then this says, well, maybe the mod mail is returning the wrong thing.
It's test data.
Okay, no, this ran.
02:36:11Let's put the debugger here.
...32How is it now? Does create... Bang, not want to return the new object. That doesn't, no, that's not that API.
02:37:03Subject can't be blank. Throwing an exception that's not that's getting rescued somewhere along the way, something is capturing that and we're not seeing it.
...22huh.
...44Why is there a rescue in there?
02:38:09How is that still new?
...24I'm missing something obvious.
...32Don't know what it is, but it's something obvious. OK, so that's a valid call, and it does return the object. And that does get shoved into a database.
02:39:37How am I assigning this wrong? That assign initial attributes isn't running again because we're down in the scope here. It's just run that line of code. And it's like, oh yeah, that object's nil.
02:40:04It does return nil. The user has to have an inviter and they don't in the test. In the test, they're just a random user and the factory doesn't
...42have to be invited by someone for us to tell you to start the conversation. Otherwise, that returns now. All right, this is progress.
...59Because they're called mod mail messages.
02:41:15You know, DZ, there's a couple of other jokes in the test suite along those lines of like some of the links that people submit as example users are like my.startup, that kind of thing. Or the mod log messages are like, hey, quit being a jerk. User must exist. That's a new one.
02:42:04dzwdz i hope you added in all the stories from that n-gate tweet
dzwdz ghost town
the n-gate tweet i thought they just called us a ghost town why would there be any stories in there was there a screenshot in that tweet it's been years since i've looked at this so
...45dzwdz https://xcancel.com/webshitweek…
Okay, so both of these users exist.
This is a failure on modmail.
There must be another field I'm failing to fill in.
Has recipients.
02:43:10No.
...30Oh, these recipient records have to be, okay. How does Chael's controller handle this?
02:44:16dzwdz direct link: https://cdn.xcancel.com/pic/ori…
dzwdz doesn't seem to go through their browser verification thing even
Oh, I didn't realize he had.
Okay.
I didn't remember that he had made that.
...37Hmm.
...59dzwdz i really like the raspberrypi one
I guess we could use those in titles when we're testing validation errors.
So yeah, this sets recipients the same way that my code does.
Ish.
Except I passed an array, and theirs would be a relation.
So...
It still feels fine.
And actually, I ran this in the terminal, and it ran fine.
02:45:50It's got to be something about this U thing where if user is new.
02:46:20Yeah, that's fine. And if I said. Those are both users.
02:47:00What's my hassle? And check tags 616 into modmail43. Yeah, both of them are persisted. 61643. The message has to be from someone. This is modmail message failing.
...36And we don't have a system user for it to be from, do we?
...58ChaelCodes HERE. PRESENT.
Chael, if you're listening, I wanna say that we talked about this one and how in the private messages, we've been using null as a sentinel value for like messages that come from the system.
And I should probably have made a system user at somewhere.
Oh, okay, emphatically present.
So this failure is there isn't a specific user for this message to be from, it really wants to be from the system.
02:48:49ChaelCodes Ohhhhh
In the way that private messages can be from the system.
Yeah, because this initial thing is like,
from lobsters the software maybe I should just make a system user and then we can get rid of that sentinel value which is bad design anyways but that's probably going to take more than 10 minutes
02:49:31Yeah, and I don't want to drop the null false off the user ID. I do want to say validates user presence true just because what's your error? Oh, remove it. OK. I thought I would get a better error message if I had one.
02:50:12ChaelCodes that sounds like a good idea. But you're still hard-coding the username if one isn't present.
ChaelCodes Right?
Yeah, so we have, could give it to inactive user, but I hate that username too.
So we do have this kind of seed data of an inactive user.
If I said there was a, how do I handle it in the app?
I think i'd put it in a constant.
...49Some like. yeah there's a model for it.
02:51:09ChaelCodes Seeds?
yeah it's in the seeds.
But I don't think they automatically run in test, because you can see I had to create one in this test.
...29ChaelCodes Ohhhh.
And honestly, this thing could do something smarter in test.
...40I think I do want to have a system user.
02:52:24And this stuff goes away. This is really just like a singleton factory. This guy is going to have to create one.
...44And then factory, where's the user factory?
02:53:08And there was an issue we were just talking about. We were talking about the linked one.
...34ChaelCodes Maybe User.system_user finds or creates?
I think find is good, but creates is only in test.
And I would be okay with it as long as we said, you know, rails.env.test.
Or I guess find in dev.
I just don't want to like goof it somehow and have it create more and more of these in prod.
This should only happen once.
Yeah, I don't know.
02:54:23ChaelCodes You made a tool for that - right?
A tool for what?
ChaelCodes Verifying prod data starts good
We're actually doing it?
No, I want to say I made a migration for an active user.
ChaelCodes *stays
Yeah, I created it.
No, I didn't.
Verifying prod data starts good.
Stays good?
Oh, recheck.
Yes, I did.
And it's caught a bunch of bugs on lobsters already, actually.
02:55:04I do agree with you. This doesn't need to be its own model.
...33There's no, well, we're calling on the model object. So this instance variable becomes a class variable, right? So it'll still memoized. That's the important part.
02:56:43There we go. It actually persisted. Unidentified method recipients for nil. That's gotta be a typo. Mod mail controller line 20.
02:57:08Which mod mail controller? Okay, the user one. which is not what I got. As modmail recipients includes, why isn't modmail set?
...42We must have, the redirect must have been missing the ID or something. Let's go around and inspect.
...59I don't need that debugger anymore. Yeah, it went with, does the model not have a toParam? No, it does. Huh. How'd I generate the wrong route, then? Let's go back to the story controller.
02:58:27Then I need to say id, colon.
...36Let's just have the spec.
...50This one I'm just deleting.
02:59:03After it follows the URL, what URL does it land on? I'm going to guess it says one instead of a short ID. I still have to remove that debugger. Hold on, it's driving me nuts.
...22It didn't print a URL because it has to follow the redirect and load the page before that line of code. I did on that side. Surprised I got that one quickly when I'm three hours into the stream. Usually I'm not that sharp anymore yeah okay so it's using the wrong id why is it using the id instead of the short id because 2 param should have taken care of that
03:00:31because I returned the message instead of, how did I manage to assign that wrong? No, that's going to be up here, my mail. So I created the thing.
03:01:02Is this a weird line break issue with the?
...12There we go.
It expected, yeah, so I must have said URL instead of path.
dzwdz if lobste.rs had a lobster mascot, do you reckon they'd be the same shade of red as our logo
No, I said path.
But because it's a redirect, it picked up the, so let's say current path.
...35I can't think of anything better.
On the other hand, our logo does change color on the site depending on how active the site is.
Okay, this worked.
Yeah.
dzwdz we crossed it with a chameleon
So this now wants to say...
03:02:11Got to get rid of that dash E on the end.
See that they all pass.
Then I'll see that the whole spec suite passes.
Nogweii chameleo-ster
Good.
So this one is failing probably because there isn't a system user, right?
...44Let me put that on my to do list.
03:03:22This is in the submit story spec. Foreign key constraint fails. This is the test that just passed though, right? Submitting a, is there a different one that says tag in it? I didn't think so.
...59Okay, how are the tests interfering with each other? Because it runs in isolation and it fails together.
03:04:33This one I don't care about anymore.
...51It was intended to catch folks when they see a preview and log it, but now the behavior is different enough that that doesn't tell me anything. And it mostly just made duplicates.
03:05:09So what's the foreign key constraint failure?
...16Foreign key user ID references ID.
...24So story check domain 333 goes to modmail 42.
03:06:05Now only one of the two fails? What? What in the interdependent tests?
...18And the one that fails is the one that works in isolation.
...31Yeah. Okay.
...42It is a little suspicious that these have the same memory address from two different tests. Because they should be deleted between the test runs.
03:07:06That's the error. That memoization. is carrying the object between the two tests.
...22By putting it here, by memoizing it, the user class is not getting reinitialized between test runs.
...44And so it's copying the user between the two. And it doesn't exist in the database the second time because when it gets recreated, it has a second ID.
03:08:15And I can create it here. I've been trying to avoid creating stuff in every test because it slows every test. But if the system is going to start assuming that this user exists,
...43There's going to be validation errors on that. I know it. Password can't be blank.
03:09:17Boy, do I not like fixing a test by better sharing data between two tests. That's a venal sin. A little Lent humor there.
...49But the specs do run.
03:10:05Yeah, there's everybody. Oh, one failure. Who's failing? Expected system to equal something is doing user dot first.
...25Which spec is that? Spec models username.
...34Something.
03:11:19Funny how I mentioned this in the context of event sourcing, and then it quietly breaks the specs for this unrelated change.
...53There's a list of prohibited usernames in here somewhere, isn't there? Is it constant? It's like sysop, admin. There it is.
03:12:23used to be in user, admin, support. Man, everything except system.
...38Good thing nobody made one.
03:13:35Right, so then I'll put this in the Rails helper, because I just did it. And then I'll give them about
03:14:04Did I word this on the inactive user?
...30That's fine. or messages to use system user migration.
...53Doesn't make sense.
03:15:15No, I created the migration and didn't run it. Directly inheriting. I don't?
...32Why is test trying to use SQLite again? This is where we started.
03:16:14Why is it trying to run the oldest migration?
...44Especially if it's already run.
03:17:00This is. I know I've seen this corner case with migrations before.
...55Why do you think it hasn't run? The dev database is MariaDB. I managed to get into this dang state two different ways.
03:18:26Yeah, that's 02.16. That's the one I just made. It ran, but it didn't make the user.
03:19:15I gotta say primary, don't I? I have to have a version.
...42That's a different ID than is up here.
...51So if I run db migrate, it's confused and it's trying to run everything.
03:20:06I have done something in switching between the branches that switches between the databases that is fundamentally confusing the environment setup. In fact, just get rid of that.
...27We're not using production, we're only using dev and test. We could both say Okay, now you work. What did I just change? If SQLite is present, it's trying to run it in the wrong place.
...49That's so weird.
03:21:05It must see the migration and somehow think it applies to SQLite. I don't know. Having two primary databases is not making anything happy, but hopefully this will be a pretty temporary state of affairs.
...50Turned into a bunch. Thanks.
03:22:01I'm going to throw on the banner that we're coming up on the end of the stream here and try and get this deployed. Let's look at the diff. Yeah. Got this create an inviter discussion. We have the system user.
...45Drop those. Memoize. This is fixed. DB seeds. There's another conflict for Thomas.
03:23:20You know, all the reason I haven't actually seen the workflow.
...41I don't want to grab a live user on stream. Let's make one.
03:24:07Okay, I'll restart the server.
...33let's submit to example.com seriously someone oh this must be in a comment okay we'll example.net And then tags by coding, right? There we go. We're finally coming through. Preview. Partial submit. And it didn't actually do the thing.
03:25:26Why didn't it?
...34Is there JavaScript? Is there JavaScript helping me here?
...48Yes.
...54Have I been creating ModMail objects? I want to pull this up off screen in case it's actually a real thing. No, it is creating the objects, but it's going down some kind of preview workflow because of the JavaScript.
03:26:19Why even have this function?
...49Oh, this isn't submitting a story. This is saving a story. It's a form submit that I'm trying to find. Or that I'm not trying to find.
03:27:53So I'm going to click Submit off screen. We saw something go by there.
03:28:04Started a post. What in the heck is?
...15There was some kind of internal exception. Like the code reloaded.
...58And then a create happened. So it did a bunch of selects, the most recent similar stuff. But then it rendered that.
03:29:27This came from Stories Create.
03:30:10Yeah, I saw the message go by. Said rendering new. So I'm in the action, I think.
...39So Did not correctly set. But when I hit Submit, didn't I see the error flash by for a second? Yeah. And then when you click in, it goes away, which is its own kind of bug. It's trying to show you what's wrong, but it shouldn't have re-rendered the flower.
03:31:16Yeah, it's just doing a post to stories. This isn't Ajax.
...50And we know it's going into this code because we saw that error message.
03:32:07And we know it's going into that code because it raises. Is it getting out the other side?
...20Yes, it is. OK. What's the value here? And it's the same identifier. Yeah, because I did a search and it highlighted both.
...45And then what do we see in the console output here?
...53We see an empty line. How is the variable I just set not set? I feel like I just dealt with this with the invalid object.
03:33:17dzwdz nogweii brought up how IE might not support svg favicons on that issue i made
Reload off screen.
...30How is this not getting set?
...43dzwdz i might have bad news on this front already
dzwdz https://i.imgur.com/S0R3YsZ.png
I thought IE was just Chrome at this point.
...58Oh, classic IE. Old school.
03:34:31dzwdz i think it might not support favicons larger than 16x16 in the first place
This is attribute versus adder accessor, isn't it?
03:35:00Nogweii hah, that's fun. I wasn't too concerned given IE's death in the last decade but still wanted to bring up compatibility concern
And it's automatically initialized to nil.
...12No, still didn't print an object.
03:36:03Helps to put the code inside the code.
...15I've definitely gone to the part of the stream where I'm making obvious mistakes.
03:37:07That's running on create. Must be running later. I was thinking of an object initialization. That's probably what it was. I was overwriting it.
...37It's not going to be that. It's going to be that. Load off screen. Well, at least now I printed a nil. It's still wrong, but
03:38:17Is this something about the here doc syntax?
...34No.
03:39:30How can it be now? Oh, it's the same fucking error. It's the same fucking foot gun. It's this. We're gonna get rid of this.
03:40:10Fucking nulls and special cases, right? That took me a while to remember. Let's get rid of that raise. Type system would have caught that. URL is an unseen domain from a new user. New users can't submit stories with the tags vibe coding. Let's have a conversation. Subject. References. Let's get rid of references if there aren't any. And we are into viewing Chael's code. Show.
03:41:05male, male, and the male, male. So we have mod, mod, males, males, males, male, mod, males. OK, that's not confusing.
...55I edited the wrong one. That's OK. It needed the same change.
03:43:44Nogweii @pushcx "Tags: https://...." seems wrong
Who doesn't love a good HR?
...54Tags, you are correct. That is definitely wrong.
03:44:15Didn't hear it twice. Well, there we go. Fixed it. This won't update because this is stored text, but that was it. I must have backed out partial edit there. Thank you for catching it.
...59That could be taller.
03:45:57Of size. Should catch it. Yeah. This is missing a username. Because it didn't reuse. That inviter object.
03:46:36Nogweii null strikes again!
Yeah... What's up?
03:47:09It's a shame that Rails didn't generalize the idea of templating things, because I want to template this string and jump into ERB, but I really can't.
...28This isn't even the right message, but all of them have this issue.
...38You know, This is only going to be an issue on new users on a site with open signup, which is not us.
03:48:09I could just ship it with this bug that won't occur for us.
...31Let's do it again.
...47There's the flesh. There's the subject. There's the recipients. Doesn't really introduce that this is the mod mail. There isn't really a way to browse your mod mail. But it's around.
03:49:09Does it go to your inbox as an activity?
...34Nogweii expand Inbox to include mod mails?
Should have.
I thought it did.
...47Now it creates the mod activity.
...57So how is the I don't think there's a way for the inviter to know that this even happened.
03:50:33No, it has notifications. Why didn't... It has notifications but they don't necessarily get created.
...56Nogweii is ModMail even the right mechanism? Would a regular private message be better?
Nagwe, yes, because we want to have a discussion between the new user, the inviter, and if needed, the moderators.
03:51:14And I want to make sure that folks see it.
...28Thank you.
03:52:08Oh, it's the notify modmail message. Is that not running?
03:53:06Oh, I am way over time. I have not been watching the clock. So where's...
...33forget, does the development server start solid action? What's the name of it? Solid Q in the background? I don't think so. Yeah, I see Puma workers in process table, but
03:55:01You don't want to give me a little feedback on what you're doing there?
...11So we've got... We've got the job queue created.
...44Yeah, the developer setup described up here is live. Let's go look at that.
03:56:05So in development, the queue should be this file. You're not doing anything.
...44So this is just, no, it says it's finished. Sure didn't do anything.
03:57:24It's gotta be this, right? Something failed here, and it just didn't create the object. And since it's not a create bang,
...54wrong console.
03:58:11Okay.
...17No. Supient is an individual, so we'll say recipient equals last.
...35Because it is a user object, right? Yes. So now we'll say, now we will copy and paste this line of code without the bang to see what happens.
...59We call this just message. And so right at, we will say, what, nil? Let's just start with nil. Okay, so that worked, which is awful. I wanted an exception. And once there's a notification, is it in the inbox? Now it's in the inbox.
03:59:41That's some weird spacing.
...53I bet the UL for these items to space them out is falling through and hitting everything because we didn't think about the contents. People don't tend to use lists in their comments. Yeah, notifications li instead of notifications greater than li. Now there's nothing on red. All right, so that layout is fixed. You can click on it to go into the mod mail interface, which is a little clunky, but beats nothing.
04:00:47I don't have a better idea for it. So yeah, the only problem with this was that the job didn't run in the background in development, which is a little awkward. I'll have to think about that.
04:01:13System is a new user, how funny.
...20New user can't submit stories with the Tilex Vibe Coding.
...51I think that's it.
04:02:02Nogweii minor styling difference: modmail has square avatar, inbox has circular
So does this?
...13Oh, good catch. That's just going to be a bug. Yeah, because it's not in the byline. Yeah, she couldn't have done that. So that's going to be in mod, no, view mod, mod, message, message.
...57Oh, it is in a byline. All right, let's inspect it.
04:03:19The byline is not an li though.
...42Is there any reason to care? Honestly, that one could stay the same. And then this one is just, if it's an avatar, round it. Yeah.
04:04:02Thanks for catching that.
...35Dent that button. I think it's fine enough for now, though. All right.
...46Okay, yeah, this got to a coherent place. Actually wanting to see it caught a bug and jumped a little bit. All right, so
04:06:17What else did I change? This turned into a big thing. Create Inviter Discussion, that's ready.
...58Oh, man.
04:07:54Oh yeah, create a system user. This inner Vim has got all of my keystrokes.
04:09:03All right, that's done.
Nogweii question: Should system user really have an example.com domain?
Nogweii for their email, that is
I merged stuff.
Nogweii maybe the site's main domain instead?
yes it's not going to be visible anywhere except to moderators and it means people can't reset their password i mean if they owned example.com they could but i'm not worried about that one
04:10:35I guess so.
...52Sure.
04:11:33All right. That banner has been up for a while. I might as well just turn it off here, but that's silly. All right. All right, that's going to be the end of the stream. Next stream is Monday, 2 p.m. Chicago time. And hopefully on Saturday, Thomas and I very quietly migrate the domain over to SQLite. I'm going to test that before Saturday. given his strategy. Yeah. Yeah, I think we're good. Man, big feature dev today. That's been a minute for me.
04:12:30All right, folks. Deployed. Fingers crossed. All right. Now all the new users will be good and never post spam or vibe coding stories. Surely nothing will go wrong. All right. I'll be back on Monday. I'll see you around the stream then or around the site. Take care.