yak: merging ui -> headline model -> typeid tokens -> clean up url generation

Streamed

Reviewing chamlis_’s PR that replaces CSS subgrid with flexbox for Safari compatibility. Refactoring URL generation in the codebase, cleaning up path/URL methods. Discussed story merging and how to handle merged story URLs. Considered Telebugs as a self-hosted error tracking solution. ERB’s spaghetti-based templating vs builders.

scratch


topics
  PRs
    subgrid https://github.com/lobsters/lobsters/pull/1555
  issues, two new grid-related
  vibecoding meta followup? https://lobste.rs/s/lkngrz/new_tag_vibecoding
  story merging https://github.com/lobsters/lobsters/issues/1456
  erb:
    steadily more frustrated by it generating invalid html/rss
    might be worth whatever the perf penalty is to switch to something correct
    will wait for herb-linter to decide
  considering https://telebugs.com/
  yak: merging ui -> headline model -> typeid tokens -> clean up url generation


title


post-stream
  did introducing Link.recently_linked_from_comments reduce % of merges?
    

Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.

Recording



01:58Good afternoon. It is Monday. This is the Lobster's Office Hour stream. I'm Peter. Thanks for joining. So let's see. This is, let's put the desktop up. There we go. This is Lobster's. And if it's not obvious from that, it's a not a super polished stream. pushcx Ask questions about the site or codebase anytime!
We just hang out, have an open door policy about Ask questions of the site or the base anytime. I'll try and throw that in chat so folks see it when they drop in. And then otherwise I work on the code base, which is over here. Yeah, so let's see. When there aren't questions about the site or meta discussion, I work on the code base. And my big thing is I try and make sure I do pull request review and issue review and then work on a little bit of features. Let's see what's going on this week. We've got pull request following up on some layout stuff, a couple small issues. Did I merge something over the weekend? No. All right. So Chambliss here who did the CSS grid change has figured out that our big issue with subgrid is that Safari doesn't like it, or as far as big issue is that it doesn't like subgrid. Okay.

03:52And that is exactly what I was thinking. All right. So stories are now articles. Okay. This looks reasonable. Chamos, if you're here, I love that you keep including these big screenshots. All right. She didn't mark it as a... Oh, she did mark it as a draft PR. But I'm going to peek anyways.

04:40Oh, there's a familiar calculation.

...48Alright. You know, for all of CSS's short properties, I'm surprised that width and height never got combined.

05:20Okay, so making a CSS variable is gonna allow her to just reuse that on the gutter and other stuff. So I think that's gonna be the big, Change here. Yeah. Knocking off sub grid.

...43That's a little clever. What's happening here? If it's not the first story, add a margin to the top. Okay. If it's not the first comment, add a little space to the top. Sure. I usually phrase these things as add a margin to the top on all of them and then negate it for the first one, but that's perfectly clear with the sibling selector. So I suppose that's nicer. Learn something every day. Yeah. Okay. So here's the gutter getting that logo. Here is the voters. They're going to be in the OK. Did she change comments to be Flexbox then? OK.

07:02that got a little complicated so if the gutter has just tilted in the selector it's got to be here right subsequent sibling i knew that

...35oh okay so this is this is colorizing the up arrow if you've upvoted it why does it

08:06Maybe I can answer this myself, actually.

...39TrueRound Hello!
All right, so if it's upvoted, it goes on the comment.

...59So this is the div class comment upvoted, and then there's the gutter.

09:12Where's the voters?

...23chamlis_ hiya
Hey, True Round, welcome. It says you're new to the stream, so I will mention this is Lobsters. TrueRound Lobsters?
I'm working on the CSS. Well, I am reviewing a PR on the CSS. pushcx https://lobste.rs
Which is just a bunch of unexciting staring at code and muttering to myself oh hey channel is i'm peeking at your your site or your PR yeah. So true round there's the link to the site. Alright, so. chamlis_ the big thing I've gotta just sit down and grind out is the JS changes for the DOM restructuring
We have. So I started responding, Genlis, because I saw that you marked it as a draft, but I had to peek at the CSS.

10:13I hope the JS isn't too bad. TrueRound no syntax highlighting ?
It's just kind of run down the selectors, and honestly, only the ones around upvoting might change. I'm a little surprised by the complexity of this one. pushcx https://push.cx/stream
True round you are. TrueRound !faq
That question is in the FAQs. If you go to... Here's a link to the Vim config. No, no bot. I can't get an API key. chamlis_ yeah, comments_gutter moved up a level which made some selectors longer
But there is syntax highlighting. If you note, these class names are in cursive. There's a little bit of other stuff. It's very minimal. Comments got removed up a level. Ah, okay. I think, okay.

11:37chamlis_ good shout on moving the class
I'm not looking this for you. I'm looking this for other people.

...58Yeah, it's one of those. I always get tunnel vision when I'm working on this stuff. Where alex4tmm make it work, then make it prettier :D
give me a permalink i'm so in the weeds of getting an individual thing working that i often don't stop to think hey can i just make that easier so if these selectors speaking of make it easier oh there was one thing on the so you missed it but i did say i love that you include these big screenshots thank you it makes it so much easier to understand what's happening This last one of splitting into meaningful separate commits, like, if you really want to do that because it's satisfying, knock yourself out. Sorry, I'm smooshing a gnat. I finally have nice weather, so I've had the windows open, which means I get gnats sometimes. chamlis_ no worries - I forgot to remove the page performance thing this time around on the screenshots
So, yeah, Alex, speaking of make it work and make it prettier, on this, like, split into meaningful separate commits, on this one... It is enough to make it work. You don't need to make beautiful semantic commits. I have a feeling you really enjoy that because you've done it on a few PRs, but I certainly don't demand it. I am happy with either squashing down the merge if the individual commits aren't important or leaving them as is. It is okay that a branch, you know, has nine commits in a weird partial state These kinds of descriptions are perfectly serviceable, especially on a branch where things don't have to be super detailed. chamlis_ cheers
So anyways, I just want to make sure that you don't feel like you have to do all that extra cleanup. And anyways, the page performance thing, don't worry about it. It doesn't matter. I know exactly why it's there and Yeah. It didn't catch my eye, because it's shown up as I've taken full-page screenshots. So anyways, I just wanted to keep skimming your draft, because I'm real curious what you've done.

14:26So are comments becoming two flex boxes? One for... The horizontal layout of like gutter voters and then main content and then main content has a vertical flex box for the byline and then the body. Because I saw that you took the grid declaration out, and so I was trying to like mentally predict what I was going to see here.

15:02chamlis_ each subtree is a horizontal flexbox, so the gutter is on the left spanning the whole thing, and the comment and its children are on the right
alex4tmm this complicated css gives me a mild headache just looking at it, give me tailwind LUL
stand up for 30 seconds because i can hear the robot vacuum is stuck on something in the other room nothing lines up in old houses and so it gets caught on particular doorways and lentils and things all right complicated css this is old css this is the old style of we'll just do semantics i just looked at it and right now so before the pr i want to say we had like 800 and 1804 lines of css which is not enough or i'm sorry Before this PR, we have something like 1,800 lines of CSS, and that's still not a lot. It's enough that we have a little bit of complexity creep in where components get reused in slightly surprising places, but not so much complexity that I think we would benefit from any kind of framework on CSS. alex4tmm yeah, makes sense
And if I was going to import one, I would be tempted to do something like pico-css that's one file and really small honestly i think i've been thinking a lot about css because chamlus has picked it up and been making a lot of improvements and i think if we get these layout improvements settled down and then i think maybe just There was a stream two months ago where I experimented with what if I just deleted all the font sizes and let the browser sort it out. The more I think about that, the more I like that. Honestly, the page looked better with a bigger default font size, which is what the browser shipped with. And then also... we do a bunch of things that are let your browser decide and some of them. So what did I do? Somewhere in here, dark? No, it's on settings. chamlis_ it'd be good to find something to find unused CSS as I'm sure some has accumulated. chromium can do it for a page but something that can sum it up across the whole site would be nice
Let's get the Rails server turned on and log into settings. So there's one of these things in here that reads like a technical note, but it is actually me preempting complaints. We added dark mode a couple of years ago. That was a contribution by Kevin C, who drops by streams occasionally. And one of the things I made sure to note here was it says system rather than default or change with the time. And in the announcement, I said, like literally the first sentence, lobsters now respects your UI's dark mode setting, which is to say, if you are seeing dark mode or light mode and you don't want to, the first thing to fix is your operating system in your browser. And since implementing it, what? Okay, so almost four years ago, Especially mobile OSes and macOS have gotten a lot better about light and dark mode. Linux is catching up. No idea about Windows because with Proton now, Linux plays games just fine, so I've stopped booting Windows. But the important thing was... A bunch of people I knew were going to get surprised by seeing something or wanting dark mode by default. And the first answer is configure your own environment. So that's me putting in a little microcopy of like, let's print that. Yeah. So Chambliss, to your point about finding unused CSS, I am sure some has crept in over the years. pushcx https://github.com/lobsters/lob…
I think if you want to do that, we have a sitemap. I don't know if you've seen this. I believe it lists all of our URLs, like the link to every story. Although, honestly, if you look at one story, you've almost... As long as you look at a merge... No, I guess merge stories and single stories are different. But... Yeah, honestly, if you look at, like... A couple of stories... As opposed to you would actually have to check all 100,000. You just want to see, like... one solo story, one merge story, one story with no comments. But then it's like, oh, this is becoming a test matrix because you want to see all of those things logged in and logged out. And then you want to see them on mobile and on desktop because we only have the one breakpoint.

20:51I guess the other value of the Does the, it's been so long since I've looked at site maps. Yeah. So I touched it three months ago, but the last substantive commit has gotta be years ago. A bomb, the bomb standard. Yeah, here we go. Five years ago. Almost. I think it lists other pages like about and stuff. So there's no styling of details. How does it work?

21:31Did I just miss something?

...54chamlis_ that right column of the comment is just block elements atop each other
Oh, yeah, of course. Yeah, that's going to handle text wrap correctly. I was just talking about getting too focused, and I'm thinking so much about how Flexbox and Grid worked that I forgot how the browser worked. Yay, simplification. Thank you for tidying these. All right, link A, story.

22:34chamlis_ it had to happen, stories are now <article>s inside their <li>s
merge icon yeah why did you add that article you said that they were and i had sort of assumed that it was going to be on the single view page but why on the list detail i don't see what did you have to make a i no i really can't imagine the need there chamlis_ so each merged story is a separate article
yeah github missed this so each merge story has a separate article okay so you're only talking about in the single detail Oh, no, I suppose you're reusing the style or reusing the layout so that list detail and single detail don't slip too far. Yeah, that makes a lot of sense to try and keep their structure the same.

23:52This.

24:00I think each comment So this is kind of jumping up and down layers of the stack.

...13But didn't I put a counter cache on comments for the number of replies?

...25Yeah, there's a reply count, so we know whether this has children.

...35GitHub. Okay.

...46Now I can't find it because GitHub is so inconsistent. All right. chamlis_ would you then have to add the tree line if the user replies?
All that thinking for one line of comment. We don't have next children.

25:10Would you then have to add? You're talking about like live inline when the user replies. The code does not do that, even though it sort of technically should and nobody has noticed it for 14 years. So I would say let's not add that behavior because it's moderately complex. I guess if you do it here, maybe I would have to think about what the CSS looked like last month instead of now, but maybe that did work. It's okay if it doesn't.

27:40chamlis_ I think the grid layout change made it do that, in that case
This is... Okay, the byline is a div. I guess in my head the byline is a span. I don't know why that's the case. So on hidden stories...

28:49Losing this inside... There's some things I have seen... I will just...

29:22I don't know why I'm typing a comment if you're watching, but whatever. Please take a look at story submission form on mobile. I noticed there's no left and right. What would that be, margin on the page?

30:28Anyways, some of the mobile stuff was touching the edges of the window. And I don't know. It just looks like it needs a little bit of margin, like text on a page. OK. Deleting a bunch of stuff. OK.

31:05Oh, nice. Why is this? Great catch. I didn't realize that wasn't a time element.

...25This must have been 2 so that I could debug or something. That's nice. Or...

...46What's different? We lost the space. chamlis_ I can put the space back in the title, but all the datetime examples didn't have one
Hm.

32:14All the date time examples didn't have one.

...23I'm not sure what you mean. Yeah, they do. This is percent C is the time zone, right? So that's the space before minus 500. ghost_user_1984 yeah it’s the tz
chamlis_ for the time element, all the datetime examples given on mdn didn't have a space
Because I don't need these open anymore. For all the date time examples, I would rather maintain our style. I think MDN might be doing a proper ISO 8601 date, where I think those things run together. chamlis_ well we can have the hover have the space and the datetime not have it so browsers can definitely parse it
I just find it a little more reasonable with the space in there or not reasonable readable. Woof. All right.

33:40Oh, you've already, I didn't expect to see all the JavaScript changes.

...56Oh, is it for, ah, it's for the, attribute you're saying not the title. chamlis_ right, datetime is for machines, title is on hover
Yeah. So if you want to just put it back in the title, that's fine by me. And then date time is machine readable. Ah, thank you. That's what I was confused by. Great. One of the formats described below, which, OK. So it's got, great.

35:00I wonder why they didn't just, they being the HTML gods, didn't just say ISO 8601 or some shorter versions. You know, I understand the less specific version, but I'm a little surprised they permit a space there, which is the way humans do it all the time, but all right. Did the cat come through on the mic? He just came in to say hello. Let's see if he goes up on his perch.

...44Anyway, it's really nice to use that time element. I do like getting more semantic markup into the site.

36:00OK. didn't hi buddy hello sir oh my big sir did you hear the robot did it scare you are you okay now okay so you pulled out these dizz

...34Shamless, you probably know better than I, but I think this div is closing this open div between 20 and 11.

...51chamlis_ I think it was, now it's closing a different div (comment_body)
So I think you probably want to delete this guy on 21 rather than reformat it. I'd have to dig through the git blame, but.

37:05comment body is there okay there's a white space change so now I get to go back up and reload and lose what I lose my place there isn't like a file list here right I can't just jump to the file I was at Diff didn't improve.

...51How is the gutter outside of the comment template? I'm really puzzled by this change.

38:13You're thinking of the... Yeah, when you get a chance, I'm going to need your changes to the comment partial and the thread partial explained because I'm really puzzled.

...50chamlis_ trying to think about how to word it, one sec
okay there's no rush it can even be like leave a comment when you're convenient all right and then this is heinous inline partial which i bit myself with last week i was thinking about that with the herb linter that was recently announced and i'm assuming it's going to be mad about that nonsense

39:30So you move the CSS stuff from the li to that vertical.

40:00Sure looks like, ah, labeled subgrid to labeled grid. Okay, that's why GitHub is highlighting all these.

41:08Okay.

42:06yeah i'm not now that i've seen the i know you're probably typing something else but now that i've seen this article change and how much churn it caused in the js i'm not sure what you're getting out of it from from merge stories like They were already structurally fine. Yeah, Kat, you got to check my tea. Make sure it's not for you. OK, buddy. Come on, boss. Settle down.

...57chamlis_ we need one div for the left column (gutter), one for the right column (body). the main comment has to go in the right column, but it doesn't render its own children. therefore, the _comment partial must be entirely contained within the body div or it would render unbalanced HTML on its own. therefore, the gutter has to get hoisted up a level into the _threads partial
Yeah, I'm not allowed to type. We need one div for the left column and one for the right. The main comment has to go in the right column, yeah, but it doesn't render its own children. True, that's thread's job. Therefore, the comment partial must be entirely contained within the body div or render unbalanced HTML on its own. The gutter has to get hoisted up level into the threads partial.

43:33Hmm. chamlis_ I mostly like the semanticality of having <article>, I can drop it and minimise the churn, no worries
I... Cat, you can't be there. Okay.

44:03Yeah, so the problem with... I think drop article, unless there is a big value to it, because I think that's causing most of your JS churn.

...24Yeah, so like the comment preview, when you preview a comment, it's going to be missing the upvoters, and I'm going to get bug reports about that. It seems.

45:42I'm trying to think through all of this performance hacky kind of stuff. What is actually happening here with our structure and our everything? Because it works now, so I'm really surprised by having to change that location.

46:14chamlis_ before it was handled by subgrid and making the gutter span multiple rows
chamlis_ can't remember how it was done before grid
So I'm going to roll back then. Let me check it out. Not bad. Come here.

47:16Yeah, same markup, no change.

...27chamlis_ maybe the preview endpoints should render a thread with one comment, rather than a comment?
All right. Maybe the previous one should render a thread with one comment.

...42There is so much happening, I'm not following why Something has to change.

...59So go in here, and we have the comments subtree. And then if we drop down to the other

48:37Maybe I should just drop in view component and we'll give up on performance.

49:01You know, now that solid cache is working, Oh, no, it's the big hassle with wanting to use solid cash is those relative date times.

...18All right. I am going to make the cat sad and stand up for a second, and I will be right back.

50:45All right, I'm back. gravione1 get rid of this goofy ahh font
So anyways, every time I think about adding the Russian doll caching, I think of the old lady who swallowed the fly where then I got to think more about dog piling and then the multiple ways that a comment can get rendered and that test matrix of are you logged in? Have you uploaded the comment?

51:16chamlis_ I checked out the old version: it uses floats to position the folder and upvotes, and a fixed margin on the children comments list to indent them
Yeah. Hey, grab a one. That's not how we work here. Got to be nicer than that. All right. Uses floats and a fixed margin on the children. Okay.

...46Oh, so it's floating them outside of the structure of the primary comment I see what you're saying so. On local let's jump into somebody that has some replies. Oh, I liked this article. So this guy here is.

52:21Wait, why is this a grid? What do I have checked out? This has the header, sure. Did we?

...55chamlis_ I'm on a58cdae7
This commit has the CSS grid. I did not back up enough. I sure thought I did. I grabbed this. You're on A88. Okay.

53:25Git UI. Speaking of very topical that I'm looking at an article about JJ, more and more I get tempted to dump Git out of my usual workflow because stuff like this of let me roll back and see what I was at a week or two ago is just so clunky. Okay.

54:30I think the float is only positioning it within the comment, though.

...41If we took this same layout and we made the comment div a flexbox, it could go comment folder, voters, chamlis_ if you drop the margin-left on the children ol.comments that should hopefully show what I'm talking about
etc and like this part with the parent line would have to get tweaks but yeah i don't see a reason for if you drop the margin left on children of ol comments okay children of ol comments so that must be

55:29Not spotting it because oil comments has a margin left, but it's children don't seem to automatically have one.

...55chamlis_ yes, sorry, on the ol itself
On the oil itself.

56:20chamlis_ I can hardcode that at the column width I suppose, I was subconsciously trying to avoid that
chamlis_ I'm not sure how the gutter spans the whole subtree with this old layout honestly
yeah i think i think just reuse your variable because you introduced the variable for the logo width and if you want to call it gutter width that's kind of what it is or you can call it logo width i don't really have a strong preference on name off the top of my head

...57chamlis_ ahh the tree lines are absolutely positioned
I don't think I have anything any more convincing to do on your big PR. I appreciate your taking this on.

57:31Yeah, the tree lines do clever things.

...44Two things that I haven't taken a look at. Oh, this was a cute bug that came in over the weekend. That is there a screenshot?

58:11Yeah. That someone was saying their story preview was redacted. And I thought this was a weird font rendering issue that it was rendering Unicode boxes.

...32Where's the, some image oh yeah once whoever decided that gifs should loop could please just die in a fire that is the most obnoxious default on the web so i had started writing like a whole thing about is it a corrupt font is it some kind of weird combination of opacity causing the font to not render in some engine then i realized i looked at the page and i was like boy that looks like ascii art it is ascii art they're not seeing redacted text so if you see this there's like two two what is that seven eight three two and then you go up here ah two two seven or eight three two okay that's you're just literally seeing ascii art so that bug will be Pretty straightforward for somebody. So just looking at the first five seconds of this, this is probably going to be a CSS-grade issue. Android 13.

01:00:57Cat count, whoa, that's a weird one. I wonder if this person is using a old version of Android browser, because they opened two bugs and didn't mention in either.

01:01:48This is sort of the opposite of what I would expect out of a grid. Seeing their browser do two weird things, I am suspicious.

01:02:04Close this. Frici considering its android 13, it might be an actually old browser πŸ€” although browsers do get updated regardless of OS release nowadays right ?
There was another issue I closed that was along the lines of, oh yeah, actually, two of these. Frici also Greetings
The first one was that someone reported a bug that there is the comment form twice. That's the merged UI. Oh, hey, Fridgey. I have no idea. I have no idea what version of Android is current.

...50Really? Did I type the operating system wrong? You're going to punish me for that.

01:03:02So the current version is 16. Okay. When did 13 come out? 22? It's not terribly old as OSs go. It's a little odd that they're on an older one. I don't know. I don't even want to think about the device matrix for Android for what operating systems control connect to which phones and what their popularity is. Yeah.

01:04:11Frici yeah its a messy matrix, site does look proper for me though but I am on a build of 15
So this other one, this is me talking about UI churn again, is very similar to the other one about story merging where because the UI changed, someone thought it's just broken because they didn't spot that the timestamp is now a link. And this is the kind of confusion and mild annoyance and disorientation I try and avoid by not changing core UI very much. All right. So.

...52Alrighty. So that's, that's the open issues. That's the open pull requests. Things are just hanging out there.

01:05:17see the other thing i have on my little to-do list is meta follow-up on the last what wednesday i introduced a new vibe coding tag for all of this use of ai slash llm assisted tools and It was more contentious than most tag additions in part because there is a very vocal contingent that is mad about the existence of these tools and doesn't want to see them discussed. It felt a lot like talking to the folks who think that all mentions of non free Libre open source software should be removed.

01:06:15Oh, there's people annoyed about the name of the tag and both the direction of it's not the right word because it actually should only mean a subset of what it seems to be meaning. And then also folks who don't like that I think it's a newer jargony term rather than something that we've settled down on let me say it different most of the time i try and be really conservative in naming things and this is one where the jargon is very young and so it got a bunch of folks who don't agree that that's the current meaning of it. And maybe it's not the current meaning of it. And I'm just seeing a subsystem or a subsection of it. So the circles I'm hanging out are using this term in this way. But the industry at large hasn't yet settled on it. So what I'm saying is, you know, maybe I am totally wrong here about what the industry is settling on. But at the same time, nobody had a better suggestion or Now there was one suggestion in there that it be AI dash usage, which is not our style for tags to put dashes in and is also, I don't know, it's better at getting at this development versus use split, but it seems very generic. Like one of the things I was trying to say is, Let's not have all of the, hey, I made a tool that has a chat bot in it kind of stuff. And having the tag named AI usage seems overbroad. Anyway, I left a couple of comments down in the thread after letting, so I did my usual thing where I let the comments run for a while where rather than, I guess really just, I don't want to dominate meta conversations or accidentally shut them down early. So I was kind of quiet on this one for after a couple of typo fix kind of things. And then I came back and responded and it just sort of, maybe we'll come up with a better term in a couple of weeks or a couple of months. but I wanted to just highlight this and say, hey, if there is anything that somebody wanted to say about this meta post or the conversation or the tag or best AI coding tools 2025. Let's grab this link in the meantime. So anyways, you can throw questions in the chat. And I'll give it a minute. But otherwise, if nobody wants to talk about anything there, I'll just move on because we had the meta conversation on the site.

01:10:01we can come back to it folk can ask questions anytime let's see i'm what an hour five in so good time to throw in my bumper that this is lobster's office hours any kind of questions about how awesome vibe coding is or the site in general the code base are totally welcome you can drop them in chat anytime even if i'm doing something else because when folks aren't asking questions about the site i work on the code base or i work on meta things this one was interesting to me had that message pack issue that we figured out in prod on the last stream hmm otherwise the the next thing on my to-do list for the stream because i didn't know the state of that pr for cleaning up from some of the story grid stuff whether i was going to be hacking that out or reviewing it or Just kibitzing.

01:11:30All right, so if I'm not headed into that, I can move right on to story merging. Sorry, I keep getting texts today. And they're all urgent stuff, planning a social thing.

...49Yes, I was starting the big database refactoring. I have a branch. It's been a week. It's a good thing I made that to-do list. I would never remember what I was doing without it. What's my branch? One for routes. What was I doing over on the routes?

01:12:27Oh, this was, yeah, I don't want to lose this. Maybe I should jump into routes. This was in progress to get things ready with, for that branch. Okay. All right. So I got to start there.

...59And let's bring this on. Not PR. Rebase onto master. Rebase interactive onto master. There we go. That gets me where I want to be. All right. pushcx Ask questions about the site or codebase anytime!
Let's repeat my chat. As long as I'm kind of getting into code, I am going to drop in my little thing. See, I am the chat bot. All right.

01:13:52kohlflorian just wanted to say thanks for your time and work on the site, big fan of lobste.rs - from a longtime lurker!
So this stuff was cleaned up. And then where did I put that to-do list? Into extras routes.

01:14:06Oh hey Cole Florian, welcome. Thanks for your kind words. One of the reasons I do these streams is just to show off that there is not a lot of exciting stuff to maintaining the site. It's just a lot of maintenance and small improvements and one step at a time and that's all there is. All right, comments path. Yeah, okay. This is coming back to me. It's been week or something it's been a busy week so all right so this one becomes this new method

01:15:04right so comments path was badly named is the route with the title on it this is some especially exciting maintenance work because this is just rails does routing at the wrong layer And so we have to make a helper. And someone had a nice talk with this helper. And so I stole it. Story title path.

...57Yeah. And again.

01:16:10This feels a little bad because at this point I am in the view. So this feels like it could be a helper or just call the method directly, but it's this repetition I want to get rid of. So yeah, we're just going to do that.

...45How many fixes we got?

...51Mine, 4 out of 55. We got a few fixes.

01:17:24as soon as I put the correct edit in.

...33It's odd to me that some of these are already updated. I don't know if these are going to get tweaked. So like this, I want it to have the anchor for the merged stories.

01:18:23So do I want to even keep this one? I guess what I want most, when you click on these, So it's a little bit odd, especially for merge stories, because when you see the URL in the browser, do I have a merge story handy? No, probably not. I don't remember the last merge story off the top of my head.

01:19:34So like here, this is the title path, the title URL. And on a merged story, it feels like that should be linking the top level story plus an anchor so that when you look at the, yeah, yeah, all right, I already deleted it.

01:20:03When you look at the single detail, we do that target highlighting, and then it could be covered. Is this crap?

...31This does read like crap. Slop, I guess is the term.

...46What is this site?

...52I'm getting distracted by a moderation task. Come here. Is there any name on this site? No.

01:21:10This is here's what people seem to love about this is slop.

...20We had other stuff from this. No. All right. I'm all right. Yoink. This is somebody getting yeeted. This is just slop. Is there anything in the comments worth keeping?

...42Is this person saying that they are the author? No. This is the of Odin. Does this person have, they don't have a GitHub link.

01:22:30Okay, this is just someone saying they have conclusions.

...43I'm sorry to lose an actual technical comment. All right.

01:23:12So I have yeeted this story and the domain. Because this is just, who is this person? They're not an actual user, right?

...35Oh, look, they just joined last week and they created their first repository. This is, I don't think this is targeted at us, especially, but this is just annoying. chamlis_ struggling to even see their endgame there
I was, I was talking to a friend of a friend the other day and she's single and she was talking about, you know, the experience of dating on apps. And she was like, yeah, you know, I'm having this really good conversation with a guy and. going great so i feel great about it and if he's not a bot i hope to have a nice date this weekend ah what a weird future we live in that that's just like oh yeah right you know everything is fine but maybe it's about the end game there is i think it's probably just a to see if you could especially the fact that it was about a New niche programming language says a person was involved right that they had to have prompted it as opposed to. it's just responding to everything.

01:24:54I don't know.

01:25:17That's interesting. Was this only submitted to lobsters?

...29I don't remember. Does Google still support advanced searches?

...39No, clearly not. What if I put on the

01:26:06yeah nothing there okay so this was only submitted to lobsters that's weird

...35I am going to ask that submitter about it.

01:27:04Is there? You can look on the dark web. Which is to say, the site the Nazis and child pornographers hang out on. Yeah. And then search doesn't work.

...37Yeah, it's just finding crap from some user rather than

01:28:23Back to routes. Lost my place a little. So when we link to merge stories, it would be nice if

...56You saw that URL with a target so we could do the kind of highlighting we do when we link to individual comments. And I think I'm just going to leave this as is because when that's ready, it's either going to be a tweak to this method or a tweak to the redirect or both.

01:29:42So that's fine for now. This is story title path. That was wrong, rounds. Did I get the last one wrong too? No.

01:30:30Speaking of spam bots, there goes one. Oh, false alarm. That's fine.

01:31:01let me look at it oh this is just the generic comments path okay so there's the slash comments page yeah all right what do we got next oh now we're working through heinous inline partials

...35I got lucky that I landed on the partial first.

...48I need to make so many improvements to Moderator UI. That's actually drifting up my to-do list.

01:32:33Let's see this one.

01:33:04God on the rails.

...51This one's kind of becoming shotgun debugging and I'm starting to worry about it as, you know, even if I never typo, which is a thing that happens sometimes actually, I'm touching so much stuff that it's hard to feel any confidence in it. And I'm telling myself that I am cleaning up a bad pattern Let's see, speaking of typos.

01:34:28But even so, this diff is getting long. It's long enough that it just, you know, it's a code smell on its own.

...44Oh, story. Oh, it's original story from when you're suggesting, sure.

01:35:02Maybe I should make a macro.

...08How many rooms? 20 left. OK, I can make a macro.

...38And the macro doesn't work. Oh, it helps if I call it. Oh. I don't know what the fuck that macro is and where it pulled that from, but that's a lot.

01:36:02And every fucking... period hits the undo point. And so this is a big chunk of an old query that we used to have before the common table expression stuff. So wait. There we go. That's what I expected. Oh, I know what I did. So I typed at at, which runs the last macro, and I didn't do at queue the first time. Story has a path method. Sure shouldn't. But there's a story.url too.

01:37:04Oh no, this is comment path. Let's bring this down here. This one, I'm going to delete it in a later step. So I'm just going to leave that alone.

...49That's slash comments I want to be editing down here.

01:38:04What are we mad about?

...12There we go. Now the usual thing of the Vim macro is very slightly wrong, but it doesn't seem worth rerecording.

...27Except now it does. All right.

01:39:16okay there's all of those only what 45 48 something up there all right so we got a short id url short id path in case anybody thinks that moderating a site is glamorous. This is it in a nutshell.

...57Just

01:40:09You know that.

...15I don't think we ever. Like these short links where they don't include the title. I don't know that we benefit from exposing those like obviously I have to maintain them forever but. I don't think they're intentionally there anymore.

...53These are the comment ones.

01:41:07And then I guess the other thing I'm wondering of is of the places that, of the places that use them, are any worth keeping? Probably not. It's a little more informative to be able to have the title in the URL.

01:42:22And if it's going to be the canonical link, it wants to have the title too.

...37It's about the only place that should probably be URL instead of path. I mean, maybe there's an email link. julianwgs Good evening :)
Actually, that's... Why have I not been getting emails?

...55Oh, hey, Julian. Welcome back. Yeah, so views, emails.

01:43:12Okay, it just says comment URL. Those are all broken right now.

...33This is comment that's going to need the exact same update in a minute. These are fine. Well, Julian, I am doing some very exciting refactor. All right.

01:44:05Wonder if I'm gonna see that in my test failures. God, it never ends. How many of these are there? Line 15 and 23, all right, home stretch.

...23julianwgs btw I ordered the book on Tokyo's urban design from you recommendation :)
That's not what I want. This is, these are all comment links in this one, aren't they? In this test, yeah, all right. pushcx https://www.alibris.com/Emergen…
oh yeah you know thank you for mentioning that because i loaned that to a friend like three weeks ago and i think it is time that i hassle her for my book back what is emergent tokyo that's the name thank you so i'm reaching and putting it on my my list so for anybody who doesn't know That is this lovely book, just to throw a link in the chat, that is both very beautiful and detailed. I think one of the things that gets me is if you look at the cover, a lot of the book is like these cutaway images of buildings and neighborhoods. One of the things that is really satisfying about this book is these are not representative cutaways. These are what you would actually see if you cut away those buildings. If you look closely between the photos and the cutaways, you will see that every one of them is accurate. You know, I don't know about the people standing there but The tables, the chairs, the doors, they are not. This is a representative seven foot wide bar. julianwgs Sorry for hijacking the stream :D
This is the exact seven foot wide bar that is in Tokyo in this exact spot.

01:46:16No, no. I am doing some really unexciting refactoring. I am always happy to talk about fun urban design stuff. So this guy is the... Can I call this from a test? Probably not. That's why this method has to be here.

01:47:11Wait a minute, that's not a valid edit. What did I do? Oh, I deleted the part of it.

...22That's what I want.

...40Let's comment, come back for you. That's a story.

...56What is this? You mail a new activity. Why does it say vote? Oh, it's an instruction. It's not... I was thinking it was like, wait a minute. It doesn't... The site doesn't email you that people have voted on your comments. That would be awful. It's saying you can go vote. So... Should this be the short ID URL or the... Hmm...

01:48:40think because people we have that 72 column wrap in email i think this is a place where it's okay to use the short id url all right so that's what the second place maybe that i've actually kept the old one all right that's for comments so we're leaving it alone Mastodon. Okay, one more place.

01:49:30That's fine. This needs parens.

...47Yeah, I always know when I land in extras in script that I'm going to see more complicated code because it's all the glue stuff.

01:50:04Yeah, I don't know what they're going to do with it. So I'm going to go ahead and say that. And that's all of those. All right. That was short ID URL. Did I check short ID path as well? Yes. Okay. So I got both of them. Let's take a look at that diff. I only changed 900 things. I think I'm just going to squash this into the WIP commit, but it would be nice to hit some kind of checkpoint, right? As opposed to an infinitely longer shotgun patch.

01:51:17Seeing 20 file names in the git status is just, what am I doing?

...37I was probably going to end up squashing all this way, so not worrying too much about that message. All right. And there's the question. Yeah.

01:52:00Let's do the comment stuff before I try and answer that question though. All right. So what am I looking for? I am looking for any mention of a word ID URL. And I wish I could say, this is one of those limitations of regexes. I wish I could say that doesn't start story underscore short ID. And I can have a, I guess I could say at least not an underscore here. That should get all of them-ish. No, this is. Finding me every underscore.

...58All right, that's better.

01:53:20julianwgs Could you solve the MariaDB search for hidden character issue?
I don't know what the search for hidden character issue is. Did you just report it?

...37Somebody responded here.

01:54:02julianwgs No, on the last stream we searched for those "hidden" characters inserted by ChatGPT
Julian, on the last stream we searched for those. julianwgs and it didnt work with MariaDB
Oh. I didn't have any more ideas for how to get the character encoding right. Because clearly I wasn't able to figure out exactly what syntax it wanted. I don't have any more bright ideas. We exhausted all of mine. If you have some, I'm happy to try them. Otherwise, that's all I got.

...55julianwgs Unfortunately not, but it wouldve been so interesting to know :D
Yeah, I'm curious and it's one of those things I'm definitely going to have to come back to, but Maybe when I have some more ideas or I'm feeling a little fresher, I don't know.

01:55:21Yeah, so now that idea of having this be called like Well, title URL seems fine. Title path. Because then you know it's got to be a story or it's got to be a headline. All right. These. See, this is the nitpickiest thing. But I really want to have default URL options at the top, but I also want to sort it alphabetically.

01:56:09We'll call this a section.

...49Let's find the comment.

...56I didn't name that. OK, so there's these. And then there's these already showed up because they go to the comments controller.

01:57:24Show short ID. That is a... Only this one has that name?

...40Oh, it's an action. So if you show the short ID, but you tag JSON on the end, you get this different view. All right, let's go check that out. That's a little odd.

...59okay it's just a json endpoint that all right that could be one endpoint or with respond to but

01:58:47Through a minute refactor and continues.

...55So we have a comment short ID path. And I want to just leave that there.

01:59:09I think most places, so this is sort of a funny bit of design, but. Most people don't notice that we have these slash C URLs for comments because when you click on a comment link like this, you get redirected to the comment and then you see it and you copy what's up in the URL bar. And that becomes a long URL that is, you know, it's this URL, the story short ID path with an anchor for the comment on the end. That's all that this redirect from short idea method does. How'd I get that over there?

...59So there's that. anchor coming in. And so people comment that instead of the short ones, which is fine.

02:00:13Where's my elbow if you heard that pop? Too much weightlifting, bruh. I'm getting shredded.

...28And I guess what I'm wondering is whether I should keep exposing them. I lean towards not.

02:01:03So really...

...10Speaking of n plus ones, this feels like I'm writing one right now. Because I have to go look up the story. Do I always want the title on there? Maybe not for mail new activity when we didn't get mastered on that time. That's all right. We don't. I was going to say tweet and then I was going to say skeet. Don't toot out. I am such a grown up. Don't do those for the individual comments. All right.

02:02:07i'm gonna pick up the cat and carry him to his nap time because he is the king of the household this is a totally normal thing to do that i have to put him down for a nap like he's a toddler excuse me one sec come here buddy oh baby come here

02:04:30so my mom has a cat who is the the sweetest shyest baby who one of those cats that hides from guests and such and the odd thing about her is that when she goes to the vet she's kind of a demon there is just something about the vet she doesn't like and in one of the vet notes my mom's cat was described described as fractious which is such a great word but now every time one of the cats anywhere starts acting up we always call them fractious so he was getting fractious in my lap and just from looking at the clock i know it is because he is overdue on his nap because his royal highness has a very fixed schedule And we cater to him because we are enormous suckers.

02:05:44Say this.

...54I kind of want to say this.

02:06:11But I can't actually pass a nil. That's going to blow up a route, isn't it?

...40So I could say this story is just called short ID URL. God.

...56I was just looking at its. Story short ID.

02:07:08Why am I not seeing it in the routes table?

...18Oh, because it has to be suffixed with the word path.

...29So it's... Didn't I? Wait. Copy. Paste. It helps if I don't typo. Okay, what are we... Now I'm missing something obvious.

...55Just wanted to play with the title attribute. Now the name doesn't exist. Story short ID. And that should, since that's the name of the route, that should generate these underscore URL and underscore path methods.

02:08:28That's, oh boy, terminals.

...43That's not usable.

...52that's not usable in a different way that i can maybe use it so yeah there is one that is named story short id so why when i call story short id path with my story do i get an exception undefined methods What if I just said comments path? Well, let's get rid of all this.

02:09:32What do you say you do here, routes helper?

...53Okay. Is it trying to tell that i've broken my routes entirely because i have a typo except rails routes on the command line runs inconsistent state no i don't have a root url do i have a root path see why does it work here on my route object

02:10:40It's not on that. All right, so I can get that. And I can optionally pass a title. But if this becomes a nil, oh, it's actually totally fine with it. And I went down this whole rabbit hole for nothing. I am a professional today. I guess that's why we check these things. I'm trying to find a moral.

02:11:28What are we mad about for syntax?

...41Doesn't know if that's a block, I guess. All right, can I drop that? Yes, OK. You know, it's funny. I've been thinking a bunch about Ruby method definition. so there's positional arguments like comment here there's keyword arguments like title here and then there or wait that's a i'm sorry there's named arguments like title here and then there's keyword arguments like the other title here and more and more i'm preferring everything is keyword arguments always and i wonder like i'm okay if an argument a method has exactly one positional argument but as soon as it has two i want all of them to be keyword arguments ideally mandatory So this code-based style is definitely this. I don't know. One of these decades I'm going to spend five years writing my own programming language, I guess, is the concern here. No. I'll write my own web framework first. I am aware that's not working up the stack for maximum. cantankerous not invented here but the more i spend annoyed at rails the more i want to write a web framework so that one might be first all right

02:14:32julianwgs or try Python :D You can enforce positional and key word arguments
julianwgs with * and /
know why vim does this sometimes where it targets the wrong buffer to load things into refuse to learn so this one becomes yeah i've seen that in python it's been forever since i've done python professionally but and sometimes i wonder if julianwgs its relatively new
Being more rigorous and less flexible and one way about this is trying to turn Ruby into Python. I don't know. Yeah, yeah, no, I'm saying it wrong. Those have come into the language since I've spent any time in it. I have read a blog post about it, so it is not even something I've used. I've just been like, oh, that's nice.

02:15:46All right, so if this one is going to be

02:16:28I guess the question here is what's the canonical link for a comment? And so we give them the short IDs.

02:17:42What are we mad about?

...52Rails served the error, but with the RSS heading, so Firefox is just, that's great.

02:18:10Let's look at it here. No method error in comments index. Undefined method comments URL for instance of story. Because it's still calling comment.url. Okay, so that's fine. I'm just doing this out of order. Oh, that's a lineup.

02:19:04It was equivalent.

...36no okay have i not have i just not deleted it and that's why it's not filling up in the diff yeah yeah so that is just me we were doing the same url two different ways okay let's delete that

02:20:00Let's delete. That's interesting. So comment.url was the story title, OK. And path is same thing. All right. Now, that's a field, so that's fine. That's fine. All right, so I did clean them up while close. Let's just do the get way.

...43Yeah, comments path, comments URL. Good.

02:21:02I'm gonna do that same pattern of shoving things into the hash.

...36I guess I want to maintain that.

02:22:03Oh, I never did go back and run that curl again, did I? Newer.

...19The RSS is wanting to render the comment, isn't it?

...29RSS builder line 18.

...38Oh, no, that's actually just a bug or something I hadn't fixed up yet.

...55OK. So now each item has a link and a GUID. and a comments link, and they are all the same, even though I was expressing that two different ways before.

02:23:16There was a... So the Ruby widget team uses lobsters as a part of their benchmark suite, and they recently updated

...37Where is it? pushcx https://github.com/Shopify/yjit…
They recently pulled in a new thing. And so there's a lot of kibitzing about what's changed. And he said, oh, things got slower. And one of the comments that I think of every time I'm in one of these builders, the big regression is that the builder is much slower than the old one. But I guess that's expected. You can't beat ERB with Ruby DSLs. And I wasn't going to get into nitpicking him on his repo, but this is, you can't beat ERB for speed. The problem is we were not outputting valid feeds. And so, I don't really care how fast ERB is if it's wrong. Because first you have to beat it for correctness, and then you have to beat it for speed. And everything beats ERB for correctness.

02:25:14And I have been trying to, I have looked at view component and Hanami and the dry RB thing and other Ruby front end options. And I've been kind of dismayed that they either take a performance hit or have no performance numbers at all. I've said, like, oh yeah, I'm willing to take a 15% haircut, but the more I think about correctness and chase around stuff like, ah, we missed a slash div, like we saw earlier on this stream, and do these open divs and close divs line up? Well, who knows? It's ERB. julianwgs I am leaving. See ya!
I'm starting to come around to, I almost don't care how much slower they are than ERB. because we'll actually put out valid HTML. I'll see you, Julian. Thanks for dropping in. And I think... I think I'm gonna give it until that Herb tool lands. So that's a new... So Herb was released by Marco someone Roth, I think. does all the like hot wire kind of stuff for rails and it parses erb and it promises the possibility of linting and doing useful things so he's got the the whole parser working and i'm curious about he plans a herb linter and i guess i'm willing to give it until that shows up And then I guess another couple of months for it to mature a little bit if that doesn't help solve the problems with. yeah you're be.

02:28:01There is also the automatic rejoinder for that ERB comment of If you don't care that it's not giving correct output, I bet I could blow it away in performance. Because I could make my own front-end tool that just threw your shit away and returned a string. And it wouldn't be valid HTML, and it wouldn't be correct, but it would be faster than ERB. And I am aware that Byroot is not actually making that reductive an argument that speed Trump's performance, but it is sort of implicit in his comment. And I have seen the whole correctness for speed debate so many times over the decades. All right.

02:29:29I see the typo.

...44I didn't see that one, though. Oh, man. I guess I'm getting tired. We are at 2 and 1 half hours. I usually stream for around 3. If I can hit a stopping point, I may end this stream a little early. I'm going to make. dumb typos that I'm going to have to chase all over the codebase or chase 500s in prod. Oh, chasing 500s in prod. That's something I wanted to mention. What was that called?

02:30:26Maybe it's not IO. There's a TV show? There we go.

...40This. Yeah. So what's your actual website though? Telebugs.com. All right. It's not a bad domain. I assumed it would have to be .io or .app. So Telebugs is a web UI. Is there a screenshot of the actual? Yeah, so it is a web UI for production exceptions along the lines of Sentry and other options, except the author is offering it for a one-time price, and then it's a little Rails app that comes in a Docker and then it has a nice UI on errors.

02:31:38I don't know. I'm seriously considering buying a copy of this for the email notification improvement and just clumping up reports. Part of the reason is when I manage to break a popular page, I get hundreds of emails because I get one per. Having stuff together and being able to click Resolve, I mean, it sort of makes a new inbox for me. But it looks very nice. And it's a one-time fee rather than an indefinite subscription like Sentry or Scout or something. Oh, I didn't grab that. Come here.

02:32:36Home stretch.

...51rndm_dev doesnt sentry allow self-hosted? not sure what limitations it has
Does Sentry allow? I thought Sentry was just a commercial SaaS.

02:33:04OK. I don't have a DNS level blocker. Is it just this one? Sentry.io in another browser. rndm_dev https://develop.sentry.dev/self…
No, it looks like Sentry is down. So shame it's not. Twisted develop.sentry. Oh, hey, that's promising.

...59What does the self-hosted version cost? Do you know? Because I can't load that pricing page. I guess I could grab it to archive.com or org.

02:34:21I don't want to say Sentry Pricing is, I mean, it's a serious business tool and they charge like it. Ah.

...37Right.

...43So one of the other things I was wondering about is the possibility of if I got really strict on the filter parameter logging to make sure that there aren't any PII or cookies or anything logged, then I could make the bug tracker just visible so people can see production 500s. And one of the nice things about Telebugs was also that it's pay once, where paying 26 bucks a month indefinitely is pretty steep for a hobby project. Honestly, if I'm going to show off bugs publicly, I don't even want to have a user. rndm_dev they claim "without paying anything". but I might be misreading what this actually accomplishes.
if i've downloaded their source and it's a small thing by an indie dev it'd be easy for me to hack out the login requirement to start browsing bugs oh yeah so 5k errors a month on the developer plan yeah the so i'm i'm betting it's going to be on the developer plan and this 5k errors if I break a popular page like the homepage or slash comments slash newest or a story page that somebody else's link to we hit 5k errors in a couple of minutes. And then the whole thing would become useless for a month. Or I guess the rest of the month.

02:36:29yeah. So I don't think sentry is appropriate. See like most months it's zero. We have zero errors or we have like five errors. And then a couple of times a year, I break an important link.

02:37:23Let's be consistent with that. Deleted that already. All right. So there's short ID URL done.

...42And then there are no hits for comment dot short ID path. But they're going to be a bunch for comment for path and URL. And these are going to be Because anything, yeah, so let's make sure it's actually a .path.

02:38:12How many did you find? Oh, only 23. All right. I expected, honestly, I expected more like 230. Because I figured there would be a lot of false positives on a common word like this. All right. This is a few, so this can just become a... Again, the same. This is heinous inline partial. Let me just reload. There we go. so for anybody who hasn't seen heinous inline partial it's in the stream archive but we have copied some partials into other partials or other templates because well rails is slow at rendering partials and it's actually not the not that erb is so slow it's that looking up which partial to render is slow because The render method has a very expressive interface, and that means it has to sort of take your string and try a whole bunch of different file paths.

02:40:26Every time I make a typo, I'm like, the odds that I didn't make 10 other typos that I haven't noticed goes up. And then I'm like, well, the way to find those is just production 500. Because we don't have total test coverage. Nor would that really be worth our limited developer time. But I don't love production 500s. If it's not editable, why would we redirect to a redirect?

02:41:24I did it again. So I've been playing with the Norman layout, and it feels like some of these typos sneaking in are from that.

...43Rounds. What have I been typing that starts R-O-U-N that I keep making that?

...56I guess.

02:42:09Especially when I see these as sending redirects, like it is redirecting to a route I know will redirect, so let's just go ahead and send them directly there. Shave off a couple milliseconds and a hit.

...44At some point here, I have to run the texts again.

02:43:23It seems a little odd that I've got a comment target path, but nothing has prompted me to create a comment target URL.

...39These are all unrelated. Unrelated. OK, there's all the comment paths.

...56Where did I just put that? So I have mentioned that as I get tired, it is harder to code while I'm keeping up this stream of consciousness. And you can just see me doing it right here where I am just inserting bugs and fairly obvious ones. because I'm starting to get tired after a couple hours of talking. Yeah, usually stream goes another 15 or so minutes, so maybe I can do the URL thing without introducing more bugs than I'm fixing. That's... What happened here? Why does threads... Did I not... I think I didn't reload the partial again. What line of that? 157? Story comments path. OK, so that's just wrong. We've still got comments path. We've still got. So this becomes the story title path.

02:45:54Yeah. And then if I do that, this one should automatically. Yeah. So that's automatically reloaded. Great. Let's look at that diff again. That looks correct now.

02:46:33Comment.url. We're going to get a lot of extra hits for this one, right? Because story has a URL method, and that's not going anywhere. And that is 117. Yeah. Well, we can chop off anything that has stuff after URL.

02:47:00I only got six.

...12Hmm. Message has a URL.

...29Do you have a path method? No. I'm going to have that memorized. Do all of you? No. All right. Yeah, so this yak has been Merging UI, it wants to introduce a headline model, wants to introduce type ID tokens, wants to clean up URL generation. Yeah, I am four levels deep.

02:48:33Do I want to just do this while I'm looking at it? No, I don't want to do two of these at a time. They're confusing enough. This is a story form, so it's going to be all stories. It's a story view, so that's all stories. Similar is story, story, story, story. I could see the story in there. Okay, those are stories. Here we go, there's one.

02:49:33Home index, that's stories. JavaScript I don't have to touch.

...53Stories controller wouldn't be linking to comments. right this linking comments is a different thing model domain you know i should actually at some point

02:50:37So there's a, this linking comments is a thing that happens just on the story submission page where it looks at recent comments. And if the user is attempting to submit a URL that has just been mentioned in a comment, we render that and say like, Hey, Why don't you just go participate in that discussion instead of submitting this link? And it stops some of the merges. It is kind of a gentle nudge, but it should probably become less gentle with the story merging work. In which case, if I'm going to do that, let's go form errors. Form errors.

02:53:06story story story zipping through these because they're all stories huh wait you can call root url was that what i was getting wrong about routes

...43Yes, it is. Okay. What's the include routes, URL helpers. Did I do that? Did I mix it in? Oh yeah.

02:54:09Put that on my to-do list. Thank you.

...38Story, brick man, migrations, story, comment spec. This is just for links, though. Yeah. Search. Yeah.

02:55:19Links. These are.

...27But one or two of these are going to be comment, right? Yeah, here we go.

...48Yeah, there we go. Finally needed it. Target URL.

02:56:19Let's replace this long link. Hey.

02:57:48That's just a failed edit. I should have caught that the first time.

02:58:19These are all stories. So I'm going to skip fake data. Mastodon doesn't link to comments. Homestretch.

...34Web mentions might link to a comment. But I guess it doesn't. Wrapped all the way around. Okay, there's all the comment URLs. All right, so I'm going to bring this stream to a close by running the specs and crying at how many red Fs there are, but that's a good stopping point.

02:59:15All right, anybody want to gamble on how many Fs? I'm going to guess 30. So this has been the Lobster's Office Hours stream. I'm Peter, the next scheduled stream will be Monday afternoon. And 33, not so far off. All right, and I guess I have something to start with next week, or I'm sorry, what am I saying? It's Monday, the next stream is gonna be Thursday morning. Chicago time, not Monday. Ugh. More frazzled than I thought. I should go cook some dinner for friends and hang out. Alrighty. rndm_dev cya
Well, have a good one, folks. Take care. See you Thursday.