As fast as I say that, I'm convincing myself it's a good idea
Streamed
Reviewed chamlisโs CSS grid PR #1508 that replaces floats with modern layout. Found some minor issues with form widths and mobile views, but overall itโs a great improvement. Vertical rhythm in design and how to align comment folders with text. Fixed a small UI issue with story descriptions in merged stories. Started looking at reparenting comments for merged stories #1456 but abandoned it after finding few comments needed moving. Discovered a bug with comment counts on merged stories that needs database refactoring. Dogacelโs upcoming PgDay Chicago talk on database testing.
scratch
topics
review css grid PR https://github.com/lobsters/lobsters/pull/1508
many fiddly small tweaks
story merging UI
plan: https://github.com/lobsters/lobsters/issues/1456
topical demo: https://lobste.rs/s/b0edh1/mitre_will_stop_issuing_new_cves
is /stats the cause of oomkills? why I'm not investigating it on-stream
https://github.com/lobsters/lobsters/issues/1526
reparenting threads
select count(*) from comments join stories on comments.story_id = stories.id where (stories.merged_story_id is not null or stories.stories_count > 0) and comments.depth = 0;
4169 to review
need-to-have
need to look the links
look through the top-level comments (not replies!, lots to scroll past)
list of comment short_ids to move -> story short_id
create one modlog entry for all the moves (maybe multiple for length)
"issue #1456: from story [short_id], moved threads [comment short_id.join(,)] to story [short_id]"
gripe:
'active' is sort of the inverse of 'gone' which mostly(?) means 'deleted'
similarly I think 'is_moderated' means 'deleted' on stories or comments
except on tags
title
it's spreadsheet time
as fast as I say that, I'm convincing myself it's a good idea
post-stream
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
01:02Good morning. It is Thursday and this is the Lobster's Office Hour stream. Let's get started. So...
...21Lobster's is taking a moment to load. Hmm. Are we having a...
...37We are apparently having a OOM kill right now at the start of the stream. That's kind of annoying. Let's take a look. No. We're just taking our time recycling workers. Not great. Oh. So I'm looking at the live server. Yeah, we had an OM kill like four minutes ago. So the workers are still recycling.
02:29There's a idea from the IRC channel that maybe it is the slash stats page that is doing this to us in production, because maybe that's pulling so much data, it's just allocating a bunch, or it could even be the library leaks.
03:05All right, so let's take a look at.
...37Fixing a story on the screen here. Just something that needed a quick edit. Looks like that's it. All right, so. All right, that loaded in a normal amount of time.
04:12So yeah, this is Lobster's.
This is the Lobster's Office Hours stream.
I'm Peter.
The username is pushcx.
Obviously, it's the name of the Twitch stream.
Got any questions about the site or the community or the codebase, you can ask anytime.
Otherwise, this is my twice-weekly dedicated time to work on the codebase.
And this is the codebase.
Nice Rails app.
chamlis_ hi!
And there is a pull request that I have been looking forward to merging to start moving the site over to CSS Grid instead of laying out so much with float.
And Chambliss, if you're here, say hi.
Otherwise, I will jump into other stuff before I review your pull request.
Aha, here you are.
Howdy.
So you said this is ready to go.
let's see animation is growing on you yeah so i was going to take one more run through the div and just before stream i reloaded my local database so if i pull up localhost yeah we are only
I don't call it 30 minutes or an hour out of date.
And the real interesting part is that there was just this thread.
Did it just fall off?
Oh no, here we go.
This one about CVEs.
Breaking news got a lot of attention and a lot of responses and updates and alternate links.
So we do have a great example of the new merge layout that I shipped on Monday to look at too.
So over here, let's go ahead and pull down this branch.
06:42All right. This is just a warning if it didn't know. This is one of those. Give you nightmares where. I have tried to. Avoid one foot gun, and as a result, there is some other foot gun when I pull branches where. I get one of these giant incomprehensible errors. Because Git is like so unopinionated and so interested in being a general purpose tool that you can't really use it in a specific way. It's a weird UI thing that programmers do to themselves on the regular. So with that, I also can use BIM diff
07:50So that's from reloading the database.
So, oh, the diff on Ruby version here is tween streams.
I merged a one-liner pull request from, yeah, I just reloaded, to bump our version of Ruby in the hopes that it would help with the prism thing.
It is not helping with the prism thing, but it's nice to be on the latest version of Ruby, except
I am waiting on Arch getting a new Ruby build with that version of Ruby.
So I broke my dev end.
Probably other people's.
I just flagged that this was out of date because I think on Arch, that's how you tell the maintainer that it would be great if you could bump this.
So if I knew how to pull this out of the extra-testing repo, it would be up to date.
Although I guess the other way to read this is that like two days ago, the maintainer started the process of updating.
Fingers crossed.
All right.
So I load a second tab.
You can see there is a slight difference here.
So on the left is what's live on prod on the right.
is the new CSS grid.
Very small difference.
I'm actually surprised anything changed up here in the header gem list.
And down here, yeah, it's kind of minor shape changes, but we expected something like that.
Joshka20 hello!
Let's take a look at the, oh, I like the wider text box.
I was just thinking about doing it because this is lining up with whatever the parent comment width is, and I knew that was going to break when these two things move together.
pushcx If you have questions about the site or codebase, ask anytime!
hi josh welcome if you have any questions about lobsters or i should throw that in the chat so people can see it yep and then otherwise let's see yeah the big difference
Big difference is this column, which adds, what would you call that, like 3M of space to every comment.
This animation is going to stutter probably.
No, it didn't drop too many frames.
My machine is a little overworked right now.
11:05That's got to move just one hair up to match that line, I think. But that feels really good.
...26I'm really impressed by where CSS animations have gone and how much we can do without JavaScript.
That's really nice.
And Chamelis, I really like that you animate this control in the left gutter, but the comments close instantly.
alex4tmm i found a "bug" in a big VPN's app, that allows me to always connect to servers even if im using the free plan, would you guys report it or ask for something in return? LUL
I think that's much better than trying to animate what's potentially like many tall screens worth of content.
Great call there.
12:05chamlis_ a happy accident there I think
Oh, hey, Alex.
...16I think there are a couple of bug bounty platforms, like I think, I don't remember.
...28Yeah, so HackerOne is the biggest and most popular, but there are a bunch of these. You should look up and see if your VPN is on any of these. If they are, you know they're very welcome to people who are reporting security bugs and being able to end run the actual price is a security bug. If not, I don't know. People are real hit or miss about reported bugs.
13:20You know, I'm such in the habit of zooming in on the entire web that I didn't even notice that I did. I was trying to compare kind of the line length layout because maybe our comments could use a little more vertical space to breathe a little better. That doesn't need to be part of this. Chambliss, this looks great.
...52Yeah, so here's this new UI with merge stories. With the bug I just fixed, we'll have to sort out.
14:11chamlis_ thanks! the folder being a bit low is because the upvoter is still there just with a height of zero, so there's still a gap above the folder
But even when the discussion gets fairly deeply nested, this looks better just because...
So as we get down into...
This bit of bickering.
Oh, interesting.
There's still a gap.
We can inspect it.
Take a look.
But yeah, so instead of being, what are we?
Almost, call it like 40% of the way from the left edge of the window.
chamlis_ I guess I should animate the margin-top to 0 as well
Well, we're about the same.
Actually, we're even more indented in this one.
chamlis_ hmm
How is it we... That would work.
But Chamelis, how is it that these things are unified and the comments are still indented?
So I expected this to be like back to the left here.
The overall width hasn't changed.
It's more like the comment folder moved into this column.
And the empty space for it is still there.
Go up to the top.
Let's see this.
15:43chamlis_ good spot, the fake data doesn't nest that deeply
So the first one is wider, or I'm sorry, the first one is narrower, right?
Because these two are together in that gutter column.
...56But then the next one down. This whole area got wider like the same margin left and right is there. So we're indenting the same amount. So the binary difference between the two at the deep place was. Yeah. And it's only really popping out at me because I expected the. horizontal savings to be multiplied, you know, seven or eight deep. All right, so we've got some extra width here.
16:58chamlis_ ahh my 1.5rem minimum width for that column was far too big I think
And I'm not immediately spotting what it's coming from.
chamlis_ line 480 of the css
I wonder if my 480.
17:33Ah, yeah, I was just getting there because I was noticing the comet gutter div, and I was just trying to ask myself, oh, where does this get its width from?
chamlis_ I think if we're going the route of abbreviating long scores we could drop the minmax altogether
All right, so what if I just... Oh, well.
Let's change that to 0.5.
18:15There we go. Now I'm seeing a difference, right? Close this.
...43yeah so that's gotten us a little difference but so i've put my cursor on the new one on the left edge of this deeply nested comment And then on the original, it's still only like two or three m to the right. So if we just say max content, what do we get? Same thing.
19:39It doesn't feel like there's wasted space in here.
I mean, maybe this has a little bit of extra padding on it.
We've lost the comment folder lines on the outside too.
chamlis_ oh I've just realised, should we save any space? the extra column of the folder before shared a column with the parents upvoter
chamlis_ so should we expect to only save space at the top-level?
right oh no it's only one there's yeah so this leftmost comment folder line is gone and i don't know if that's the change i just made which i'm just reverting off screen the extra column of the folder before shared
20:39Oh, I see what you're saying, because these line up... Well, each comment will save this much space. You're right. Well, we're only saving space... To put it another way, because they're overlapping... We are saving one voters with the space total rather than one per each level that's a good point.
21:27chamlis_ I think that's right, yes
i'm also curious whether.
So some of these, okay, so these are now consistent, which I do like quite a bit, because there's that, you've probably seen the other style where there's a folder in here when you're looking at slash comments.
...52Yeah, so let's resume. prod on the left or current on the left new on the right unifying this is an improvement to me. Not that the folder does much on this page unless there is a particularly long comment, but I think this is an improvement.
22:30Okay, so there's that.
...43I still think it's worth putting the folders in both to make the comments consistent and to save a little space at the top level, make each comment a little bit wider. Make the top comment, a little bit wider and then make the design consistent. So i'm assuming you're going to hit that line for at. right away here just because I know you're very fast at these things.
23:32chamlis_ yep I can do that, trying to deal with the folder being a bit low as well
Oh right, and then you touched that's why the nav changed is because you were setting up sub grid for the left folders the gutters on the left side okay that's that mystery explained you've probably explained that to me already and I forgotten because it's pure has been open for a minute.
...58yeah. These buttons that are styled like links are, they are a pain in like nine ways. There's both the CSS styling, but then there's also the hooking them with JavaScript and then making sure they pass the right form parameters. They're buggy is what I'm saying because links are not buttons and don't want to be, but I didn't want to break that visual styling. All right. Then we got this. Yes.
24:53Chams, do you want me to make a suggestion? You got it already? Oh, you're already doing it. I see. The gutter being a bit low, right? So this, what do we think is doing that?
25:55Okay. I haven't switched any of these over to The mobile view, which I should take a look at to run through these pairs.
26:36OK.
...43Such a nice diff.
...53Then I think also I should compare the user profiles, but we looked at that before and I'm guessing you haven't touched that too much since we looked at it a week ago.
27:15chamlis_ no, don't think anything's changed there
Okay.
...31So we have this.
...42And you just brought this down to where it gets used, right? Yeah, these things have just kind of drifted apart.
...58This is the repeat.
28:10Now you hit a really complicated layout here if you hit settings and the user profiles.
...41All right.
29:15OK. Yeah, I think this is, I want to glance at profiles, but I think this is pretty close to ready to go again. There's that, let me know about the, can I find the same?
...52Sir.
30:10It reads a little easier, but it's nice. All right, so let's take a second to look at these mobile ones. There's that clever hack of yours to remove the colon.
...29That looks real nice. All right. And then... Let's control shift M. I think I knew that one. Let's try that. Oh, nice. So this looks good. That space is maybe a little short. That's the existing design. Oh, interesting. The headline lost its indent.
31:09How did that happen? Oh, no, it gained an indent? Yeah, I'm seeing the diff backwards. I was going to say the indent looks good, so we want to maintain it. But I'm confusing myself. We don't have the indent now, and you added it. It's great. Let's take a look at our big. nested comment so here's current and new that's interesting you've cleaned up some kind of margin thing on the right and made no we've lost a little space on the right god i can't even keep track of which one's live so we're wrapping just like one word earlier. Where did that come from? It's going to be the story liner.
32:34I wonder if you're.
Did you lay out the sub grid so that login is its own?
Or, you know, login slash username is its own column.
To preserve it.
chamlis_ good spot again, I did to line it up with the comment buttons
Because that could be causing this rap issue.
33:04You did it to line up with the comment buttons, like post and preview.
...24chamlis_ hang on I thought mobile had buttons with the comment counts on them?
This is pretty minor.
chamlis_ oh right that's story list views
Oh, let me give you a second.
buttons with the comment counts.
Story list views.
chamlis_ like the homepage
Yeah, I'm not sure what you're thinking of.
So I'm going to take a second to.
Yeah, yeah, that's on the lists.
We haven't gotten there yet.
34:13So that looks very nice. But when we're off of that view, yeah, we want to gain that space back. OK.
...32So.
...40Looters width, what else have I hassled about?
35:04So comment box width on mobile.
I just saw this one scrolling down.
We've got...
This is oddly narrow.
Probably unusably narrow instead of matching.
And it's got too much indent, and it's got the gutter issue.
I say gutter, but I don't know about this.
So what's... We should take a second, Chandler, because I'm finding...
I'm somehow finding these faster than your whack-a-moling.
chamlis_ yeah I don't think we're go for merge today
Do you want me to keep going, to put these in the pull request, to just make my own notes, to try to help you diagnose these?
What's most useful to you here?
36:02chamlis_ if you could add them as review comments I'll get to them soon
Okay, review comments, that's fine.
Let me just boot this spammer, which is weirdly deep in the UI.
So I will just delete that.
OK. All right, so let's make a list here.
Let's go find 480.
On this one, I'm just going to put in the suggestion because we worked out what this could be.
...46And then the rest of this.
38:29Let's take one second and look at that because maybe I'll spot it right off. Yeah, it doesn't have a big margin on it. It has a width of 100. What is it in? Ah, the form. It's the form's padding getting applied twice. There's still a margin left on the form. All right, let's find that.
39:14chamlis_ darn, missed one of those - thanks for spotting it!
You're welcome.
And this is wrong clipboard.
Also the wrong clipboard.
Come here, try that again.
...33Let's look at inline replies. I'm not logged in. Let's just go ahead and log in. I haven't reset my password here.
40:25slash comments has too much padding on the right. So let's add that. Log in. Here we go. So if I click Reply, yeah. So the inline reply is also too narrow. That's going to be the same things. Funny that the blank is shorter. That's going to be like Firefox, right?
41:27I don't see anything in here trying to style that or style the first child.
...40What else do we have?
42:34You've slightly moved the comment counts to the right. I like that a lot. I think that's an improvement. And I'm happy to have just a little bit more width here and these slightly farther to the right. I thought this column had a background. Maybe that's just light mode. Maybe we dropped it at some point. That could be just years out of date.
43:41All right, so jumping out of the mobile view.
Anything else?
Oh, these, the comment folder lines at the top level seem to be missing.
chamlis_ haha
That's probably going to be either trivial or a giant pain in the ass.
44:18I mean, these comment folder lines, they're very clever, but they're brittle. Actually, I think they're missing the second level here. Have I collapsed anything? Yeah, so that one. Okay, so wait. It's faint enough, and I have a little bit of a glare on my screen, and it's genuinely hard for me to see it.
45:01You know, this one, if you can see the... I'll just take a screenshot of this.
...24Add this file.
...46chamlis_ yeah that was the change that requires dom restructuring and then JS restructuring
I really like.
The more I look at it, the happier I am about removing the comment folder from here.
It has bugged me for ages.
There are so many nice improvements here, like these indents.
46:23I almost wonder. This feels a little busier, and I almost wonder if we want a little bit more padding on the right here. I think we can just kind of live with it and see where that gets us in a minute. All right.
47:31chamlis_ looking there, one-line comments don't look so good when the folder juts out below them
yeah you know i'm honestly tempted to say that if we want to fix it the way to do it is write something that says
If you strip off the quote, how many words are in the comment, and if it's less than, like, 20, just to kind of rule of thumb one full line, you can't upvote the comment.
Because a lot of this is just, like, snarky nonsense, like, and I'm picking on these two comments because they're the two I've landed on, but one-liner comments are
just very often, these kinds of throwaway snark that don't help anything.
And I've done what I can to discourage them, but... Yeah.
And then occasionally there's stuff like somebody posting a link that's actually excellent and useful.
So maybe that idea of hiding the voters on them is a little too
chamlis_ I might be able to make the main body of the comment a flex too and send the content to the end of that, so there'll just be a larger gap between the byline and text
heavy-handed little too clever the the alternative hiding the folder i mean if it didn't have any replies
49:30Yeah, I think it would be a larger gap between the byline and the text.
...45Why do you want a larger gap?
I think the current one is pretty good.
I mean, there's the overall font size issues that we've been talking about.
and the line height issues we've been talking about.
chamlis_ for one-liner comments, so the text moves down there and doesn't finish before the folder
Is there something else here that you wanna change this gap on all of these comments?
Oh, just for, we can't really, see the thing, what I would wanna address if we addressed anything is,
It feels like, hang on, let me back up.
I don't think you need to make a change and we can't rigorously detect what it means for a comment to be one line because that's going to depend on screen size, font size, whether you're on desktop or mobile.
I don't think there's much we can do there.
The alternate thing to think about would be to try to get
not on one liners specifically on multi-line comments it's more clear to me that's not as useful oh here we go let's use my comment there isn't a vertical rhythm between these two things they're operating at different scales and it's not just that they're different font sizes it's that they don't share a grid
vertically so like this folder starts at kind of the m height of the line and then this is just hanging out in the middle somewhere the score and then the folder which is and isn't text is between lines and i don't i don't think we want to make all of this taller
51:59chamlis_ I think the flexbox would let you express the constraint "the end of the comment body must be at or below the end of the folder"
I don't have an immediate way to fix it.
52:09I guess one thing we could do would be the flexbox will let you in the constraint.
chamlis_ or you make a comment a grid so the folder lines up with the top of the comment text, is that where you're heading?
Yeah, I almost wonder about taking it the other direction and adding let's just
...32Maybe? I wonder about taking this byline. How are you laid out? You're into details.
...51Cutter.
53:18I wonder if we shoved the byline down so it was on the same line as the score that then the folder would be on the line with the comment folder.
And we'd have to improve things because, and I don't have any, well, maybe I have a comment.
Yeah, so like this one has few enough upvotes that
There's no score display.
So then this would be like shoved down to align with, I guess the folder.
It feels like that might be a little too much vertical space above comments.
chamlis_ I'm not sure the upvote button on its own blank line above would look great
I'm just trying to think of if they were aligned, the page would feel calmer.
As it is, these things are kind of shoved against each other.
yeah i'm not either but i don't because the alternate of moving the arrow down to be on a line with the byline and the score on a line with the first line of text makes these one line comments makes the left the voters the interactive elements even taller i mean we could close up this gap a little between the score
I don't know.
I'm not a designer, and I'm kind of winging it.
But I do look for those kinds of...
It's sort of like this.
So Firefox gives me these guides, and I'm looking at these dashed blue lines across the page.
And when I look at the page and I think about these things, like these...
dashed blue lines don't line up with any of these, and these horizontal ones don't line up with these.
And it's very obvious when you can see them like this, and as a reader, you just sort of infer them, and a page feels weird in an indefinable way when there are lots of lines, especially close together like this, instead of them being on the same grid.
And somebody called this ages ago, composing to a vertical rhythm, and I've failed on stream before to find whatever that blog post was that left a mark on me, but it's that that I'm looking for.
Hmm.
56:04So what do we have?
Maybe the issue is that scores are too small.
chamlis_ taking a quick look at (old) reddit, they line the upvote button up with the byline, and put the score in the byline itself
because if they weren't a different font size, then byline and this are different font sizes.
Put the score in the byline itself.
...34Okay, don't need a video.
Yeah, and they have the folders in line.
you know this is very deliberate a designer touched this to make sure that the bottom of the down vote arrow hits the baseline yeah and then they put the score over there i kind of like putting it off to the left but because we've shoved a bunch of stuff
up in these titles especially when you're logged in and i think i've removed them all now but sometimes we have the story text story title here i think that's all gone at this point okay so i am deliberately not even though i just spent like five minutes
going back and forth on it.
chamlis_ how about the folder lines up with the byline, the ubvoter and score line up with the body - you fold an entire comment but you (hopefully) upvote it for its content rather than who wrote it
I'm not gonna put that in my list, my little to-do list here of issues because I don't have any strong feeling about how to improve that.
And I would rather ship this and look at that in, don't we have a mobile font size?
Yeah, we have the open issue.
How about folder lines line up with the byline?
The upvoter and score line up with the body.
You fold an entire comment, but you hopefully upvote it for its content rather than who wrote it.
Oh, so you're saying put the upvoter back above?
Yeah, because we talked about that as an experiment here.
I'm trying to find your screenshot.
Yeah, there's your animation.
58:42This is a weird issue where I have to reload PRs to be able to get a valid URL. It's like they have some aggressive signing time. Yeah, so you're saying if we nudged the comment folder down a little so that it was on the same baseline here, then this would come down and be Honestly, even if just the top of the upvoter matched the top of, well, the capital C here, I don't remember the name of this text metric, but the top of the letter, yeah. Even if this didn't match any of the lines, that would probably be really good.
59:46Okay.
...58I think that's a pretty... I think you make a pretty convincing idea there that putting the folders on top would solve that that rhythm issue that I have been struggling to express. If there's some actual print designer watching this video, they're probably screaming at me for not being able to express. There is probably a correct set of terms for this that where I could have said all of that in two seconds. But I think That's a reasonable idea that if we put the folder back up on top, we would zap that issue. OK, yeah, I don't want to block the PR on it because I think of it more as a font issue. And if we do address this font issue, we're going to instantly break it again. which is part of why I don't want to block your PR on it.
01:01:34chamlis_ I'll give that a go alongside the other stuff, thanks for discussing it
chamlis_ I've been kind of burnt out on programming recently but the design/styling work has been different enough I'm finding it very satisfying
Cool.
Well, thanks for doing all this.
This is... Oh, good.
I'm glad you found it interesting.
I've really appreciated that you've taken on just a huge project, because there's a bunch of very fiddly legacy stuff in here, but as long as it feels more like a puzzle game, like you're playing The Witness or Stephen's Sausage Roll, rather than struggling with, I don't know, type errors...
What language do you typically work in?
You've mentioned that you don't do Rails, but clearly you do know frontend.
01:02:22chamlis_ professionally, php/laravel
Ah, Laravel, neat.
Yeah, all of my PHP experience is long before Laravel came around.
And I was building, so it was like 2002, three, four, I had a couple of jobs where I ended up building something like 30 small sites that each had their own CMS where non-technical users needed to be able to update stuff and kind of make blog posts or other copy changes.
And I knew I was going to make dozens of these upfront.
And so I started extracting common components and I used the active record design pattern and I had a nice router and I had some unit testing with the X unit, whatever the PHP X unit test style testing library was at the time.
And then Rails and Django got announced and I saw them and I was like, oh, that's basically the thing I'm building, but six months ahead.
And so I just immediately threw away and dropped what I was working on to start doing Rails and Django.
So that is why I did not invent Laravel in, what, 2004?
There's just such a rich vein of tooling there.
01:03:55chamlis_ fair play, you picked some good wagons to hitch onto there
cool well i think i think we're about done with the review on this we've talked through this several times and overall we're down to the really fiddly nitpicky stuff and i can't tell you
Like a bunch of these feel like they're going to be tiny, and a couple of these feel like they're going to take an unreasonable amount of time, and I can't tell you offhand which is going to be which, except that folder lines are the giant pain in the ass, but you understand that one really well.
If you think folder lines are a giant pain in the ass, I am willing to merge this and leave them broken a couple of days, or even a week or two in prod,
chamlis_ that may require a bunch of JS rework, I'll see if I can do and test that or work around it somehow
if it means that we get to merge this long-running PR because my mild fear of long-lived PRs that don't get merged has only been slowly increasing.
How about this?
How about you do everything except the folder lines and then we compare on the
folder lines together, or you can do it as a separate project, but I don't want, I'm just worried that you're going to wander into quicksand and a whole lot of wonderful stuff is going to get held up or maybe even lost because of one fiddly design issue.
And I don't want to see you hit a brick wall like that.
01:05:43chamlis_ appreciated, I'll see where I can get to on it for Monday
Because I'm really well I guess i'm really eager to merge your work, this is very nice.
...55Okay.
01:06:08There is a. feature i'm waiting to land on firefox i mean stop waiting for it to land on firefox where you can have scroll linked animations so for this kind of thing where comments get really narrow on mobile which this must be the same padding thing because you've got a that hanging out here we can say when you scroll to a comment that's deeply indented decrease the parent indents. I've seen sites do this with JavaScript. It'll be possible with pure CSS probably in the next six months. So that'll be really neat. Honestly, Chambliss, if you came back in the next couple of days and like tomorrow or Saturday, you were like, oh yeah, I checked all of these boxes because they were all the easy ones. I would notice and merge it immediately. I've been watching my inbox for your updates because I want to give you fast feedback. All right. Let's close out some tabs. That's great. So there's me. Still no new Ruby.
01:07:43chamlis_ thanks again
Okay, so that was the big topic I wanted to look at this stream.
And I've been going for about an hour, so I'll do my usual little bumper of my station ID that this is Lobster's office hours.
If anybody has, thank you.
01:08:06Yeah, it is me that is thanking you as a contributor. You don't have to thank me for being nitpicky. All right. So if anybody has questions for Lobster's office hours, if you want to run queries against the production database that are not like, you know, select all the password hashes, we can do that sort of thing. Or otherwise, you can just hang out with me. Oh, I never turned on our... Maybe I do have to wire that up. I never turned on the footer on production. The little, hey, Lobster's office hours are live. I was looking up and I was like, oh, there's only like five, six people watching the stream. There we go. Turn that on. That helps for visibility. All right. So that over there.
01:09:08All right.
...15So let me throw the little text in here because people will start dropping by.
pushcx This is Lobsters Office hours, you can ask a question about the site or codebase anytime!
So there's our big PR done.
And I have filed a couple of feature requests in the last couple of days.
...49I am not going to run through those on stream because I don't think there's too much to say. But then otherwise, the big thing that is happening has been I've started rolling out some of the... I'm taking a look at something.
01:10:18The improvements to story merging UI that we have been working on on stream for ages.
...35So here is an example I rolled all this out on Monday and I knew it had a little rough spot or two. But I didn't merge stories are actually pretty rare, and so I didn't realize we were going to immediately get a big exciting one with a bunch of merge links folks were nice about leaving comments, so we didn't end up with. You know. eight merged links but we got pretty close if they had all been submitted because there's one two three and then i think there was one or two more yeah four five six
01:11:38I'm learning this issue number by heart. So I wanted to come back here with my time. And so here's the plan. And then what do we say? A topical demo or a, what's the word? When something is just right for the time.
01:12:15So it was nice to have a little demo of it that pulled all of this stuff in and showed it to people. The next thing, and I know everyone was excited for watching me spreadsheet things, I think this is going to be another spreadsheet maybe, was we have... as a database thing, all of these top level comments, even if they are meaning to reply to one of these updates, they are all posted to whatever the first one is rather than those others. There's never been UI for it until Monday afternoon. there's this ui and it was bugged until i think yesterday chamlus caught the bug and reported it that these boxes were going were still going to the top level thread and i fixed that but this discussion died out and so there are just a whole bunch of comments for me to sort out and i'm trying to think of what that workflow needs to look like so i know what the database needs to look like I still have that query. Jump over to master.
01:13:58Make sure I'm up to date. I am.
01:14:08Let's look at my last couple. yeah it is my last database log entry so there are 4169 top level comments on merge stories and some amount of them need to be re-parented to merge stories rather than the top level one And the only way to know is to just go look at them in the same way that the only way to know how to improve the merge story UI was to just go look at the several thousand merge stories. So there is a big chore. And I need to feel, there needs to be a workflow here. I can at least say that,
01:15:17Yeah, so comments after 572,000, I don't have to look at. Because now the UI is there, folks will use it. Great. And then, so let's think about this. Let's create this query.
01:16:17What do I need to have? Well, I need to. Look at these story links. Into the top level comments, not replies, so maybe. Need to be able to make a list of.
...54Need to create a mod log entry. And so one thing about mod log entries is if I attach them to the individual comment, that is, you know, in a narrow sense, that is the correct database level UI. But with 4,169, say, I don't know, 20% of them need to get moved. Well, that's going to be 820, 830 mod log entries. And that is 830 times that users are going to get messages. for a thing that's not actionable, that is not actually you are getting chided by a moderator, that is not, and it's going to spam the hell out of the mod log. So I think when I say create a mod log entry, I do actually mean for all the moves.
01:18:28Yeah. Although... If there are going to be...
...45If there are going to be hundreds, many hundreds, or even thousands of moves, that'll be longer than a single moderation can fit because the...
DogacelCubing Hi, Dogacel here. Are you looking othe stats page?
action column is i don't know 65k at some point we'll get into danger on that so all right
01:19:28guess and the mod log would probably be better if it said something like story short id moved threads
01:20:01join it with comma to ID. And then I guess it probably also has to say like issue 1456.
...33That seems pretty reasonable. So this is me figuring out... Oh, hey, Doja Cell. No, I am not. I did see your message. It's hard for me to keep IRC open when I am streaming, because it's just one too many things to keep an eye on. The...
...58it is hard to do chores that are like, let's grip through a bunch of logs because I try not to show personally identifying information like IP addresses on stream and the log file that I would check to see if people are loading stats right in front of the OOM kills is, has both IP and username and like specific stories that people have looked at even if i filter to slash stats it's just way too easy to put pii on screen and i don't want to do that to folks so that's the kind of chore that i tend to look at off stream and it's not super urgent because even though it's happening about once a day which is awful the System D is correctly recycling the service, and so we take a minute or two of downtime, but we do come back up. So that's kind of how I made that decision on urgency.
01:22:19DogacelCubing I see thank you. As that page is not working anyway, maybe it can be hidden from the UI until the bug is figured out.
If you have any more questions about that, I hope that helps.
So if... Oh, that makes sense.
There's going to be... Do I want to disable it?
I think what I should do is just file an issue about it.
If I write the...
I'm not going to add a... Let's just make this...
...57How do I want to say this?
DogacelCubing Haha exactly, that's why I typed `/stats` too.
I don't want to make a link, because if I make a link, people click the link in our issue tracker, and then if it is crashing the site, we'll crash the site a bunch.
01:25:32DogacelCubing If stats can be calculated with cached data, we can still serve real-time data by fetching last hour + aggregating it with the cached data.
DogacelCubing got it makes sense, I haven't seen the page yet so just making guesses lol
that's true but honestly the stats don't the point of them is that they're monthly stats they don't really change meaningfully on a 24-hour basis if they do it's kind of an outlier it just doesn't seem worth the complexity if if slash stats was load-bearing in some way like if it was a business dashboard i would totally take on that complexity but as it is i would rather have something a little more maintainable
Yeah, it's like three charts of how many new users do we have per month, how many active users do we have, which is they are logged in and left a comment, a vote, or a story, and then the total number of stories and the total number of comments per month.
Yeah, okay, so four charts.
Did I say three in here?
The...
Couple queries.
Label these are bugs.
These are good first issues.
All right, so let's grab that and I will put it in the stream notes.
Thanks for coming up with the idea that maybe this is the source of the problem.
I think that's worth investigating.
And honestly, rather than investigate it, let's just move slash stats into a job so that it can't get dogpiled.
because if somebody links it from another site and it's been more than 24 hours since we've generated the page, we're just going to get a dog pile effect.
God, we're probably already dog piling ourselves because if it takes 20 seconds to load and it's the only page on our site that takes 30 seconds to load, people are going to hit reload and then there's going to be two workers doing it.
Yeah.
All right.
So if I need the tuple that is from story to story, comment short ID to move, how do I work through this?
So I'm trying to make myself a checklist.
I guess I could just query out a CSV and work through it in a spreadsheet.
I'm a little tempted to make a web page.
But if I make a web page, I can't do it incrementally.
And I've got about 90 more minutes on this stream, and there is no way I'll get through the whole thing in 90 minutes.
So yeah, yeah, it's spreadsheet time.
01:28:55So let's... I want to note that. Well, that's not going to matter because I'm going to take a static list and work from that.
01:30:36Isn't there a way to just pass my query? Whoa, not that apparently.
01:31:02What is this hassle?
...10How do you not know which database to run this against, Rails? Daft are not specified. Oh, it's the dash E. Dash E is environment rather than, and dbconsole does not want to take a query.
...40Unfortunate. Let's do... What's MariaDB not like?
01:32:11OK. And then let's delete this.
...32OK, that looks good. Great.
...47DogacelCubing Is it a good time & place to just chat with you here? Or do you prefer to keep it outside the stream.
It did tab separate.
I was thinking I was going to get those annoying pipes.
All right.
So everybody get ready for light mode.
Yeah, no, this is a Doja.
So I run the office hours because I want people to feel comfortable chatting with me and some people feel more comfortable on a stream.
It also lets me show like there is no magic behind the curtain.
There's just a lot of chores and puzzling stuff out.
So if you have something you want to talk about, about the site or the code base, I'm happy to.
I try not to do really sensitive stuff like
If I have to write someone an email explaining the right tone to hit like that's hard to do on stream.
I don't want to publicly shame somebody.
But otherwise, no, it's whatever topic you got, we can jump into it.
01:33:57So
01:34:09I am pulling up the... Let's see, what am I... No. We are only separated by tab. Yeah, we have three columns. Good. This kind of stuff where I'm doing a big chore, this is what I do when nobody has questions, so... Oh, I'm missing the... Let's make those all links.
01:35:03DogacelCubing I see, it wasn't necessarily about the code. I was thinking more about prior work experience and stuff. I am also located near Chicago, moved last year, and unfortunately I don't know any software developers around.
All right.
So where's my.
...22You did not make these all clickable links library office.
...39Oh, are you in the there is a. there's a bunch of stuff on meetup worth joining and then. I'll throw you another link on IRC.
01:36:06DogacelCubing I'm going to PostgreSQL meetups mostly. There is also this coffee & meet stuff.
You are not on IRC anymore.
...27DogacelCubing I have changed my IRC name to start with lowercase to match my lobsters nick.
yeah yeah there's lots of that the capital one meetup i understand gets like a hundred people and honestly if there's a technology you're interested in and there isn't a meetup there probably was before covid and it didn't survive so it's worth taking a look
01:37:03DogacelCubing There is also going to be a Postgresql. conference next friday, I'll be a speaker there.
Can you send me a direct message on IRC?
Because I don't, for some reason, see you connected.
...18Oh, neat. I didn't know there was going to be a PostgreSQL conference here in Chicago.
...33DogacelCubing They try to make it annually, PgDay Chicago.
If anybody is a LibreOffice expert, it would be great if I could make these all lists.
PG Day Chicago.
Ah, neat.
I threw that into a personal browser.
I'll have to take a look.
01:38:31no what are you going to be speaking about and should we move lobsters to postgres or sqlite see you did not actually make that a hyperlink oh i can control click but not okay not this guy It's going to open. I can't deal with a hyperlink because it'll open in my default browser rather than my stream browser.
01:39:25DogacelCubing My topic is on cleaning your database in-between integration tests to ensure stability and speed. I demonstrate some features of postgresql such as triggers, PL/pgsql functions and stored procedures.
So we'll just get this over here.
...32all right that just about works clean your database between huh when you say between integration tests you have to then run your integration tests are you isolating your integration tests at a transaction because i would think that would do it, or are you assuming that the test framework can't run multiprocess, basically?
01:40:18I guess what I'm asking is, because I'm thinking a bunch about multiprocess testing.
...38DogacelCubing We don't run inside transactions because it limits our ability to test transaction themselves.
DogacelCubing Working with a huge monolith makes it less flexible in such scenarios.
DogacelCubing It can nest, but I am not sure how rollbacks are working if a nested transaction fails. I.e. it might cancel the parent transaction, I'll have to look into that.
oh really postgres can't nest transactions i thought sql allowed that anyway the huge monolith makes it less fixable in such scenarios okay honestly i wonder if i should just go down all of the merged stories let's go
01:41:20Yeah, I couldn't tell you. But I've been playing with a Ruby test framework that can do parallel testing. So like out of the box, it multi threads and multi processes tests and it's so much faster that I'm willing to put up a lot of pain with Like when I put out debugging info, because I'm a very print-off debugger, it all gets interleaved in a confusing way. So I tend to have to pull tests over to an alternate file and run that in isolation.
01:43:48DogacelCubing Does your testing framework support sharding?
DogacelCubing We do sharding and run tests on multiple instances on CI
Yeah, it's not my testing framework.
It's called Quickdraw.
It's a Ruby testing framework, and it's alpha, so I've really just been playing with it.
But it doesn't shard off to multiple machines, although I have worked on a code base that did that.
Because if you ran the build linearly, it would take
You know, a single process run of the build would have taken I think a couple of hours, but then they fanned it out to a whole ton of machines, so it only took 10 or 12 minutes, so I have seen that work but.
it's not something i've implemented myself.
01:45:34DogacelCubing My slides are 90% done and publicly available, pgday (dot) dogac (dot) dev , also if you are interested in joining the conference I can send you a discount code.
You can just put a link here in the Discord.
It doesn't automatic or Discord here in Twitch.
It's totally fine to share a link.
DogacelCubing Got it, pgday.dogac.dev
You don't get booted or flagged as a bot or anything.
01:46:23Hey, if you started programming to mod games, how's your Lua?
DogacelCubing I programmed Minecraft so I directly started with Java
I've been doing more Lua myself the last year or so, and I like it more and more.
expressive in the way Ruby is, but I'm really impressed by Java.
DogacelCubing So nothing too exciting
I'm really impressed by the embeddability of it.
And I think the way you can sort of set up a restricted execution environment is powerful, even when you are not dealing with sandboxing on trusted code.
Because a lot of software design issues are like, we make this layer model, like MVC.
And then the controller should call into the model.
And the model shouldn't know about the HTML.
But then you can't actually enforce any of that in code.
And so it just becomes a norm.
And then I don't know.
Unit testing, yeah.
01:47:59Hey, look, you've already got my question on the slide.
You must have seen me coming.
justkarolis heyy how r u
Oh, that's one way to isolate.
01:48:28Oh, hey, JustCarolous. Oh, yeah, DojaCell, this running, maintaining migrations, this sort of thing is why I have shifted over to you always just load the database from the schema. Migrations are code that's written to be thrown away, and it can sit in the code base because it's nice to be able to look back at them without digging through your Git log, but it is not code to maintain. Whoever came up with that norm of you should always run your migrations to recreate your database like that's just absolutely not.
01:49:21DogacelCubing I think it is time to squash those migrations
Like these animations.
justkarolis what r u working on rn?
It's a nice way of highlighting what you're changing between slides.
Now, don't squash them.
Just throw them away and load from.
Just careless, we're looking through DojaCell's slides for a talk that they're giving in a couple of days.
...49Hmm.
01:50:08You know, you're probably going to get to it in a second, but one issue you have is lots of apps require that there be some amount of data in the database. Like on lobsters, the code base really doesn't work unless there is at least one category and at least one tag. There are a lot of things that assume that you have that because it's so foundational to All the database. Oh, nice.
...50This is clever.
01:51:00I'm expecting that in a couple of slides, I'm going to see one of those charts where it's before, this takes an hour to run. After, it takes three minutes to run.
...41DogacelCubing That's a good point, our codebase has a thing called "SmartFixtures", similar to scenarios, where you add an entity and it adds all of its depednencies if not added
DogacelCubing Maybe I should mention it as well.
Smart fixture.
Ah, yeah.
Have you done Rails?
You mentioned something about Rake and the way you talked about migrations.
Sounds like very Rails-y.
01:52:09DogacelCubing Our migrations are actually running on ruby
DogacelCubing codebase in scala
Oh.
That's interesting.
DogacelCubing But we totally not use ruby other than calling SQL <<
Does Scala not have a nice migration library and you just decided to use the active record migrations?
...23DogacelCubing It's an old company decision, I wasn't really there :)
Okay.
I mean, Ruby has got a great string class.
...40Okay.
...51Oh, got to get your repo live, make your slides real.
01:53:07DogacelCubing I can actually make it public rn, gimme a min
DogacelCubing There isn't anything sensitive
Oh, that's great.
No, no, no rush.
As a small talk thing,
this kind of fact of we have been doing this since May, 2023, you should put this upfront in like slide two or three, when you're like, what are we gonna talk about today?
You should say, I am going to show you a real thing that we have been doing for the last two years, because lots of times people will give a talk where they're like, this is a wonderful code solution or database solution or whatever.
And it's not actually a thing they really did.
It's just they really like functional programming or they really like some language and they think it should be neat.
But you are not actually hearing the real voice of experience.
Anyways, this is great.
DogacelCubing Thank you so much!
Good luck with your talk.
01:54:16DogacelCubing All valuable comments
All right, so where are we at here?
We are looking at one of the older merge stories, and I would really like to go in a different order.
...51AnakimLuke hi
All right, so off stream, I am just quickly refreshing our template here.
Come here.
01:55:12All right. Let's bring that back on. And now do I have what I want? Painful if I have to copy and paste each of these. Yes, OK.
...36So if I narrow this.
01:56:07Oh, hey, Anakin. Welcome back. Tempted to make meta stuff its own heading or just delete it. We've had a lot of meta chatter in threads and very few actual meta threads.
...48DogacelCubing I don't know when comment upvotes are shown, I guess it works now because you are a mod?
There's a bunch of meta stuff that doesn't need to be up on the stream.
...57Oh, sure. So as a mod, I see pretty much, I think I see all of the scores unless they're mine, but we can look at that code real quick.
01:57:19It's like show score can see score. Where is it?
...35It's gone. Show score to user. Yeah, there you go. So you can see the score. This, this can't be complete.
...51yeah there it is show score to user oh it's comments that are more complicated okay so i was looking at story first off but so for story you don't see the score if you flagged it and that is to disincentivize people using score to Using flagging to punish things so if you flag a story or comment you stop seeing the score so you don't get that satisfaction satisfaction of I made its number go down it's a little thing, but I think it helps.
01:58:46yeah and then.
On comments, it's a little more complicated where you see scores if you're a moderator.
You don't see them if you've flagged the story or if the story is less than a day and a half old or if it has a fairly low score.
So what's going on with all of this is we would like people to make their decision to upvote a story or upvote a comment independent of what other people have done.
And so for stories that have just a few votes, although that's not quite what this expresses,
Or our new we hide the score.
dlamz I think some subreddits hide scores for the first few hours
So that's the general idea there is trying to make sure that we're.
letting people make independent decisions.
i have no idea how reddit handles it it's probably a feature we snagged from reddit or hn though all right so that one's just an update you know as long as i'm in this story let me just skim all of the comments
02:00:42None of these. So none of these are looking like they're reacting to the news. So we're done down to here. Let's go here. Maybe I should have just sorted these by story.
02:01:04Yeah, let's do that.
...11Sort these by story ID, and then we'll give me the story length first. Yeah.
02:02:05All right, there we go. That's more useful. So now... This is the one that I already peeked at. Yep. This one, this merge was me. How much did I miss this by? 750, 55. Okay, I only missed it by like 70 seconds. I was actually really annoyed. I try and be... You know, a good citizen as the moderator, I figure like, oh, I better be careful when I submit stuff that I'm not duping things. This clearly, like these timestamps are close enough together that we submitted at the same time. I spent an extra like 90 seconds adding a couple of other links I had. And so Mathias beat me. I guess I could claim, you know, I'm just testing out the store emerging UI, but that would be a fib. I just didn't see it. It is nice though, there is one small feature here fixed from the story merging UI that it used to be on merge stories, once they were merged into the previous version of this display at the top of the page, there was no way to see their descriptions. Now they do appear down in the page, which is an improvement. I think I will probably change this. So this right now does display the top level stories text. I think we could probably take that out and move it down here because it's already going to appear here. Yeah, actually, it's faster than saying that. I'm convincing myself it's a good idea.
02:03:55And if you're new to the stream, the things that I say that sounds silly or out of context, I use them as titles for the archive. So for this, it is the description.
02:04:16And does the single detail? Yeah, so the single detail prints this. That's redundant now. No, it's not redundant because if the top story... So these templates get reused based on whether the story is a merge story or not because that's treated a little specially. I guess what I want to say is also if the story count is zero. Yeah, we had the inverse.
02:05:00So this is, oh, no, wait. This is just the icon. Single detail doesn't print it. Okay. So I can just delete this. Because it's going to happen down here. And I had wrapped this in a, hadn't I?
...35If stories count greater than 0, yeah. So let's take that part of it out. And this is ERB in a nutshell. This is why I was so excited about ERB is this kind of string soup of, does this line up? Boy, I hope so. Because if not, I just broke the template in a very strange way where the indenting is misleading. So we'll just take it off of here if it's present. And there are no stories merged in.
02:06:29All right.
...34But that's fine. I would have to put a... Let's edit this one just so I can see it.
02:07:10And then I'm just going to log back out so that I have less clutter in the UI.
...25OK, so yeah, it didn't display up top, and it did inline in the same way this one has it inline. And then I need another story that has a description on it, and I need to be on localhost. There's one. So that looks fine. Yes. Great. All right, it is a semantic diff.
02:08:51Cool. So let's swap that back out. And now that I am not nerd sniping myself, let's go on to the next story. So what was that? 4,170. And it only took an hour to get set up. And no, because we did the slides and we did the stats. So it only took 20 minutes to get set up and do the first dozen. All right.
02:09:30Oh yeah, this one. So probably somebody here is going to get sorted out. Let's shrink these down. And then on this one.
...54If I make it right aligned, then I can make it smaller. Just trying to squeeze everything onto the screen here.
02:10:12All those little red arrows aren't annoying or anything. OK.
...22So these are done. And I'm on Jacksley, which is down here. Good. All right. Oh, boy. So this one, I'm glad we merged this one because it was kind of a vague host. All right. So yeah.
02:11:03Are they quoting that? No, they're quoting the first one.
...12This was a response to the first one. This one just based on time, actually. All right, so which comment are you about?
...37These are not in a useful order. That's okay. So let's move this over to the second one, which is... Oh yeah, this isn't a terrible workflow of me retyping IDs. I'm not going to typo one and fuck shit up, am I? That's such a bad plan. I should... How does this one have any comments? Oh, some of these comments were made before the two stories were merged. Okay. All right.
02:13:10pushcx I'm doing very not-exciting work looking through every merged thread. But this is open hours, you can ask anything about the site or codebase anytime.
Good.
Okay.
So this is the kind of display that's a significant improvement over the previous one where you would just see the merge icon in line, but it wasn't even clear if there were multiple merge stories, which one was being responded to.
So, all right.
...38Oh, and immediately, here is an improvement to the view of the description of the top level story.
...51Okay, that one's fine. I was a little tempted to be like, oh, I will just search for comments that are posted after a story is merged. to filter down, but I think it would be better to just skim these, because there's only so many story IDs. Junking attacks. Yeah, so this one, TJIKPS. should be on the paper, which is FO3ATU.
02:15:02I wish I could have a easy betting pool for how many typos I'm going to make. Because the answer is not going to be zero. All right. But I don't want to build custom UI for this. All right. Source hut. Source hut.
...32Okay, so this one just got a generic write up probably we're going to leave everything on the primary post. 320 750. Yeah.
...58So a lot of these
02:16:07It's kind of ambiguous, except for the timestamp.
...27Especially when the public write up is like, let's broaden our horizon and look at other things.
...41I can rule all of these out by timestamp, but it's going to get ambiguous like this. Is this responding to the one individual or to the general one? I don't know. So I'm going to default to leaving it alone, I guess.
02:17:13see this one's talking about crawlers well it's crawlers plural i would have guessed that this one was should move to the general but it's timestamp says no all right so nobody in there
...43Oh yeah, this one where it's just an alternate link.
02:18:07So this one must be responding to the release notes. Ah, that was Anubis that flickered by there. They call it path-hash. All right, so unless I'm wrong here, 316, 1835.
...39Where's your... Yeah, okay. Time disagrees with me. 318, 18, 21, 56.
02:19:18yeah so again we've got this pattern of. A popular write up.
...40I don't know that any of these are going to want to move because. It's not going to be anything on ours technical that isn't in the primary source generally. No, that's not what I mean to say just there's not going to be anything that. there's not going to be things that are very clearly. This one is just... Oh yeah, this one had two links to it, didn't it? Yeah, the person wrote this comment. That's fine. I'm not touching anything there then. Because it's the same content of both URLs. I remember many of these, especially that these are recent.
02:20:26Anything here on... Chariot. Yeah. Good. So this one's already split up. Okay. Cool. That's the same one. I just generated the URL. This these story merging streams, one of the reasons I wanted to do story merging on stream is there's plenty of very exciting stuff. That the MOD gets to do and it's stuff like. How do we decide how this feature should work well let's just look at several thousand stories and comments and there's no way to get a really good intuition for it, except to do that, you can get an okay intuition from what have I seen but that's also going to get shaped by. your personal interest in what's an interesting story to read, or what do you think was a mistake? And so it's stuck in your memory. Okay.
02:21:58Oh, 178 comments, gonna be here a second. Let's find the timestamp. So let's see, this didn't come out until the first at 2.48. European wrote it then.
02:22:43Oh, yeah, four days. Okay. The popular write-up came faster, didn't it?
02:23:09okay so these it's funny there's a a thing happening where if the stories are posted at a weird time for me personally where i didn't happen to log in the comments are already going to be sorted out onto the threads it's only the ones that i saw very quickly so like 227 732 2, 27, 11, 14. Okay, there's only four hours in there. So there's less of a window for comments, but then that means that if there are more comments, it's going to be more likely that they are missorted.
02:24:03Oh, God. I want this in Bash. I would move to Phish just for that.
...20Honestly, if I only see one or two here in all of this.
...46One second, I got to type something.
02:25:40okay thanks for your patience just keeping an eye on something we're back into firefox oh because these are so these two stories got sorted or posted at the same time two merges all right an event versus an actual post i mean most of these should be on the post how many comments 166 so what's actually in this video Oh, we're not watching an hour video on stream. This is not going to become a reaction stream where like I put me making funny faces in the corner and watch a video of someone else's content because I have eight hours to fill. Absolutely not.
02:26:51All right, so two laptops. No.
02:27:01Okay. How much time was between these two? Oh, enough that they got sorted out.
...20See, these are two alternate presentations of the same info, like one is text and one is video. All right, well, as long as the video got fewer comments, that's probably all fine. You know, I'm finding so few of these to move that maybe I don't actually need to do any of these. I've done, what, two? And both of these were kind of iffy. It really is just the ones where They're really going to be very spicy threads with lots of stuff posted at once, I guess.
02:28:21Yeah, so it's going to be like this kind of thread. But then these fragment so much that there's, when there's fast moving news stories, there's sort of so little information in each that it's hard to know which ones are which.
02:29:04OK, so we got Linus. OK. Greg Linus and then a general write up that has almost nothing, so I'm not going to move. Unless it's about. These other people. OK, so do any of these on the first one look like they're responding specifically to Linus? Linus.
...48This one also is a good example of a hard case for the brigading rule of LKML doesn't care if lobsters links to it but and firefox doesn't but then almost any smaller project really does care if thousands of people get dumped in them what is okay
02:30:32And then here's Linus.
...42I'm really at this point just looking for them to be talking about the specific other stuff that was in the LWN. No. Okay. All right. So there's probably the same story. Yep. And then this is probably the same story. No, it's probably not, because LWN didn't get any comments. OK. Oh, yeah. This one was that super comment phenomena that only seems to I have such a hard time explaining this one, but there is a discussion about this post and then someone had a link. As a response. And then. They submitted it as a story instead of just.
02:32:01Yeah. Yeah. instead of just continuing it in the discussion. We're trying to keep the discussion together. So nothing to change here. Oh, this one, I remember hosting in this one.
...31still have not made a decision on whether Lobster should move to SQLite or Postgres.
...45OK, so it slides. I think these are all just going to, great. This is going to be the same story.
02:33:06Ah, speaking of spicy threads, this is another Rust story. Rust in the kernel.
...32All right, so we had these two different, or are they just the same? This is his personal post, and this one is kind of a broader. All right, that's going to be really hard to differentiate.
02:34:08Oh, look, and there's me talking about story merging.
...20Okay.
...28Tell how long this story merging project has been going on.
...51Yeah, so now we got two popular write-ups of the same set of facts. There's not going to be any way to tell the difference between these. Yeah.
02:35:13I don't think I'm actually... So I'm getting to... gone through 178 comments and had what, like three? Wait, if this got 12 comments, where are they? I'm confused. There are 24 total comments. Let's count. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. No, there are 13 comments. What? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Okay, there are only 12 comments, but we're double counting for some reason. what's wrong so this that's a strange one all right so we found a bug and i already have the right so ms is the merge let's look What do I want to look at first? I want to look at the single detail header, because that's wrong. And then these inline headers are also wrong. So let's go one at a time, I guess.
02:37:00So much repetition, I just want to... Okay, so I found the place that's wrong. And we are saying grab the MS comments path. MS is the merge story. Oh, I wonder if this is a data bug, because it's... All right, so come here.
02:38:05Keep read line.
...27It's okay. I'm allowed to write really bad SQL queries for one offs.
...39It's not story ID, it's short ID. So when the story got merged, the comments got moved. Something odd happened and the comments count slipped out of sync. Let's go look at the, let's start from the controller. Yeah. OK, so nothing happens here when I update a story and then. See what happens around merging here.
02:39:28Oh, I bet. I bet the comments count is getting calculated as. Yeah, so all the 12 comments were released were posted on this one, which got merged into this release notes just based on the order they happened. And then the comments count was copied up or so it displays correctly on the home page. So this is
02:40:01This is the database model getting us again. All right. So that really wants to get fixed. Refactor the database. All right.
...23I'll be back in a second. I'm going to step away for one second.
02:41:55All right, so it is tempting to punt on this until I've refactored the database. But what's happening here is the list detail wants to show this number, the comments count on the top level story. rather than some kind of total.
02:42:33And there are so many things that use this memoized column that it sort of has to stay wrong.
...45Because I was thinking, what if I updated the like the base scope to make the top level stories comments count a sub query. Well, there are a couple of things that don't use the base.
02:43:08So let me go the other direction and just hack it to say that this will Count the stories inline, yeah. Rails is so eager about running queries, I worry I'm gonna introduce one plus ends.
02:44:11I don't think this even gets the comments as a local. Nope. And this is such a hack. I'm just going to leave this broken.
...27I'm trying not to pile up hacks. And I think the next thing after the admin chore is going to be refactoring the database.
02:46:30So that's there. Just kind of wondering where that's coming from. Yeah, merged comments, active count. That's where it's coming from.
...54This idea of stories and comments being active, I don't love that jargon. It mostly means that users can see them it's sort of the inverse of gone but then tag uses it in a different way let's put that in my scratch
02:48:07All right, so having found that bug, let's go back to the grind.
...40So we're coming up on the same story, right? No, we're coming up on like I have looked at 5% of these and I've gone back two months.
02:49:03Just alternate links. Doesn't matter where the comments land. I've moved so few that I almost would rather just leave them and move on. Because it's really just going to be stories where there were responses that included significant new information and where I saw them to merge them very promptly. Yeah. Which is a pretty specific set of circumstances. Because responses take a while to make.
02:50:11I think maybe if I get to 5% here and there's not really anything more to move and I don't feel very compelled, like it was improving things to sort out the previous comments. I don't know. Maybe I just leave them. Oh, this one. Are we talking about Google or open sourcing?
...42Oh no, they are the same. I was thinking one of them was going to be the pebble announcement.
02:51:30weird that there are two links for that from the same person oh all this i remember this one i don't actually know cryptography so
02:52:00Someone pinged me? Yeah. Oh, look, it's me talking about story merging again. OK. Oh, this one. The response, did it go under the response? Yes, it did. OK. This is the unrelated. Okay. It's going to be another session. Yeah. Okay. Comments on two merge stories at once.
02:53:21yeah a lot of these are just duped comment kind of funny that way on earth huh we should have recognized that as the same url hang on all right let's
02:54:18assign these to a variable.
...28Why was it possible to submit the second one? That just looks like a bug.
02:55:05So similar stories should have included it. Haven't touched this code for months, so.
...36Similar stories were not.
...54Wasn't deleted. Was it moderated? No, that would have made sure it was included, so this is moderated flag just means edited by a moderator, but then sometimes it means deleted by a moderator because it's over on comment. I'm wondering if maybe this didn't get returned because modded touched it, but no.
02:56:37Yeah.
...43This is what you're fired.
02:57:07no tests no already posted recently the code base goes back and forth on whether it's a post or a submission hmm
...43Alright, I suspect I'm looking at a bug, but I'm going to leave it.
02:58:08Yeah.
...14Oh, all this. This was a very visible one.
...24I don't think anything needs to move over to the Russ Garrett story, which is right up from a developer.
...44All right. So I've made it more than 5% of these. And what does that like three, two comments?
02:59:04That one, eh, I could argue not moving it. All right, I think there's no value to this project. I thought I was going to be moving a significant percent of these. This isn't worth it.
...34How far did I get there? What was your number? WP. I mean, it's what, 250? 242.
03:00:06Nice to finish. I think there's a strikethrough.
03:01:08so if it took me a half an hour to do five percent then ten percent takes an hour so the rest would take like eight or nine hours that's not worth the time yeah cool all right so and with that we're right at three hours of streaming
...57All righty.
03:02:24So, That's going to be the end of this stream. This has been Lobster's Office Hours. If you have any last second questions, you can ask very fast if you type quickly. Otherwise, the next scheduled Office Hours stream is on Monday at 2 p.m. Chicago time. And... Do I want to save this? Yeah.
03:03:03I will put that TSV up somewhere.
I'll just put it in the archive in case anybody really wants to keep digging through that.
I don't think there's anything to say.
All right.
DogacelCubing have a nice weekend
Tobironic Evening from Sweden
Well, thanks for tuning in and chatting about stuff and hanging out as I do the very glamorous work of rereading a couple of hundred comments to figure out how the software should work.
Tobironic Suppose I'm late to the party xd
Yeah.
Thanks, Doja Cell.
Hope you have a good one yourself.
And everybody else, take care.